在多道程序环境下,进程数目往往多于处理机数目,致使它们竞争使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由进程调度程序完成的。它是操作系统设计的中心问题之一。
一个作业从提交开始,往往要经历三级调度:高级调度、中级调度、低级调度。
高级调度(长程/作业/宏观调度)
- 从外存后备队列中选择作业进入内存就绪队列。
- 在批处理系统中,大多配有作业调度。
- 作业调度执行频率较低。
中级调度(交换调度)
- 在内存和外存对换区之间按照给定的策略选择进程对换。
- 解决内存紧张问题,提高内存的利用率和系统吞吐量。
低级调度(短程/CPU/进程/微观调度)
- 任务是从就绪队列中选择一个进程来执行并由分派程序(Dispatcher)分配处理机。
- 是 OS 中最基本的调度。
- 时间尺度通常是毫秒级的,由于低级调度算法的频繁使用,要求在实现时做到高效。
- 常采用非抢占(非剥夺)方式和抢占(剥夺)方式两种。
三级调度之间的联系:
- cpu利用率
CPU是计算机系统中最重要和昂贵的资源之一,所以应尽可能使CPU保持“忙”状态,使这一资源利用率最高。
- 系统吞吐量
表示单位时间单位内CPU完成作业的数量
- 周转时间
周转时间 = 作业完成时间 - 作业提交时间
- 等待时间
是指进程处于等处理及状态的时间之和。
- 响应时间
是指从用户提交到首次产生响应产生的时间。
- 先来先服务(FCFS)调度算法
- 短作业优先(SJF)调度算法
- 优先级调度算法
- 高响应比优先调度算法
- 时间片轮换调度算法
- 多级反馈队列调度算法(集合了前几种算法的有点)
文章来源: 进程管理之处理机调度