2.2.1 调度的概念
1.调度的基本概念
在多道程序系统中,进程的数量往往多于处理机的个数,因此进程争用处理机的情况在所难免。处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
2.调度的层次 高级调度到低级调度的频率逐渐升高
1)作业调度
高级调度
2)中级调度
内存调度 作用是为了提高内存的利用率和系统而吞吐量,将暂时不能运行的进程调到外存,此时进程称为挂起态
,若内存空闲时,将具备运行条件的进程调入内存,并修改状态为就绪态
3)进程调度
低级调度 最基本,必不可少
2.2.2 调度的时机、切换与过程
现代操作系统中,不能进行进程调度和切换的情况有以下几种:
1) 在处理中断的过程中
2) 进程在 操作系统 内核程序临界区中 普通临界区可以进程调度
3) 其他需要完全屏蔽中断的原子操作
应当进行进程调度和切换的情况如下:
1) 发生引起调度条件且当前进程无法继续运行下去时,可以进行调度与切换,若系统之在这种情况下进行调度与切换,是为非剥夺调度。
2) 中断处理结束或自陷处理结束。
2.2.3 进程的调度方式
1. 非剥夺调度方式(非抢占式) 即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程完成或发生某种事件进入阻塞态时才获得处理机。简单、系统开销小,适合大多数批处理系统 不适合分时系统和大多数实时系统。
2. 剥夺调度方式(抢占式) 若有某个更为重要或紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给这个更为重要或紧迫的进程。采用剥夺式的调度,对提高系统吞吐率和响应效率都有明显的好处。
2.2.4 调度的基本准则
不同调度算法有不同的特性,在选择调度算法时,必须考虑算法的特性,为了比较调度算法的性能,评价指标有以下几点:
1) CPU利用率。 CPU是计算机系统中最重要和昂贵的资源之-一,所以应尽可能使CPU保持“忙”状态,使这一资源利用率最高。
利用率=忙碌的时间/总时间
2)系统吞吐量。 ==表示单位时间内CPU完成作业的数量。==长作业需要消耗较长的处理机时间,因此会降低系统的吞吐量。而对于短作业,它们所需要消耗的处理机时间较短,因此能提高系统的吞吐量。调度算法和方式的不同,也会对系统的吞吐量产生较大的影响。
3)周转时间。 周转时间是指从作业提交到作业完成所经历的时间,是作业等待、在就绪队列中排队、在处理机上运行及进行输入输出操作所花费时间的总和。
作业的周转时间可用公式表示如下:
带权周转时间 = 作业周转时间/作业实际运行时间
周转时间 = 作业完成时间-作业提交时间
平均周转时间 = (作业1的周转时间+..+作业n的周转时间)/n
带权周转时间 = 作业周转时间/作业实际运行时间
平均带权周转时间 = (作业1的带权周转时间+...+作业n的带权周转时间)/n
4)等待时间。 等待时间指进程处于等处理机状态的时间之和
,等待时间越长,用户满意度
越低。 因此,衡量一个调度算法的优劣,常常只需简单地考察等待时间。
5)响应时间。 响应时间指从用户提交请求到系统首次产生响应所用的时间。
2.2.5 典型调度算法
1.先来先服务(FCFS)调度算法
既可以用于作业调度,又可以用于进程调度。
2.短作业优先(SJF)调度算法
3.优先级调度算法优先级用于描述作业运行的紧迫程度
既可以用于作业调度,又可以用于进程调度
按照是否可以剥夺主要分为以下两种:
1)非剥夺式优先级调度算法
2)剥夺式优先级调度算法
按照进程优先级
1)系统进程>用户进程
2)I/O进程>计算型进程
3)交互型进程>非交互型进程
4.高响应比优先调度算法
主要用于作业调度
5.时间片轮转调度算法 主要适用于分时系统
系统将所有进程按照到达时间的先后次序排成一个队列(先来先服务的原则)
,但仅能运行一个时间片,一个时间片后,即使进程并未完成,也必须释放处理机被剥夺
给下一个就绪的进程被剥夺的进程返回到就绪队列的尾部重新排队。
若时间片选择的足够大,时间片轮转法退化为先来先服务算法
6.多级反馈队列调度算法(融合了前几种算法的优点)抢占式调度算法
时间片轮转法和优先级调度法的综合发展
1) 设置多个就绪队列,并赋予不同的优先级,第一级最高,第二级次之。
2) 赋予队列中进程执行时间片的大小各不相同,优先级高的队列时间片小 (第二级队列的时间片是第一级时间片的两倍,第三级时间片的大小是第二级时间片大小的两倍)
3) 一个新进程进入内存后,首先将它放到第一级队列的末尾,**按FCFS等待调度
**当轮到该进程执行时,如果它能在时间片内完成,便可撤离系统,如若不能,跳转至第二级队列的末尾,以此类推
4) 仅当第一级队列为空时,调度程序才会调度第二级队列中的进程
多级反馈队列的优势有以下几点:
1) 短作业优先
2) 周转时间较短
3) 经过前面几个队列得到部分执行,不会长期得不到处理
例题