文章目录
- 一. 概念 & 层次
- 1. 高级调度(作业调度)
- 2. 中级调度(内存调度)
- 挂起态 & 七状态模型
- 3. 低级调度(进程调度)
- 4. 三种调度的对比联系 && 总结
- 二. 时机、切换过程 & 调度方式
- 1. 进程调度的时机
- 2. 进程调度的方式
- 3. 进程的切换与过程
- 4. 总结
- 三. 调度算法的指标
- 1. CPU 利用率
- 2. 系统吞吐量
- 3. 周转时间
- 4. 等待时间
- 5. 响应时间
- 总结
一. 概念 & 层次
- 为何需要调度:多任务情况下,需要规则决定任务处理顺序。
- 处理机调度:从就绪队列中,以某算法选择一进程获取CPU运行。
1. 高级调度(作业调度)
- 决定从外存调入内存的顺序
- 从外存后备队列的作业中挑选作业,分配资源并建立相应进程(建立PCB)。
- 主要是调入的问题
2. 中级调度(内存调度)
- 虚存与内存间的调度,决定挂起的进程重调入内存。
- PCB 常驻内存,不会被调到外存。
- 挂起状态
- 频率比高级调度要高
挂起态 & 七状态模型
- 五状态模型 + 就绪挂起 & 阻塞挂起 = 七状态模型
- 挂起是到外存,阻塞还在内存
3. 低级调度(进程调度)
- 从就绪队列选取进程,分配 CPU 的调度
- 最基本的调度,频率最高
4. 三种调度的对比联系 && 总结
- 任务、发生地、频率与对进程状态的影响
- 总结:
二. 时机、切换过程 & 调度方式
1. 进程调度的时机
- 主动放弃 CPU:正常终止、异常终止 && 等待 I/O 阻塞
- 被动放弃 CPU:时间片用完、有更紧急事务 && 更高优先级进程进入队列
- 不能进行进程调度与切换的情况:处理中断、OS内核程序临界区 && 原子操作过程中。
- 临界资源:同一时间段只允许一进程访问。各进程需要互斥访问临界资源
- 临界区:访问临界资源的代码段
- 普通临界区:可以进行处理机调度,不会直接影响OS内核的管理工作
- 操作系统内核程序临界区:不能进行处理机调度,有可能影响内核其他管理工作
- 见图中两绿色部分对比
2. 进程调度的方式
- 非剥夺:简单、开销小,但无法处理紧急任务(公平)
- 剥夺:可以优先处理紧急任务(非公平)
3. 进程的切换与过程
- 进程调度(狭义):从就绪队列中选中一个要运行的进程
- 进程调度(广义):包含进程选择 & 进程切换两个步骤。
- 进程切换:一进程让出CPU给另一进程的过程。
- 进程切换的过程主要完成了:保存原进程数据 && 恢复新进程数据
- 进程切换是有代价的,过于频繁调度、切换会使整个系统的效率降低。
4. 总结
三. 调度算法的指标
1. CPU 利用率
- 利用率 = 工作时间 / 总时间
2. 系统吞吐量
- 系统吞吐量 = 作业完成总量 / 总时间
3. 周转时间
- def:作业提交给系统开始,到完成为止的时间间隔。
- 平均周转时间 && 周转时机:用户关心自己的单个作业,而操作系统关心整体平均。
- 带权:相对于周转时间,多除了作业实际运行时间
这边感觉理解得不太好,抽空再补补课
4. 等待时间
- 进程而言:建立后等待被服务的时间之和
- 作业而言:相对于进程,还要加上作业在外存后备队列中等待的时间