学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.15
所属科目:高中信息技术
计算机运行多个任务(又称进程)时,需要进行调度。有的进程需要优先响应,例如用户的交互操作,此时就需要暂停当前运行的进程,让CPU先执行需要优先响应的进程,这称为抢占。操作系统需要设计调度算法,来决定CPU运行进程的顺序。
优先级抢占式调度算法是一种简单的调度算法,规则如下:
1)将进程分为m个优先级,设置m个等待队列,分别对应每一级优先级。
2)每个进程具有三个要素:到达时间,运行所需时长,优先级数(数越大优先级越高)
3)相同优先级的进程,按照先到先服务的原则依次执行。
4)同一时刻中,先将到达的进程都加入队列,再按照优先级进行分配
5)只有当k级队列为空的时候,才会为k-1级队列队首的进程分配时间。
6)进程Pi运行时,如果有优先级更高的进程Pj到达,则立即发生抢占,先执行Pj,并将进程Pi剩余未执行完的部分,重新加入Pi优先级对应的队列末尾,等待继续执行。
编写程序模拟CPU分配计算资源的过程,已知按照到达时间升序排序的进程数据(包含到达时间、运行时长、优先级),计算并输出每个进程最终处理完成的时间。(时间单位均为毫秒)
请回答下列问题:
(1)有4个进程A、B、C、D如表1所示。

进程

到达时间

运行时长

优先级

A

0

7

1

B

2

4

2

C

4

1

3

D

5

4

2

表1


由优先级抢占式调度算法的规则可知,0毫秒时进程A到达并执行;2毫秒时进程B到达,B的优先级高于A,发生抢占,A剩余的5毫秒回到队列1,B开始执行;4毫秒时进程C到达,C的优先级高于B,发生抢占,B剩余的2毫秒回到队列2,C开始执行;则进程D执行完的时刻为_______
(2)模拟实现优先级抢占式调度算法Python程序如下,请在划线处填入合适的代码。

def insert(p, remain):

data[p][2]=remain             #更新进程剩余的运行时间

lvl=data[p][3]                       #获取p进程的优先级

if queinfo[lvl][0]=-1:

queinfo[lvl][0]=p

if queinfo[lvl][1]!=-1:

data[queinfo[lvl][1]][-1]=p

queinfo[lvl][1]=p

m=int(input('设置优先级的数量m:'))

# 输入列表data存储进程,data中的节点包含信息有[名称,到达时间,运行时长,优先级],

代码略

# 进程已经按到达时间升序排序

#例如:data=[['A',0,7,1],['B',2,4,2],['C',4,1,3],['D',5,4,2]]

for i in range(len(data)):

data[i].append(-1)

queinfo=[[-1, -1] for i in range(m+1)]

insert(0, data[0][2])       #将第1个进程加入队列

time=data[0][1] 0

cnt=1       #所有队列内等待的进程总数

idx=1

lvl=m

while cnt>0:

if queinfo[lvl][0]!=-1:

cur=queinfo[lvl][0]               

queinfo[lvl][0]=data[queinfo[lvl][0]][-1]

cnt-=1

______

while idx < len(data) and time+data[cur][2]>=data[idx][1]:

if lvl >= data[idx][3] or time+data[cur][2]==data[idx][1]:

insert(idx, data[idx][2])

cnt+=1

idx +=1

elif time+data[cur][2]> data[idx][1]:

insert(idx, data[idx][2])       #抢占的进程也先入队

cnt +=1

inset(cur, ______)

cnt +=1

time=data[idx][1]

lvl =data[idx][3]

idx+=1

flag =True

break

if flag==False:

time = time+data[cur][2]

print("时刻", time, ":进程", data[cur][0], "完成")

lvl = m

if     ______       :       #仍然有未到达的进程等待入队

insert (idx, data[idx][2])

cnt +=1

time=data[idx][1]

idx += 1

else:

lvl-=1

if lvl==0:

lvl=m


(3)若将以上程序中insert函数内的加框处代码删除,会导致某些情况下无法得到符合程序功能的结果,下列4组数据中能测试出这一问题的是______(单选,填字母)
   
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交