处理器管理
-
程序:为完成特定任务的指令序列
-
顺序执行:多个任务按顺序执行,多个任务多次执行结果一致
-
并发执行:一个程序尚未结束,另一个程序已经开始执行,多个任务多次执行结果不一致
进程
概念:程序的一次执行
系统资源分配的基本单位
进程的三个基本状态
- 运行状态:获得CPU资源执行
- 等待状态:等待资源
- 就绪状态:获得除CPU外的必须资源
进程状态的变化图
进程控制块(PCB):保存与其他进程、系统资源以及进程所处状态的数据结构
进程队列:PCB与PCB之间通过队列的形式进行存储
处理器执行状态
核心态:操作系统管理代码执行时机器的状态
用户态:用户进程执行时机器的状态
原语:执行时具有原子性的一系列指令
进程调度的算法
批处理系统
- 先来先服务:谁先来谁先执行
- 短作业优先调度算法:优先调度执行时间短的作业,会出现长作业饿死的情况
- 最短剩余时间调度算法:新增加的作业比当前执行的作业所需时间短,则让出CPU给新增加的作业
交互式系统
- 优先数调度:为每个进程分配一个优先数,按优先数调度进程
- 时间片轮转调度:每个进程执行固定的时间后挂起
- 多级反馈队列:分为多个队列,第一队列优先级最高,时间片最少,第二队列优先级次高,时间片次低,以此类推,进程首先进入第一队列,时间片用完后,没执行完,进入第二队列
线程
概念:进程中的一个实体,可以并发执行,具有相同的地址空间,是独立参与调度的基本单位
线程控制块(TCB):记录了线程的标识符、线程执行时的状态信息
分类:
内核级线程:内核在其空间内执行线程的创建、调度和管理
用户级线程:内核并不知道线程的存在,线程的创建、终止、同步和调度等在用户级完成
混合级线程:同时支持内核级与用户级线程
进程同步与互斥
-
临界区:对共享资源进行访问的程序段
-
临界资源:共享的资源
-
信号量:表示可使用的某一资源的个数,使用PV原语操作对其进行增减操作,P为减少信号量的值,V为增加信号量的值,信号量可为负,此时绝对值表明等待该资源的进程个数
-
进程互斥
-
概念:由于竞争共享资源导致进程执行具有先后顺序
-
实现机制:
- 互斥量:信号量取值只有0与1时,此时信号量为互斥量
-
-
进程同步
-
概念:由于进程之间的相互合作导致进程执行具有先后顺序,一个进程的执行依赖于另外一个进程的结果
-
实现机制:
-
信号量:一个信号量与一个进程运行的结果关联
-
管程
-
概念:任一时刻只有一个进程可以执行管程中的代码
-
等待机制
-
目的:由于缺乏资源而导致进程挂起,若没有等待机制,则没有任何进程可以执行管程中的代码
-
wait()操作:将进程阻塞在等待队列中,释放管程
-
signal()操作:将等待队列中的一个进程唤醒
-
问题:管程中执行的进程可以执行signal()操作,此时会有两个进程在管程中,解决方案:
- 执行signal的进程等待,直到被释放进程退出管程或进入等待队列
- 被释放进程等待,直到执行signal的进程退出管程或进入等待队列
-
-
-
-
经典同步问题:
-
哲学家就餐问题
-
读者写者问题
-
生产者消费者问题
经典同步问题的求解需要较多篇幅,此处不总结
-
-
进程通信
-
概念:进程之间的相互作用
-
分类
- 低级通信:进程同步与互斥
- 高级通信:用于传输大量信息
-
高级通信
-
分类
-
共享存储器:进程通过某些数据结构或共享存储区进行通信
-
管道通信
-
概念:用于连接一个读进程与一个写进程,以实现它们之间通信的共享文件
-
特点:
- 互斥:不能同时读写
- 同步:满写和空读的等待
- 判断对方是否存在,双方存在才可以通信
-
分类
-
直接通信
概念:每个进程都有一个名字,需指定信息接收进程的名字
特点:自动建立链路,对应一对通信进程,链路可以是单向,也可以是双向
-
间接通信:进程间发送或接收消息通过一个信道来进行,每个信箱有一个唯一的标识符,多个进程可共享一个信箱
-
-
-
-
死锁
-
概念:每一个进程占用了某个资源而又等待另一进程所占用的资源,导致没有进程可以运行的情况
-
原因
1、资源竞争
2、进程推进顺序不当
两者共同作用造成了死锁
-
产生死锁的必要条件
必须同时满足下列四个必要条件
- 互斥条件:任一时刻一个资源仅为一个进程占有
- 占有且等待条件:一个进程无法运行时,不释放占有的资源
- 不剥夺条件:资源不可抢占
- 循环等待条件:存在一个进程资源循环等待链
-
解决死锁的方法
-
预防:限制并发进程对资源的请求
-
破坏互斥条件:是资源可同时访问而不是互斥使用
-
破坏占有和等待条件
静态分配策略:一个进程必须在执行前就申请它所需要的全部资源
-
破坏不剥夺条件:允许进程抢占资源
-
破坏循环等待条件
-
层次分配策略
- 资源分层
- 进程得到较低层的资源后,才可以申请高一层的资源
- 进程释放完高层的资源后,才能释放底层的资源
- 进程只能占有一层中的一个资源
-
按序分配策略
- 给系统的所有资源划分优先级
- 进程只有占据低优先级的资源后,才可占用高优先级的资源
-
-
-
避免:系统在分配资源时,根据资源使用情况进行预测,避免死锁的发生
-
检测:通过一个机构检测死锁是否发生
-
解除:与检测配套的措施,用于解除死锁状态
- 结束所有进程,重启操作系统
- 撤销涉及死锁的所有进程,解除死锁后继续运行
- 逐个撤销涉及死锁的进程,看剩余进程是否可以执行
- 从涉及死锁的某个进程中抢占资源,将其分配给其他进程,知道死锁解除
-