- 进程间切CPU,OS可提高计算机的吞吐率
- 介绍基本调度概念和多个CPU调度算法
- 4章为进程模型引入线程
- 对支持它们的OS,是内核级的线程被OS调度,而no进程
- 不过,术语 线程调度或 进程调度 常交替使用。
- 普通调度概念时用进程调度
- 介绍CPU调度,它是多道程序操作系统的基础
- 描述各种CPU调度算法
- 讨论为特定系统选择CPU调度算法的评估标准
5.1基本概念
- 在进程必须等待的时间内,另一进程可拿走CPU使用权
这种调度是操作系统的基本功能
- 几乎所有的计算机资源在使用前都要调度。CPU是最重要的计算机资源之一。
- so CPU调度对于操作系统设计来说很重要。
5.1.1 CPU-I/O区间周期
CPU的成功调度依赖于进程的如下属性:进程执行由CPU执行和I/O等待周期组成
- 进程在这两状态间切换
- 进程执行从CPU区间( PU burst)开始,之后是I/O区间,接着是另一CPU区间,然后是另一I/O区间,如此进行
- 最终、最后的CPU区间通过系统请求终止执行(见图5.1)

这些CPU区间的长度已被大量地测试过。
- 虽然它们随着进程和计算机的不同变化很大,但是呈现类似于5.2所示的频率曲线。
- 曲线常为指数或超指数,
- I/O约束程序常有很多短CPU区间。
- CPU约束程序可能有少量的长CPU区间。
- 这种分布有助于选择合适的CPU调度算法。
5.1.2 CPU 调度程序
- CPU闲时,OS必从就绪队列中选一个进程执行
- 进程选择由短调程或CPU调度程序执行
- 调度程序从内存中选一个能执行的进程,并为之分CPU
就绪队列不必是FIFO
- FIFO、优先队列、树或无序链表
- 但概念上,就绪队列内的所有进程都要排队以等待在CPU上运行
- 记录通常为进程控制块(PCB)
5.1.3 抢占调度
- CPU调度决策可在如下4种环境下发生
- 从运行态切到等待状态(I/O请求,或调用wait等待子的终止
- 从运行态切到就绪态(当出现中断时)
- 从等待状态切到就绪态(I/O完成)
- 当进程终止时
对1和4,无选择只有调度
- 一个新进程(如果就绪队列中已有一个进程存在)必须被选择执行
- 不过,对于2和3,可进行选择
当调度只能发生在1和4时,称调度方案是非抢占的的或协作的:
- 否则,称调度方案是抢占的
- 用非抢占,一旦CPU分配给一个进程,该进程会一直用CPU直到进程终止或切换到等待状态
- Windows3.x用该种, Windows95用抢占调度,之后的 Windows都用抢占调度
- Macintosh的 Mac OS X用抢占调度,之前的Macintosh依赖协作调度
- 协作调度在有的硬件平台上是唯一的方法,因为它不要求抢占调度所需要的特别的硬件(如定时器)支持。
不幸,抢占调度对访问共享数据是有代价的
- 考虑两个进程共享数据
- 一正在更新数据时,它被抢占使二运行
- 二试图读数据,该数据现在处于不一致的状态
- 此况下要一种新机制来协调对共享数据的访问。
- 这问题将在第6章讨论
抢占对于操作系统内核的设计也有影响。
- 在处理系统调用时,内核可能忙于进程活动
- 这些活动可能涉及要改变重要内核数据(如I/O队列)。
- 如果一个进程在进行这些修改时被抢占,内核(或设备驱动)需要读取或修改同样的结构,那么会有什么结果呢?肯定会导
致混乱。
- 有的操作系统,包括绝大多数UNX,通过在上下文切换之前等待系统调用完成或等待发生I/O阻塞来处理这一问题。
- 不幸,这种内核执行模式对实时计算和多进程的支持较差。
- 这些问题及其解决方案在5.4和19.5讨论。
因为根据定义中断能随时发生,且不能总被内核所忽视,所以受中断影响的代码段必须加以保护以免同时访问。
- 操作系统需要在任何时候都能接受中断,否则输入会丢失或输出会被改写。
- 为了这些代码段不被多个进程同时访问,在进入时要禁止中断,而在退出时要重新允许中断。
- 注意到禁止中断代码段发生并不频繁,而且常常只包括很少的指令,这很重要
5.1.4 分派程序
- 与CPU调度功能有关的另一部分是分派程序( dispatcher)。
- 分派程序是个模块,用来将CPU的控制交给由短期调度程序选择的进程
- 其功能包括:
- 切换上下文
- 切到use mode
- 跳转到用户程序的合适位置,以重新启动程序
- 分派程序应尽可快,因为每次进程切时都用
- 分派程序停止一个进程而启动另一个所要花的时间称为分派延迟 啥+latency
5.2 调度准则
相关文章:
-
2021-06-25
-
2021-12-03
-
2022-12-23
-
2021-05-27
-
2021-08-06
-
2021-07-26
-
2021-08-28
相关资源
-
下载
2022-12-20
-
下载
2023-02-06
-
下载
2022-12-29