【系统架构设计】操作系统(一)

news/2024/9/1 10:36:44 标签: 系统架构, 操作系统

操作系统(一)

  • 操作系统的类型和结构
  • 操作系统基本原理
    • 进程管理
      • 进程三态模型
      • 挂起状态
      • 进程互斥 / 进程同步
      • 前趋图
      • 进程调度
      • 死锁
    • 存储管理
    • 设备管理
    • 文件管理
    • 作业管理

操作系统原理的关键在于“一个观点、两条线索”:一个观点是以资源管理的观点来定义操作系统;两条线索是指操作系统如何管理计算机各类资源和控制程序的执行

操作系统的类型和结构

按照操作系统的功能划分,操作系统的基本类型有:

从资源管理的角度看,操作系统主要是对以下部分进行管理:

  • 处理器
  • 存储器
  • 文件
  • 设备
  • 作业

操作系统在计算机和用户之间起接口的作用。操作系统为用户提供的接口表现形式一般为:命令、菜单、窗口之类的操作系统为应用程序提供的接口为API操作系统与硬件/软件的关系如图2-1所示。
在这里插入图片描述

操作系统基本原理

操作系统的功能主要是进行以下工作:

  • 处理机管理(进程管理)
  • 存储管理
  • 设备管理
  • 文件管理
  • 作业管理

进程管理

处理机是计算机系统的核心资源,由于计算机速度越来越快,处理机的充分利用有利于系统效率的大大提高;处理机管理是整个操作系统的重心所在,其管理的好坏直接影响整个系统的运行效率;而且操作系统中并发活动的管理和控制是处理机管理下实现的,处理机管理集中了操作系统中最复杂的部分,它的设计好坏关系到整个系统的成败。

为了动态看待操作系统以进程作为独立运行的基本单位,以进程作为分配资源的基本单位。因此,处理机管理也被称为进程管理。其功能主要是组织和协调用户对处理机的争夺使用,把处理机分配给进程,对进程进行管理和控制,最大限度发挥处理机的作用

进程三态模型

由进程运行的间断性,决定进程至少具有以下三种状态:

  • 就绪状态:当进程已分配了除CPU以外所有必要的资源后,只要能再获得处理机,便能立即执行;
  • 执行状态:进程已获得处理机,其程序正在执行;
  • 阻塞状态:进程因发生某事件(如请求、I/O、申请缓冲空间等)而暂时执行时的状态,也就是进程执行时受到阻塞。有时也称为“等待”状态、“睡眠”状态。

在这里插入图片描述

挂起状态

在不少系统中,进程只有如图2-2 的三种状态,但在另一些系统中,又增加了一些新的状态,其中最重要的就是挂起状态。引入挂起状态的原因是:

  • 对换需要。为了缓和内存紧张的情况,而将内存中处于阻塞状态的进程换至外存上,使进程又处于一种有别于阻塞状态的新状态。因为即使该进程所期待的事件发生了,该进程仍不具备执行条件而不能进入就绪队列,称这种状态为挂起状态。
  • 终端用户的请求。当终端用户在自己的程序运行期间,发现有可疑问题时,往往希望使自己的进程暂停下来。也就是说,使正在执行的进程暂停执行,若是就绪进程,则不接受调度以便研究其执行情况或对程序进行修改。把这种静止状态也称为挂起状态。
  • 父进程请求。父进程常希望挂起自己的子进程,以便考查和修改子进程,或者协调各子进程间的活动。
  • 负荷调节的需要。当实时系统中工作负荷较重,有可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统正常运行。
  • 操作系统的需要操作系统希望挂起某些进程,以便检查运行中资源的使用情况及进行记账。

在这里插入图片描述

ps: 里面静止阻塞->静止就绪 要注意,此时阻塞条件与挂起条件无关,即使满足了阻塞条件,但依旧无法运行,状态不会变成活跃阻塞,而会变成 静止就绪。

