内容摘要:
进程调度分为:
长程调度,又称作业调度,用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行
短程调度,又称进程调度,用来决定就绪队列中的哪个进程应获得处理机,然后再由分派程序把处理机分配给该进程的具体操作
中程调度,从就绪挂起到就绪,从阻塞挂起到阻塞,引入中程调度的主要目的,是为了提高内存利用率和系统吞吐量
一个作业到达时首先被放进后备队列。
作业调度按一定的算法从后备队列中选择到达的资源能得到满足的作业装入内存,使作业有机会去占用处理器执行。
所谓的有机会,是因为此后还需要进程调度程序来进行调度,决定哪个进程优先获得CPU,什么时候获得CPU,分配多少CPU时间片,能不能抢占等等,也就是说,调度程序才是大脑,CPU只是一个执行部件而已。
于是,作业调度选中了一个作业且把它装入内存时,就会为该作业创建一个进程,若有多个作业被装入内存,则内存中同时存在多个进程,这些进程的初始状态为就绪状态,放在就绪队列中,然后,由进程调度程序根据自己的调度算法来选择当前可占用处理器的进程,进程运行中会出现各种状态,有以下些状态会引起调度程序的重新调度决策:
1.在创建一个新进程时之后,需要决定运行父进程还是子进程
2.在一个进程运行结束让出CPU使用权的时候,需要重新调度一个进程给CPU
3.当一个进程阻塞在I/O信号或者信号量或其他上面时,必须选择另外一个进程运行。
4.在一个I/O中断发生时,某些被阻塞的等待该I/O的程序可能已经进入就绪态,需要重新决策。
调度算法分为抢占式和非抢占式算法两类,这里区分一下:
非抢占式:意味着调度程序调度某进程运行,分配时间片,直到时间片完或者该进程自己由于某些原因阻塞才回打断其执行,否则调度程序不能因为优先级等原因强行调度另一个进程来抢占原有进程的CPU资源。
抢占式:意味着调度程序虽然调度了某个进程运行,但是此后调度程序随时可以根据其算法让另一个符合优先执行的进程强制剥夺其CPU资源。
如此,作业调度与进程调度相互配合实现多道作业的并行执行。
那么为什么要制定作业调度算法呢?为什么要搞一个后备队列呢?一个作业到来后直接把它扔到就绪队列中不就好了?实际上我们不这样做的原因是就绪队列的空间可能是有限的。比如题目说的有两个作业进程,说明就绪队列的容量是2,一个作业运行,一个作业就绪。由于不是每个作业都能迅速达到就绪态,所以就需要作业调度来选择进入系统(就绪态)的作业。
所用公式如下:
一、题目描述:
有一个具有两道作业的批处理系统,作业调度采用短作业优先的调度算法,进程调度采用以优先数为基础的抢占式调度算法,在下表所示的作业序列,作业优先数即为进程优先数,优先数越小优先级越高。(1)列出所有作业进入内存时间及结束时间。 (2)计算平均周转时间。
[图片描述]
解析:
首先我们来分析题意,第一句话很重要,一个具有两道作业的批处理系统,这句话是什么意思呢?在引入了多道程序设计计数后,内存可以同时存放多个用户作业,并使它们交替运行,轮流使用cpu和I/O设备,使系统资源利用率提高。题目告诉我们是两道作业的批处理系统,意思就是内存里最多只能同时存在两道作业,在内存里有两道作业时,此时在到达的作业只能在后备队列里储存。作业调度和进程调度好理解,在此不做过多解释。
1、10:00,A作业到达,进入系统 开始运行。
2、10:20,B作业到达,系统内存中只有一道作业A,B作业进入内存,此时A运行20min,还剩20min,由于B作业的优先数小,即优先级高,则作业A进入就绪状态,作业B开始运行。
3、10:30,C作业到达,内存中已有两道作业,则在后备队列中等待被作业调度程序调度,A等待10min,剩20min,继续等待,B运行10min,还剩20min,继续运行。
4、10:50, D作业到达,B作业完成,内存中只剩下作业A,剩20min,作业D与作业C相比,作业D的运行所需时间少被调到进内存,内存中的A和D相比,A的优先级高,A继续运行。
5、11:10,作业A运行完成,作业C被调度进内存,内存中有作业D和作业C,C的优先级比D高,C先运行。
6、12:00 ,作业C完成,D运行。
7、12:20,作业D完成。
二、题目描述:
在一个单CPU的计算机系统中,有两台外部设备R1、R2和三个进程P1、P2、P3。系统采用可剥夺式优先级的进程调度方案,且所有进程可以并行使用I/O设备,三个进程的优先级、使用设备的先后顺序和占用设备时间如下表所示:
假设操作系统的开销忽略不计,三个进程从投入运行到全部完成,CPU的利用率约为()%;R2的利用率约为()%(设备的利用率指该设备的使用时间与进程组全部完成所占用时间的比率)。
正确答案:90% 70%
解析:由于使用处理机和输入输出设备时采取可剥夺式多任务并行工作方式,所以在分析每个进程都需要多长时间完成时,可以采用优先级高的进程先分析的方法。高优先级的进程有优先获取资源的权利,因而最高优先级的进程P1发出申请设备的请求会立即得到响应,各设备占用时间为:
从图可以看出P2在使用R1设备20ms后,要使用CPU30ms,但当其运行10ms后, P1要使用CPU,由于系统采用可剥夺方式调度,P1优先级高,所以将P2暂停,让P1先运行。同理,P3开始就使用CPU,但在运行20ms后,要让给高优先级的进程P2和 P1。P1从投入运行到完成需要80ms,而P2、P3由于等待资源,运行时间都延长为100ms。 CPU在90ms~100ms共10ms时间内没有利用,所以利用率为90/100=90%,同样计算得R2的利用率为70/100=70%,R1的利用率为60%。
三、题目解析:
解析:
8 : 00作业1到达,占有资源并调入主存运行。
8: 20作业2和3同时到达,但作业2因分不到打印机,只能在后备队列等待。作业3资源满足,可进主存运行,并与作业1平分CPU时间。
8 : 30作业1在8: 30结束,释放磁带与打印机。但作业2仍不能执行,因不能移动而没有30KB的空闲区,继续等待。作业4在8: 30到达,并进入主存执行,与作业3分享CPU
8 : 35作业5到达,因分不到磁带/打印机,只能在后备队列等待。
9: 00作业3运行结束,释放磁带机。此时作业2的主存及打印机均可满足,投入运行。作业5到达时间晚,只能等待。
9 : 10作业4运行结束,作业5因分不到打印机,只能在后备队列继续等待。
9: 15作业2运行结束,作业5投入运行。
9:30作业全部执行结束。
平均周转时间为:(30+55+40+40+55)/5=44。
四、题目解析:
一个批处理系统中,有两个作业进程。有一个作业序列,到达时间和估计服务时间如下。系统采用最高响应比优先的作业调度算法,作业进程的调度采用短作业优先的抢占式调度算法。请列出各作业的执行情况表。
**
**
解析如下:
10:00:
作业A到达,由于就绪队列空,作业调度进系统,进程调度执行
10:10:
作业B到达,就绪队列未满,作业调度进系统,由于B此时是最短作业,所以进程调度A到就绪态,调度B执行
作业A已运行10分钟,剩余25分钟
10:15:
作业C到达,响应比为1,计算过程如下
(
(
(
60
−
15
−
45
)
+
45
)
)
/
45
,
等
待
作
业
调
度
进
系
统
(((60-15-45)+45))/45,等待作业调度进系统
(((60−15−45)+45))/45,等待作业调度进系统
作业B继续执行,已运行5分钟,剩余25分钟
作业A剩余25分钟,位于就绪队列
10:20:
作业D到达,响应比为1,计算如下
(
(
(
40
−
20
−
20
)
+
20
)
)
/
20
,
等
待
作
业
调
度
进
系
统
(((40-20-20)+20))/20,等待作业调度进系统
(((40−20−20)+20))/20,等待作业调度进系统
作业C等待5分钟,响应比R=1+5/45 = 1.11
作业B继续执行,已运行10分钟,剩余20分钟
作业A剩余25分钟,位于就绪队列
10:30:
作业E到达,响应比为1,等待作业调度进系统
作业D等待10分钟,响应比R=1+10/20 = 1.5
作业C等待15分钟,响应比R=1+15/45 = 1.3
作业B继续执行,已运行20分钟,剩余10分钟
作业A剩余25分钟,位于就绪队列
10:40:
作业E等待10分钟,响应比R=1+10/30 = 1.3
作业D等待20分钟,响应比R=1+20/20 = 2.0
作业C等待25分钟,响应比R=1+25/45 = 1.6
作业D具有最高响应比,D被作业调度进系统,由于是最短作业,进程调度D执行
作业B运行结束
作业A剩余25分钟,位于就绪队列
11:00:
作业E等待30分钟,响应比R=1+30/30 = 2.0
作业C等待45分钟,响应比R=1+45/45 = 2.0
两者响应比相同,由于C先到达,所以作业调度C进系统
作业D运行20分钟,运行结束
作业A剩余25分钟,服务时间比C小,进程调度A执行
11:25:
作业E等待55分钟,响应比R=1+55/30 = 2.8,作业调度进系统
作业C剩余45分钟,位于就绪队列
作业A运行25分钟,运行结束
因为C服务时间比E长,所以进程调度E执行
11:55:
作业C剩余45分钟,位于就绪队列
作业E运行30分钟,运行结束
12:40:
作业C运行结束
各作业运行时间段为:
A 10:00-10:10 11:00-11:25
B 10:10-10:40
C 11:55-12:40
D 10:40-11:00
长,所以进程调度E执行
11:55:
作业C剩余45分钟,位于就绪队列
作业E运行30分钟,运行结束
12:40:
作业C运行结束
各作业运行时间段为:
A 10:00-10:10 11:00-11:25
B 10:10-10:40
C 11:55-12:40
D 10:40-11:00
E 11:25-11:55