文章目录
处理机调度
背景
处理机调度,又可以叫做进程调度。
CPU是计算机中最重要的资源,如何提高CPU的利用率及改善系统性能,很大程度上取决于进程调度性能的好坏。
CPU调度
CPU调度即从就绪队列中挑选一个进程 / 线程作为CPU将要执行的下一个进程 / 线程。
CPU调度一定会涉及到进程切换问题,此问题可以看之前的博客,此处不做多于介绍。
以下三点是进程调度要解决的问题:
- 按什么原则分配CPU:即要采用什么算法进行调度
- 何时分配CPU:即进程调度的时机
- 如何分配CPU:即CPU的调度过程
进程调度方式
非抢占方式
非抢占方式是指当一个进程获取CPU后,除非它主动放弃CPU的使用权,否则其他进程不能获取CPU的使用权。
这种调度方式主要用在批处理系统中,优点是简单、系统开销小。
抢占方式
抢占方式是说,系统有可能基于某种策略剥夺当前正在执行的进程的CPU使用权。剥夺原则:优先权原则、短进程优先原则和时间片原则。
此种调度方式多用在分时系统和实时系统中,以便响应各进程的请求。
CPU调度过程
- 保存运行现场:顺序保存,最后一步保存PSW。
- 选择要运行的进程
- 若没有就绪进程,系统会安排一个空闲进程(idle),若没有其他进程时该进程一直运行,在执行过程中可以接收中断
- 恢复现场:最后一步恢复选中进程的PSW
CPU调度时机
进程调度的时机与进程调度的方式有关。当正在运行的进程的CPU被回收时,就会触发进程调度。一般有如下情况:
- 正在执行的进程执行完成。(正常执行完成终止或者由于某种错误而导致异常终止)。即一个进程由执行态->终止态时。
- 执行中的进程提出I/O请求时。即一个进程由执行态->等待态时。
- 在分时系统中,当分配给进程的时间片用完时。即进程从执行态->就绪态时。
- 当调度方式为抢占式调度时,有比当前执行的进程更高级的进程变为就绪态时。
- 在进程通信中,执行中的进程执行了某种原语操作,如wait操作、阻塞原语和唤醒原语时,都可能引起进程调度。
调度准则
调度算法的性能可以从不同的角度来判断,实际的调度算法选择是一个综合的判断结果。
实际系统中,调度算法往往这种考虑,大多数OS都采用较简单的调度算法。
面向系统的调度性能准则
- 吞吐量:单位时间内完成的作业数,跟作业本身特性和调度算法都有关系。一般用于批处理系统的判断准则
- 处理机利用率:一般用于大中型主机的判断准则
- 各种设备的均衡利用:如I/O密集型的作业和CPU密集型的作业搭配。一般用于大中型主机的判断准则。
面向用户的性能调度准则
- 周转时间:作业从提交到执行结束所经历的时间——批处理系统
- 带权周转时间:周转时间 / 实际运行时间
- 响应时间:用户输入一个请求到系统给出首次响应的时间——分时系统
- 截止时间:开始截至时间和完成截止时间——试试系统,与周转时间类似
- 公平性:不因作业或进程本身的特性而使上述指标过分恶化。如长作业等待很长时间或者低优先级进程等待很长时间
- 优先级:可以是关键任务达到更好的指标