处理器
处理器调度的层次
高级调度(长程调度,作业调度):决定能否加入到执行的进程池中
- 分时OS中,高级调度决定:
- 是否接受一个终端用户的连接
- 命令能否被系统接纳并构成进程
- 新建态进程是否加入就绪进程队列
- 批处理OS中,功能是按照某种原则从后备作业队列中选取作业进入主存,并为作业做好运行前的准备工作和完成后的善后工作
中级调度(平衡负载调度):决定主存中的可用进程集合
- 引起中级调度是为了提高内存利用率和作业吞吐量
- 中级调度决定哪些进程被运行驻留在主存中参与竞争处理器及其他资源,起到短期调整系统负荷的作业
- 中级调度把一些进程换出内存,从而实质进入“挂起”状态,不参与进程调度,以平顺系统的负载
低级调度(短程调度,进程调度,处理器调度):决定哪个可用进程占用处理器执行
- 按照某种原则把处理器分配给就绪态进程或KLT
- 进程调度程序(分派程序),操作系统中实现处理器调度的程序,是操作系统的最核心部分
- 处理器调度策略的优劣直接影响到整个系统的性能
- 功能:
- 记住进程或内核级线程的状态
- 决定某个进程或KLT什么时候获得处理器,以及占用多长时间
- 把处理器分配给进程或KLT
- 收回处理器
选择处理器调度算法的原则
- 资源利用率:使得CPU或其他资源的使用率尽可能高且能够并行工作
- 响应时间:使交互式用户的响应时间尽可能小,或尽快处理实时任务
- 周转时间:提交给系统开始到执行完成获得结果为止的这段时间间隔称为周转时间,应该使周转时间或平均周转时间尽可能短
- 吞吐量:单位时间处理的进程数尽可能多
- 公平性:确保每个用户每个进程获得合理的CPU份额或其他资源份额
优先数调度算法
根据分配给进程的优先数决定运行进程
- 抢占式优先数调度算法
- 非抢占式优先数调度算法
优先数的确定准则
- 进程负担任务的紧迫程度
- 进程的交互性
- 进程使用外设的频度
- 进程进入系统的时间长短
与进入系统时间相关的优先数
- 计算时间短(作业/进程)优先
- 剩余计算时间短进程优先
- 响应比高者(作业/进程)优先
- 响应比=等待时间/进入时间
- 先来先服务:先进入先被选择
- 多用于高级调度;低级调度中,以计算为主的进程过于优越
算法
时间片轮转调度算法
- 根据各个进程进入就绪队列的时间先后轮流占用CPU一个时间片
- 时间片中断
- 时间片的确定:选择长短合适的时间片,过长则退化为先来先服务算法,过短则调度开销大
- 单时间片,多时间片和动态时间片
分级调度算法(多队列策略,反馈循环队列)
- 建立多个不同优先级的就绪进程队列
- 多个就绪进程队列间按照优先数调度
- 高优先级就绪进程,分配的时间片短
- 单个就绪进程队列中进程的优先数和时间片相同
- 分级原则
- 一般分级原则
- 外设访问,交互性,时间紧迫程度,系统效率,用户立场,……
- 现代操作系统的实现模型
- 多个高优先级的实时进程队列,如:硬实时、网络、软实时
- 多个分时任务的进程队列,根据基准优先数和执行行为调整
- 队列数可能多达32-128个
彩票调度算法
- 为进程发放针对系统各种资源(如CPU时间)的彩票;当调度程序需要做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源
- 合作进程之间的彩票交换