操作系统---进程调度算法相关习题

例题1:某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为1us。在T时刻就绪队列中有3个进程P1、P2和P3,其在就绪队列中的等待时间、需要的 CPU 时间和优先权如下表所示。

若优先权值大的进程优先获得CPU,从T时刻起系统开始进程调度,则系统的平均周转时间为()

由优先级大的进程先获得CPU可知进程的执行顺序为P2-->P3-->P1。

画图更好理解,题目中讲在T时刻有3个进程,且其等待时间分别为15,18,30,就像图中所画:

再根据非抢占式的进程调度,可得到:

P2的周转时间为1+15+24=40us;

P3的周转时间为18+1+24+1+36=80us;

P1的周转时间为30+1+24+1+36+1+12=105us;

平均周转时间为(40+80+105)/3=225/3=75us,因此选择选项D。

例题2:进程P0、P1、P2和P3 进入就绪队列的时刻、优先级(值越小优先权越高)及 CPU执行时间如下表所示。

若系统采用基于优先权的抢占式进程调度算法,则从0ms时刻开始调度,到4个进程都运行结束为止,① 发生进程调度的总次数为():

解析:由于采用抢占式的进程调度所以进程调度的顺序为:

① 0ms时刻,只有P0进入就绪队列,先执行P0,10ms后,P1,P2进入就绪队列,且其优先级P2>P0(值越小优先权越高),P2抢占CPU的使用权:

② P2执行5ms后,优先权更高的P3进入就绪队列,所以P2让出CPU使用权。之后没有比P3优先权更高的进程,所以P3一直执行到执行时间结束(进程结束)。

③ P3执行完成,剩余的未完成的进程中优先级最高的为P2,P2继续执行,直到进程结束:

④ 接下来执行的进程为P0,因为优先级:P0>P1:

⑤ 最后执行优先权最低的P1:

进程调度次数为6次。

② P0,P1,P2,P3的平均周转时间为():

每个进程的周转时间为:“CPU剩余执行时间”为0的行的"结束时间"减去题目表格中的“开始时间”,即:

P0周转时间:130 - 0 =130

P1周转时间:190 - 10 = 180

P2周转时间:40 - 10 =  30

P3周转时间:25 - 15 = 10

平均周转时间:130+180+30+10/4=350/4=87.5

例题3:系统采用二级反馈队列调度算法进行进程调度。就绪队列 Q1采用时间片轮转调度算法,时间片为10ms;就绪队列Q2采用短进程优先调度算法;系统优先调度 Q1队列中的进程,当 Q1为空时系统才会调度 Q2中的进程;新创建的进程首先进入Q1;Q1中的进程执行一个时间片后,若未结束,则转入Q2。若当前Q1,Q2为空,系统依次创建进程P1,P2后即开始进程调度,P1,P2需要的CPU时间分别为30ms和20ms,则进程P1,P2在系统中的平均等待时间为()

进程P1,P2依次创建后进入队列Q1,根据时间片调度算法的规则,进程P1,P2将依次被分配10ms的CPU时间,两个进程分别执行完一个时间片后都会被转入队列Q2,就绪队列Q2采用短进程优先调度算法,此时 P1还需要 20ms 的 CPU 时间,P2还需要 10ms 的 CPU 时间,所以P2会被优先调度执行,10ms后进程P2执行完成,之后P1再调度执行,再过20ms后P1也执行完成。运行图表述如下:

进程 P1、P2的等待时间分别为图中的虚横线部分,平均等待时间=(P1的等待时间 + P2的等待时间)/2=(20+10)/2=15

例题4:假设某计算机系统有4个进程,各进程的预计运行时间和到达就绪队列的时刻见下表(相对时间,单位为“时间配额”)。试用时间片轮转调度算法进行调度(时间配额为2)。分别计算各个进程的调度次序及平均周转时间。

时间片轮转算法按就绪队列的FCFS进行轮转,在时刻2,P1的时间片结束,P1被挂到就绪队列队尾,队列顺序为P2,P3,P1,此时P4还未到达。

P4在3时刻进入就绪队列,排在P1进程后。3时刻的时候,P2进程执行到一半,所以2执行完后,排在P4后面。

所以前两轮的执行顺序是:P1-->P2-->P3-->P1-->P4-->P2-->P3-->P1,各进程轮流执行2个时刻的时间:

