调度的概念
当有一推任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序。这就是“调度”研究的问题。
调度三个层次
- 作业调度(高级调度):按一定的原则从外存上处于后备队列的作业中挑选一个,给他们分配内存等必要资源,并建立相应的进程,以使它获得竞争处理机的权利。
- 内存调度(中级调度):决定将哪个处于挂起状态的进程重新添加到内存
- 进程调度(低级调度):按照某种方法和策略从就绪队列中选取一个进程将处理机分配给它
进程调度的方式
进程调度的方式可分为:剥夺式(抢占式)和非剥夺式(非抢占式)
抢占式:即就绪队列中一旦有优先级高于当前执行进程优先级的进程存在时,变立刻发生进程调度,转让处理机。
非抢占式:即使在就绪队列中存在有优先级高于当前执行进程时,当前进程仍将占有处理机,直到该进程自己因调用原语操作或等待I/O而进入阻塞、睡眠状态,或时间片用完时才重新发生调度让出处理机。
进程调度的时机
- 正在执行的进程执行完毕
- 执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等待状态
- 在分时系统中时间片已经用完
- 就绪队列中的某进程的优先级变得高于当前执行进程的优先级(抢占式)
衡量调度策略的指标
- 设备利用率:(指设备运行的时间在总时间中的占比例)设备运行时间/总时间
- 周转时间:(从用户提交作业到作业完成所用时间)作业完成的时间-作业提交的时间
- 带权周转时间:(周转时间/作业实际运行时间)
- 等待时间:(作业/进程处于等待处理机时间之和)
- 吞吐量:(单位时间内完成作业的数量)完成了多少道作业/总时间
- 响应时间:(用户提交请求到首次产生相应所用的时间)
操作系统之作业/进程调度算法
- 先来先服务:每次从后备进程队列中选择最先进入该列队的进程
- 短作业优先:从后备进程队列中选择运行时间最短的进程
- 优先级:将所有进程设置优先级,从后备进程队列中选择优先级最高的进程
- 高相应比:响应比公式(等待时间+运行时间)/运行时间
- 时间片轮流:系统将所有就绪进程按到达时间的先后次序拍成一个队列,每个进程运行一个时间片
- 多级反馈轮转:
- 设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列次之,其他队列的优先级逐次降低
- 赋予各队列中进程执行时间片的大小各不相同,在优先级越高的队列中,每个进程的运行时间片越小。
- 一个新进程进入内存后,首先将它放入第1级队列的末尾,按先来先服务原则排队等待调度。当轮到该进程执行时,如果它能在该时间片内完成,便可撤离系统;若在一个时间片结束尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样按先来先服务原则等待调度执行,以此类推
- 仅当第1级队列为空时,调度程序才调度第2级队列中的进程执行;仅当第1~(i-1)级队列均为空时,才会调度第i级队列的进程。