操作系统 —— 处理器调度
概念
处理器调度 —— 控制、协调进程对CPU的竞争。即按一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程。
如果没有就绪进程,系统会安排一个系统空闲进程或idle进程。
调度时机
内核对中断/异常/系统调用处理后返回用户态时。
- 进程正常终止或由于某种错误终止
- 新进程创建或一个等待进程变就绪
- 当一个进程从运行态变阻塞态
- 当一个进程从运行态变就绪态
调度过程
进程切换
- 切换全局页目录以加载一个新的地址空间
- 切换内核栈和硬件上下文
上下文切换开销
- 直接开销:保存和恢复寄存器、切换地址空间
- 间接开销:高速缓存、缓冲区缓存、TLB失效
调度算法
用户角度和系统角度考虑的问题是不一样的,设计算法时要在各种因素中做一个权衡。
调度算法衡量指标
- 吞吐量 Throughtout: 每单位时间完成的进程数目
- 周转时间 TT(Turnaround Time):每个进程从提出请求到运行完成的时间
- 响应时间 RT(Response Time):从提出请求到第一次回应的时间
- CPU利用率(CPU Utilzation):CPU做有效工作时间的比例
- 等待时间(Waiting Time):每个进程在就绪队列(ready queue)中等待的时间
设计调度算法时需要考虑的问题
- 进程优先级
- 静态优先级:创建时指定,运行过程中不再改变
- 动态优先级:创建时指定,运行中也可以动态变化。如:等待较长的进程可提升优先级。
- 就绪队列组织:如按优先级排队
- 抢占与非抢占
- 可抢占式Preempive(可剥夺式):可抢占优先级低进程的CPU
- 非可抢占式:与上相反