设计一个按时间片轮转法实现进程调度的程序。 [提示]: (1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进程控制块的格式为: 进程名 指针 要求运行时间 已运行时间 状态 其中, 进程名——作为进程的标识,假设五个进程进程名分别为P1,P2,P3,P4,P5。 指针——进程按顺序排成循环队列,用指针指出下一个进程进程控制块的首地址,最后一个进程的指针指出第一个进程进程控制块首地址。 要求运行时间——假设进程需要运行的单位时间数。 已运行时间——假设进程已经运行的单位时间数,初始值为“0”。 状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R”表示。当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 每次运行所设计的进程调度程序前,为每个进程任意确定它的“要求运行时间”。 (3) 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到P2执行,则有: 标志单元中内容为K2 , K1 P1 K2 P2 K3 P3 K4 P4 K5 P5 K2 K3 K4 K5 K1 2 3 1 2 4 1 0 0 0 0 R R R R R PCB1 PCB2 PCB3 PCB4 PCB5 (4) 进程调度总是选择标志单元指示的进程运行。由于本实习是模拟进程调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行: 已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。 请同学注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。在这时省去了这些工作,仅用“已运行时间+1”来表示进程已经运行满一个时间片。 (5) 进程运行一次后,应把该进程进程控制块中的指针值送到标志单元,以指示下一个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间¹已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”(E)且退出队列。此时,应把该进程进程控制块中的指针值送到前面一个进程的指针位置中。 (6) 若“就绪”状态的进程队列不为空,则重复上面的(4)和(5)的步骤,直到所有的进程都成为“结束”状态。 (7) 在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程进程名以及运行一次后进程队列的变化。 (8) 为五个进程任意确定一组“要求运行时间”,运行进程调度程序,显示或打印逐次被选中的进程名以及进程控制块的动态变化过程。 模拟多资源银行家算法 实习检查: (1)程序运行后,由检查教师输入系统初态(包括进程名和各进程已获得资源、尚需资源及当前系统可用资源情况。注意:进程数目和资源种类由检查教师动态确定); (2)由检查教师输入此时某一进程申请各资源情况,使用银行家算法,检测该请求是否安全。若安全,则显示分配后的资源分配矩阵、进程资源需求矩阵,当前可用资源情况,以及安全序列。若不安全,给出警告信息! 作业调度采用FCFS、SJF、响应比高者优先算法模拟设计作业调度程序。 [提示]: (1)每个作业的JCB中包括作业名、提交时刻、要求运行时间; (2)假设第一个作业提交时,系统中无正在执行的作业,即第一个作业一提交系统便调度该作业。 要求: 输入:一批作业中各作业的作业名、提交时刻、要求运行时间; 选择不同的作业调度程序运行; 输出:相应作业调度算法下,各作业的等待时间、周转时间、带权周转时间,这批作业的调度顺序、平均周转时间和平均带权周转时间。
SRTF(Shortest Remaining Time First)算法是一种短作业优先进程调度算法,其规则如下: 1. 当一个进程进入就绪队列时,系统会计算出该进程还需要执行的时间。 2. 在就绪队列中选择剩余时间最短的进程先执行。 3. 如果另一个进程进入就绪队列,其剩余时间比当前正在执行的进程还要短,那么系统会立即切换到该进程执行。 4. 如果有多个进程剩余时间相同,则按照先进先出的原则进行调度。 下面是一个例题: 假设有 4 个进程,它们的到达时间、执行时间和剩余时间如下表所示: | 进程 | 到达时间 | 执行时间 | 剩余时间 | |------|----------|----------|----------| | P1 | 0 | 5 | 2 | | P2 | 1 | 3 | 1 | | P3 | 2 | 4 | 4 | | P4 | 3 | 2 | 2 | 按照 SRTF 算法进行调度,其执行过程如下: 1. 时间片 0,P1 进入就绪队列。 2. 时间片 1,P2 进入就绪队列,P1 剩余时间为 4,P2 剩余时间为 2,执行 P2。 3. 时间片 2,P1 剩余时间为 3,P4 进入就绪队列,P4 剩余时间为 2,执行 P4。 4. 时间片 3,P1 剩余时间为 2,P4 剩余时间为 1,执行 P1。 5. 时间片 4,P3 进入就绪队列,P1 剩余时间为 1,执行 P1。 6. 时间片 5,P3 剩余时间为 3,执行 P3。 7. 时间片 6,P3 剩余时间为 2,执行 P3。 8. 时间片 7,P3 剩余时间为 1,执行 P3。 9. 时间片 8,所有进程执行完毕。 根据上述执行过程,可以发现 SRTF 算法可以有效地缩短进程的等待时间和响应时间,提高系统的吞吐量和响应速度。但是,由于它需要不断地计算进程剩余时间,因此会增加系统的开销。此外,在实际应用中,需要根据实际情况选择合适的进程调度算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值