进程互斥 / 进程同步

  • 临界资源 : 一次仅允许一个进程使用的资源;

  • 临界区:一个进程访问临界资源的那段程序代码,也就是互斥锁作用域得那段代码

  • 进程互斥:一组并发进程中,临界资源在某一时刻只被一个进程访问

  • 进程同步:进程之间是异步执行的,但是各进程按照一定的制约顺序和速度执行

ps: 互斥是资源的竞争关系,同步是进程间的协作关系

因此,必须有专门的同步机构来协调这2组关系。在操作系统中,信号量是一个整数,当信号量大于等于0时,表示可供并发进程使用的资源实体数;当信号量小于0时,表示正在等待使用临界区的进程数

对信号量只能施加特殊的操作:P操作 和V操作。两者都是不可分割的原子操作,也称为原语。因此,P原语和V原语执行期间不允许中断发生。P操作的过程是将信号量-1,而V操作的过程是将信号量+1
在这里插入图片描述

  • 针对进程互斥,设信号量mutex 用于互斥的信号量,初值为1,该信号量为公用信号量,表示没有并发进程使用该临界区,于是各并发进程的临界区可改写成下列形式的代码段:
    在这里插入图片描述

  • 针对进程同步,需要引入私用信号量私用信号量只与制约进程和被制约进程有关,而不是与整组并发进程相关。经典同步问题的例子“生产者-消费者”问题,这要求存后再取,取后再存,即有两个制约关系,为此,需要2个信号量,表示缓冲区中的空单元数和非空单元数,记为Bufempty 和 Buffull ,它们的初始值分别为 1 和 0 ,相应的程序段形式如下:
    -

前趋图

前趋图 是一个由结点和有向边构成的有向无循环图,用于表现事务间先后顺序的制约关系。

在这里插入图片描述
假设一条指令由Ai 、Bi 、 Ci 三步组成,则图中A1 没有前趋结点,称为开始结点,它不受任何制约,可以直接执行;而B1 和A2 只有在A1 执行完成后才可以开始,而B2必须在B1 和A2完成后才可以开始;C3没有后继结点,称为终止结点

在前趋图中,执行先后顺序的制约关系可分为2种:直接制约 和间接制约

  • 直接制约: 指一个操作中,多个步骤之间的制约关系,也可以说是“同步的进程之间的制约关系”。如图2-4 中,A1 、B1、C1 直接制约。
  • 间接制约:指多个操作之间相同步骤之间的制约关系,也可以说是“互斥的进程之间的制约关系”,如图2-4中,A1、A2、A3 间接制约。

进程调度

进程调度即处理器调度(又称为上下文转换),主要功能是让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行

进程调度的方式有2类:剥夺方式和非剥夺方式

  • 剥夺方式:当就绪队列中有进程的优先级高于当前执行进程的优先级,便立即发生进程调度,转让处理机;
  • 非剥夺方式:一旦某个作业或进程占用了处理器,别的进程就不能把处理器从这个进程手中夺走,直到该进程自己因调用原语操作而进入阻塞操作,或时间片用完而让出处理。

调度算法有:

  • 先来先服务(First Come and First Served ,FCFS)调度算法,又称先进先出(First In and First Out ,FIFO);
  • 优先数调度。确定优先级的方法有静态优先级动态优先级,静态优先级是指进程的优先级在进程开始执行前确定,执行过程中不变;动态优先级则可以在进程执行过程中改变
  • 轮转法。每个进程执行一次,占有处理器时间都不超过规定的时间单元(时间片),若超过,则自行释放所占有CPU而拍到就绪队列末尾,等待下次调用。

死锁

死锁产生主要原因是供共享的系统资源不足,资源分配策略和进程的推进顺序不当。系统资源既可能是可重复使用的永久性资源,也可能是消耗性的临时资源。产生死锁的必要条件是:互斥条件、保持和等待条件、不剥夺条件、环路等待条件

