题目: 处理机调度
一.课程设计目的
实现处理机调度模块功能
二.课程设计内容与要求
(1)采用具有二级调度的调度队列模型。其中作业调度采用先来先服务策略,进程调度采
用时间片轮转调度算法。
(2)利用银行家算法避免死锁。
1.系统总共运行 100 个作业。为每个进入后备队列的作业创建一个 JCB,内容包括:作
业标识、预计运行时间、资源需求等。其中预计运行时间和资源需求随机生成(1—20 个
时间片,A 资源 0-5,B 资源 0-3,C 资源 0-4)。
2.系统开始从后备队列中调入 10 个作业进入系统。以后每完成一个作业就从后备队列
中调入一个,直到所有作业完成。
3.系统为每个作业创建一个进程,按 JCB 分配系统资源。共有 3 类系统资源,其中 A
类资源 5 0 个,B 类资源 30 个,C 类资源 40 个)。
4.进程在运行过程中(即每个时间片内),可能会申请新的资源(申请的各类资源个数
均不超过 2 )。用银行家算法控制资源的分配,避免死锁。注意,每个进程申请各类资源
的数目不能超过系统资源总数的二分之一。
5.创建三个阻塞队列 A、B、C,分别记录因资源请求而阻塞的进程。
6.可视化编程,形象地展现进程运行的状态。
三、实验主要仪器设备和材料
实验环境
硬件环境:
软件环境:语言编程环境
1
开发环境:
四.课程设计流程图
开始
后备队列
系统
处理机空
转?
进程处理 请求资源? 阻塞队列
时间片结
束?
进程结束?
进程结束?
请求处理
FIFO
Y
N
Y,放入
进程处理
N
Y
N
N
进程结束
Y
Y
调入作业
2
五.程序清单
!"!
# $#%&'
($'
)*+$)*,+'--)*.+表示进程对资源.的最大需求
)*+$)*,+'--)*.+表示进程以获得资源.
的数量
)*+$)*,+'--尚需资源矩阵
/#
('--作业标志
'--作业名
0'--服务时间
0'--到达时间
'--剩余服务时间
1'--阻塞时获得资源变成就绪状态标志
2'
34/#56$34/#5%&'--后备队列
34/#56$34/#5%&'--就绪队列
34/#5 78$34/#5%&'--阻塞8队列
34/#5 7#$34/#5%&'--阻塞#队列
34/#5 7$34/#5%&'--阻塞队列
)+$),+9*,*2'--分别是资源8*#*和它们的数量
/#)+. $/#)+'
!%&
:;%&'
2
00!<% .*=08&
--初始化
>8%??&'
@$@%&'
1%$'4'AA&
3
. )+>($'
. )+>$?作业?A'
. )+>0$>B%*&'
)*+$>B%*9&'--最大需求矩阵
)*+$>B%*,&'
)*+$>B%*&'
. )+>0$'
. )+>$. )+>0'
2
2
00 7% .*=08&
1% (>C><5&
($0>C:,% (>C&'
1% (>C><$$&
>8%?请输入时间片D?&'
>8%=0>B<&'
>C$ >C%&'
2
1%(4$EE(5&
>8%?时间片大小不合法D?&'
>8%=0>B<&'
>C$ >C%&'
2
%&'
2
0%&
$'
1%$'4'AA&
6>=6%. )+&'
%6>D$EE6>D$&
--将到达时间早于现在时间的且就绪队列中元素小于个时将其加入就绪队列
%1*&'
--6%6&'
4
1%6>$$EE6>F7%&>05&
1% 78>$$GG 7#>$$GG 7>
$$&
>8%>C%&&'
>8%?处理机处理空转 ?&'
>8%=0>B<&'
AA'
2
7%&'
2
/#$/#%&'
$6>H6%&'--提取就绪队列的第一个元素
1%)>(*+$$)>(*+&
1%)>(*+$$)>(*+&
1%)>(*+$$)>(*+&
1%>5$(GG>0
5$(&
>I$('--服务时间减去相应的时间片
>8%?时间"作业名"服务总时间"剩余
服务时间 状态 ?&'
>8%=0>B<&'
>8%&'
>8%?II?&'
>8%%A(&&'
>8%??&'
>8%>&'
>8%??&'
>8%>0&'
>8%??&'
>8%>&'
1%>$$&
>8%?进程结束 ?&'
>8%?运行中 ?&'
>8%=0>B<&'
A$('--当前时间加上时间片
1%>D$&
5