第三章 进程调度与死锁

进程调度的功能

进程调度的功能由操作系统的进程程序来完成

按照某种策略和算法从就绪态进程中为当前空闲的CPU选择在其上运行的新进程

进程调度的功能是什么?

按照某种策略和算法从就绪态进程中选择新进程运行。

需要进程调度的时机

1.进程正常或异常结束 进程阻塞 有更高优先级进程到来,时间片用完时都会导致进程调度

进程调度的功能

按照某种策略和算法从就绪态进程中为当前空闲的CPU选择在其上运行的新进程

进程调度的时机

进程正常或异常结束,进程阻塞 有更高优先级进程到来,时间片用完时,都会导致进程调度。

进程调度算法

先来先服务的调度算法 

短进程优先调度算法

优先权调度算法

时间片轮转调度算法

多级队列调度算法

多级反馈队列调度算法

什么样的算法是好的算法?

作业从提交给系统开始,到作业完成,话费时间短 周转时间短

从用户提交作业多开始 到系统开始响应,话费时间短

保证作业在开始截止时间前开始,在 完成截止时间前完成

系统在单位时间内完成的作业量多 

CPU的利用率尽可能高

1.周转时间短 2.响应时间快 3.截止时间的保证 4.系统吞吐量高 5.处理机利用率好

什么是时间轮转调度算法

系统将所有就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分给队首进程,

并令其执行一个时间片。当时间片用完时,调度程序终止当前进程的执行,并将它送到就绪队列的队尾。

多级队列调度算法

将就绪队列分成多个独立队列,每个队列有自己的调度算法

多级反馈队列调度算法 

建立多个优先权不同的就绪队列每个队列有大小不同的时间片

 进程切换的含义

当前正在执行的进程成为被替换进程,让出其所使用的CPU,以运行被进程调度程序选中的新进程。

进程切换的步骤

1.保存包括程序计数器和其他寄存器在内的CPU上下文环境

2.更新被替换进程的进程控制块

3.修改进程状态,把执行态改为就绪态或阻塞态

4.将被替换进程的进程控制块移到就绪队列或阻塞队列

5.执行通过进程调度选择的新进程,并更新该进程的进程控制块

6.更新内存管理的数据结构

7.恢复被调度程序选中的进程的硬件上下文

多处理器系统的类型

多处理器系统 

紧密耦合 共享主存储器和I/O设备

松弛耦合 有各自的存储器和I/O设备

多处理器系统 

  对称 处理单元功能和结构相同

  非对称 有多种类型的处理单元一个主处理器,多个从处理器

根据处理器的耦合程度,多处理器操作系统可分为 紧密耦合的多处理器系统和松弛耦合的多处理器系统。

根据处理器的结构功能是否相同,多处理器操作系统可分为 对称多处理器系统和非对称多处理器系统。

对称系统分配方式

静态分配 就绪队列的进程只能在与就绪队列对应的处理器上运行

动态分配 进程随机的被分配到当时处理空闲状态的某一个处理器上执行

进程 的调度方式 

自调度

  最常用最简单的方式

  优点 易移植 很容易将但处理器环境下所用的调度机制移植到多处理器环境中

  有利于提高cpu的利用率 不会出现处理器空闲或忙闲不均的情况

缺点 瓶颈问题 处理器数量很多时 

  低效性 多次更换处理器

  线程切换频繁 某些线程因其合作的线程未获得处理器而阻塞导致进程切换

死锁的定义

  由于多个进程竞争共享资源而引起的进程不能向前推进的僵死状态称为死锁

产生死锁的原因

竞争共享资源且分配资源的顺序不当

产生死锁的必要条件

互斥条件 请求和保持条件 不剥夺条件 环路等待条件

处理死锁的基本方法

死锁的预防 通过破坏死锁的产生条件来保证不发生死锁

死锁的避免 通过算法合理分配资源来保证不发生死锁

死锁的检测 检测当前系统是否出现死锁

死锁的解除 检测到系统有死锁后进程解除

死锁的避免

通过资源合理分配是系统处于安全状态

安全状态

能够找到一个进程执行序列 ,按照这个序列为每个进程分配资源,就可以保证金称资源分配和执行顺利完成,不会发生死锁

安全状态 至少找到一个这样的序列 不可能发生死锁

不安全状态 找不到一个这样的序列 可能会发生死锁

银行家算法 

一个进程提出资源请求后,系统先进行资源的试分配,分配后检测系统是否安全

S为死锁状态的充分条件是当且仅当S状态的资源分配图是不可完全简化的

解除途径 

进程终止 终止所有死锁进程 一次只终止一个处于死锁的进程,知道死锁解除

资源抢占 逐步从进程中抢占资源给其他进程使用直到死锁被打破为止

成组调度 专用处理器分配

原文地址:https://www.cnblogs.com/simadongyang/p/10196828.html