如,P1进程占有资源R1,P2进程占有资源R2,这时,P1需要资源R2,P2需要资源R1,它们在等待对方占有的资源时,又不会释放自己占有的资源,因而使双方都进入无限等待状态,即死锁。

解决死锁有2种策略:在死锁发生前采用的预防和避免策略在死锁发生后采用的检测和恢复策略

  • 死锁的预防主要是通过打破死锁产生的4个必要条件之一来保证不会产生死锁。采用的死锁预防策略通常有资源的静态分配法有序分配法,它们分别打破了资源动态分配条件和循环等待条件,因此不会发生死锁,但大大降低系统资源的利用率和进程之间的并行程度
  • 死锁避免策略,是在系统进行资源分配时,先执行一个死锁避免算法以保证本次分配不会导致死锁发生。但由于资源分配很频繁,因此死锁避免策略要消耗大量的CPU和时间。

ps:死锁发生概率较小,采用死锁发生后的检测和恢复策略 比 采用死锁发生前的预防与避免策略代价小些

存储管理

设备管理

文件管理

作业管理


http://www.niftyadmin.cn/n/5561831.html

相关文章

智能家居的优缺点有哪些?

智能家居作为现代科技发展的产物,已经逐渐渗透到我们的日常生活中,为我们的生活带来了诸多便利。然而,它也存在一些不足之处。以下是智能家居的优缺点分析: 优点 安全性提升: 智能家居系统能够增强家庭的安全性。例如…

spring事件发布器ApplicationEventPublisher的使用

1、前言 spring中有一个事件发布器,使用了观察者模式,当有事件发布的时候,事件监听者会立刻收到发布的事件。今天我们来介绍下这个事件发布器怎么使用。 2、简单使用 2.1、创建事件实体类 事件实体类需要继承ApplicationEvent。我们模拟老师发布事件的诉求。 public class T…

【Pytorch】一文向您详细介绍 torch.randn_like()

🎉🔥【Pytorch】一文向您详细介绍 torch.randn_like() 🔥🎉 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 …

C#知识|SqlParameterCollection 只接受非空的 SqlParameter 类型对象,不接受 SqlParameter[] 对象

哈喽,你好啊,我是雷工! 今天在练习C#时遇到报错: SqlParameterCollection 只接受非空的 SqlParameter 类型对象,不接受 SqlParameter[] 对象。 01 为什么使用SqlParameter 开发中之所以采用SqlParameter[]param是因为…

[Java后端面试题1]2024-07-16

TIME_WAIT与CLOSE_WAIT的区别 TIME_WAIT 和 CLOSE_WAIT 是 TCP 连接状态的一部分,用于描述连接在不同阶段的状态。它们有以下主要区别: TIME_WAIT 定义: 这是主动关闭连接的一方在发送了最后一个 ACK 后进入的状态。出现原因: 确保远程 TCP 协议收到最…

口袋实验室--使用 AD2 高效调试 SPI 接口

目录 1. 简介 2. SPI Protocol 模块配置 3. 操作步骤 3.1 打开 WaveForm 软件 3.2 启动功能模块 3.3 启用 Logic Analyzer 3.4 编写 Script 3.5 SPI 相关函数 4. 总结 1. 简介 SPI 接口复习 它具有以下几个特点: 全双工通信:SPI 允许数据在主…

上海理工大学24计算机考研考情分析!初复试分值比55:45,复试逆袭人数不算多!

上海理工大学(University of Shanghai for Science and Technology),位于上海市,是一所以工学为主,工学、理学、经济学、管理学、文学、法学、艺术学等多学科协调发展的应用研究型大学;是上海市属重点建设大…

Git提交了敏感信息,通过BFG工具撤回或修改很久之前已经提交的内容

Git 提交了敏感信息怎么办? 这篇文章的由来,由于自己在提交代码的时候不小心把服务器的ip地址,还有数据库的密码给push到github上面去了。那么问题来了,我这个已经是一个月之前的提交的呢,现在还能改吗?别…