基本概念
调度
按层次分类
调度:由于资源有限,无法同时处理许多事物,因此需要通过某种规则来决定任务执行的顺序。
作业从进入系统到最后的完成阶段需要经过三级调度:高级调度、中级调度、低级调度
高级调度
根据一定的算法,从输入的一批作业中选出若干的作业,分配必要的资源,如外设、内存,为他建立相应的用户作业进程和其服务的系统进程(PCB),最后把他的程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后做善后处理工作。
中级调度
为使内存中同时存放的进程数目不致太多,有时需要把某些进程从内存中移到外存上,以减少多道程序的数目,为此建立了中级调度
低级调度
将CPU分派给就绪队列中的 一个进程,执行低级调度功能的程序称作进程调度程序,由他实现CPU在进程间的切换。
最基本的一种调度,在一般的操作系统中都必须有,他的策略优劣直接影响整个系统的性能
挂起状态
进程调度
也就是低级调度,就是按照某种算法从就绪队列中选择一个进程为其分配处机
功能
时机
进程在操作系统内核程序临界区中不能进行调度和切换
临界资源:一个时间段只允许一个进程使用资源,各进程需要互斥地访问临界资源
临界区:访问临界资源的代码
内核临界区:一般是用来访问某种内核数据结构的,如进程的就绪队列(由各就绪进程的PCB组成)
方式
进程的切换与过程
作业调度
作业状态
- 提交状态:用户向系统提交一个作业时的状态
- 后备状态:用户作业经输入设备送入输入井中存放,等待进入内存时的状态。
- 执行状态:作业分配到所需的资源,被调入内存,且在处理机上执行相应的程序时所处的状况,此时改作业真正处于处于活动状态。
- 完成状态:作业完成计算任务,最后由系统回收分配给它的全部资源,准备退出系统时的作业状态。
作业控制块
- 为了管理和调度作业,系统为每个作业设置了一个作业控制快,用以记录作业的有关信息。
- JCB是作业在系统中存在的标志。
- 系统利用JCB的抽象,通过JCB实施对作业管理和调度
作业调度的功能
调度算法
相关概念
CPU利用率
系统吞吐量
单位时间内完成的作业数量
吞吐量 = 总共完成了多少道作业 / 总共花了多长时间
周转时间
用户的作业从提交到系统,到作业被完成为止这段时间间隔
周转时间 = 作业完成时间 - 作业提交时间
平均周转时间 = 各个作业周转时间之和 / 作业数
带权周转时间 = 作业周转时间 / 作业实际运行的时间 =( 作业完成时间 - 作业提交时间 )/ 作业实际运行时间
平均带权周转时间 = 各作业带权周转时间之和 / 作业数
等待时间
响应时间
FCFS(先来先服务)
SJF(短作业优先算法)
HRRN(高响应优先算法)
RR(时间片轮转调度算法)
- 如果时间片太大,使得每个进程都可以在一个时间片内完成,则会退化为先来先服务调度算法,且会增大进程响应时间,因此时间片不能太大
- 如果时间片太小,会导致进程频繁切换,系统花费大量时间处理进程切换,从而导致实际执行进程的时间比例减少,因此时间片不能太小
如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。
另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。
一般来说,设计时间片时要让切换进程的开销占比不超过1%
优先级算法
非抢占式
抢占式
多级反馈调度算法
前置
What
系统调用和库函数
系统调用背后的过程