概念
控制、协调多个进程对CPU的竞争
即按一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程
场景
N个进程就绪,等待上M(M>=1)个CPU运行,需要决策哪个进程分配给哪个CPU运行
解决
WHAT:调度算法(按什么原则选下一个),WHEN:调度时机(何时选),HOW:调度过程(被选中的进程如何上CPU运行)
具体
调度时机:内核对中断/异常/系统调用处理后返回用户态时(就绪队列的改变引发重新调度)
如进程正常终止(退出),进程由于错误终止(如abort异常),新进程创建,一个等待进程变就绪态(唤醒),一个进程由运行态变为就绪态
或阻塞态(等待或中断)
调度过程:进程切换,一个进程让出CPU,另一个占用CPU,包括对原进程状态的保存和新进程状态的恢复
举例:进程A下CPU,进程B上CPU,整个过程包括保存A的进程的上下文,修改进程A的状态(更新PCB),进程A移至合适队列,将B的状态
设置为运行态,从进程B的PCB中恢复上下文
一个重要概念:上下文切换开销
直接开销包括内核完成切换所用的CPU时间(保存和恢复寄存器,切换地址空间等)
间接开销包括高速缓存,缓冲区缓存,TLB失效
调度算法的衡量指标
吞吐量--每单位时间完成的进程的数目
周转时间--每个进程从提出请求到运行完成的时间
响应时间--从提出请求到第一次回应的时间
CPU利用率--CPU做有效工作的时间比列
等待时间--每个进程在就绪队列中等待的时间