1 进程调度指标
周转时间
T 周转时间 = T 完成时间 − T 到达时间 T_{周转时间}=T_{完成时间}-T_{到达时间} T周转时间=T完成时间−T到达时间
响应时间
T 响应时间 = T 首次运行 − T 到达时间 T_{响应时间}=T_{首次运行}-T_{到达时间} T响应时间=T首次运行−T到达时间
2 进程调度算法
先进先出 FIFO
最短任务优先 SJF
最短完成时间优先 STCF
轮转 RR
3 多级反馈队列 MLFQ
基本概念
(1) 多个独立队列,具有不同的优先级;
(2) 任何时刻,一个工作只能存在于一个队列中;
(3) 优先执行较高优先级队列中的工作;
(4) 每个队列中的工作具有同样的优先级,使用轮转调度;
关键
如何设置和调整优先级
一种设计方案
(1) 如果A的优先级>B的优先级,运行A;
(2) 如果A的优先级=B的优先级,轮转运行A和B;
(3) 工作进入系统时,放在最高优先级队列;
(4) 一旦工作用完了其在某一层的时间配额,就降低其优先级;
(5) 经过一段时间,就将系统中的所有工作重新加入最高优先级队列;
4 多处理器调度
区别
与单CPU调度的区别在于:
(1) 对硬件缓存的使用
(2) 多处理器之间共享数据的方式
缓存一致性
总线窥探:每个缓存都通过监听链接所有缓存和内存的总线,来发现内存访问。如果一个CPU发现其本地缓存中的数据在其他CPU缓存或内存中更新,作废或更新其本地缓存。
缓存亲和度
由于缓存,一个进程保持在一个CPU上执行会更快。
单队列多处理器调度 SQMS
所有CPU共用一个调度队列。
缺点:
(1) 缺乏可扩展性。需要加锁保证队列的原子性,存在性能损失。
(2) 缓存亲和度难以保证。
多队列多处理器调度 MQMS
每个CPU拥有一个自己的调度队列。
缺点:负载不均。
解决方案:通过工作窃取进行跨CPU迁移,达到负载均衡。