【王道操作系统】2.1:处理机调度

117 阅读2分钟

调度

由于系统资源有限,所以需要给要运行的任务好好安排一下,如何安排就是操作系统调度要做的事情

高级调度

将磁盘中的程序加载进入就绪队列 - 进程的创建态 到 就绪态所作的事情

低级调度

最基本的一种调度,将就绪队列的任务调度上CPU运行

中级调度

资源不足的时候,可以将就绪队列中的某些进行进行挂起,它就不占用资源了【暂时放到外存中】,后序在合适的时候再次调度进就绪队列

image.png

image.png

调度程序触发时机

看系统是否支持内核级线程,不支持则还是进程调度,支持的话就是线程调度了

  1. 创建新进程
  2. 进程被销毁
  3. 进程阻塞
  4. 阻塞进程被唤醒

调度算法评估指标

CPU 利用率

image.png

系统吞吐量

image.png

周转时间

image.png

等待时间

完成时间 - 到达时间 - CPU运行时间 - IO设备使用时间 = 等待时间

响应时间

调度算法

FCFS 先来先服务

image.png

短作业优先 SJF

image.png

image.png

最高响应比优先 HRRN

因为第一个算法考虑的是作业等待时间,第二个算法考虑的是作业执行时间;现在这个直接兼顾两个

image.png

前三种总结

image.png

时间片轮转 RR

要注意时间片的设置,如果太大,响应时间就特别慢了;如果太小,线程切换开销就特别大了

image.png

优先级调度

  1. 系统进程优先级高于用户进程
  2. 前台进程高于后台进程
  3. I/O型进程高于CPU密集型【提升资源利用率,提高吞吐量】
  4. 可以动态调整优先级【比如:根据运行时间来调整】

image.png

多级反馈队列

队列与队列之间可以采用不同的调度算法;队列内部也有自己的调度算法

多个就绪队列,这些就绪队列从上到下优先级越来越小,时间片越来越大。【只有 k 级队列为空,才会对 k+1 级队列进行调度;如果某个进程在CPU上运行的时候被优先级高的进程抢占了CPU资源,那么会将其放入原队列末尾】

第一次进入的进程先放入第一个就绪队列然后上CPU执行,如果没有完成就将其插入到下一层就绪队列,直到它到达最后一级就绪队列,要是上CPU一次还未执行成功,那就将其插入最后一层队列的末尾

image.png

后三种总结

image.png