文章目录
一、CPU调度
1.三个层次
层次 | 任务 | 调度 | 发生频率 | 进程状态变化 |
---|---|---|---|---|
高级调度 (作业调度) | 调度处于后备队列中的作业,创建进程 | 外存→内存 | 最低 | 无→创建态→就绪态 |
中级调度 (内存调度) | 调度处于挂起队列中的进程 | 外存→内存 | 中等 | 就绪挂起态→就绪态 阻塞挂起态→阻塞态 |
低级调度 (进程调度) | 调度处于就绪队列中进程 | 内存→CPU | 最频繁 | 就绪态→运行态 |
2.七状态模型
- “就绪挂起态"和"就绪态”、"阻塞挂起态"和"阻塞态"之间分别可以相互转换。
- 当等待事件出现时,“阻塞挂起态"可以变为"就绪挂起态”(PCB是在内存中的,OS改版PCB内的状态标志就行)
- 创建好PCB后,没内存时,可以直接调入外存中成为"就绪挂起态"。
- 进程下CPU时可以直接调到外存,“运行态"变成"就绪挂起态”。
二、进程调度的时机与方式
这里的进程调度就是上面的低级调度的详细理解。
1.调度与切换
2.什么时候需要调度
3.什么时候不能进行进程调度
【在处理中断的过程中】
中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。
【OS内核程序临界区与临界区】
- OS内核程序临界区用来访问某种内核数据结构。如果不尽快释放的话,极有可能影响到OS内核的其他管理工作。因此在访问内核程序临界区期间不能进行调度与切换。
- 如外设I/O很慢,如果不允许进程调度的话,CPU大部分时间在空闲。普通临界区访问的临界资源不会直接影响OS内核的管理工作。因此在访问普通临界区时可以进行调度与切换。
4.方式
三、调度算法的评价指标
1.利用率
2.系统吞吐量
3.计算时间
(1)周转时间
(2)等待时间