实验五:进程调度Word下载.doc
- 文档编号:3643243
- 上传时间:2023-05-02
- 格式:DOC
- 页数:10
- 大小:160KB
实验五:进程调度Word下载.doc
《实验五:进程调度Word下载.doc》由会员分享,可在线阅读,更多相关《实验五:进程调度Word下载.doc(10页珍藏版)》请在冰点文库上搜索。
模拟进程调度,给出按照算法先来先服务FCFS、轮转RR(q=1)、最短进程优先SPN、最短剩余时间SRT、最高响应比优先HRRN进行调度各进程的完成时间、周转时间、响应比的值。
三、实验环境
PC+LinuxRedHat操作系统
GCC
四、实验原理及实验思路
1、FCFS先来先服务也可以称为是FIFO先进先出。
此策略是当前正在运行的进程停止执行时,选择在就绪队列中存在时间最长的进程运行。
这种策略执行长进程比执行短进程更好。
2、轮转这种策略是以一个周期性间隔产生时钟中断,当中断发生时,当前正在运行的进程被置于就绪队列中,然后基于FCFS策略选择下一个就绪作业运行,目的是为了减少在FCFS策略下短作业的不利情况。
3、SPN最短进程优先这种策略是下一次选择所需处理时间最短的进程。
是非抢占策略,目的也是为减少FCFS策略对长进程的偏向。
4、SRT最短剩余时间这种策略下调度器总是选择预期剩余时间最短的进程。
是抢占策略。
5、HRRN最高响应比优先当当前进程完成或被阻塞时,选择响应比R最大的就绪进程,R=(w+s)/s其中w:
等待处理器的时间,s:
期待的服务时间。
这样长进程被饿死的可能性下降。
五、流程图
六、源代码
#include<
stdio.h>
math.h>
voidFCFS(floatAtime[],floatStime[]);
voidSJF(floatAtime[],floatStime[]);
voidRR(floatAtime[],floatStime[]);
voidHRN(floatAtime[],floatStime[]);
main()
{
charc;
inti;
floatAtime[5]={0,2,4,6,8};
floatStime[5]={3,6,4,5,2};
for(i=0;
i<
5;
i++)
printf("
%5.2f"
Atime[i]);
\n"
);
Stime[i]);
scanf("
%c"
&
c);
switch(c)
{case'
F'
:
FCFS(Atime,Stime);
break;
case'
S'
SJF(Atime,Stime);
R'
RR(Atime,Stime);
H'
HRN(Atime,Stime);
default:
error"
}
voidFCFS(floatAtime[],floatStime[])
floatCtime[5];
floatZZtime[5];
floatDQtime[5];
Ctime[0]=Stime[0];
for(i=1;
Ctime[i]=Stime[i]+Ctime[i-1];
Ctime[i]);
i++){
ZZtime[i]=Ctime[i]-Atime[i];
ZZtime[i]);
{DQtime[i]=ZZtime[i]/Stime[i];
DQtime[i]);
voidSJF(floatAtime[],floatStime[])
inti,j;
floatm,n;
ZZtime[0]=Ctime[0]-Atime[0];
DQtime[0]=ZZtime[0]/Stime[0];
for(j=1;
j<
=3;
j++)
=4-j;
if(Stime[i]>
Stime[i+1])
m=Stime[i];
Stime[i]=Stime[i+1];
Stime[i+1]=m;
n=Atime[i];
Atime[i]=Atime[i+1];
Atime[i+1]=n;
Ctime[i]=Stime[i]+Ctime[i-1];
DQtime[i]=ZZtime[i]/Stime[i];
voidRR(floatAtime[],floatStime[])
inti,j,h,f,q;
floatt[5],k;
%d"
q);
if(q<
Stime[i])
{
for(j=0;
k=Stime[j]/q-1;
t[j]=Atime[j]+k*(5/q)+1;
for(h=0;
h<
h++)
{
if(Stime[h]<
k)
{
f=h;
}
else
Ctime[j]=t[j];
}
Ctime[j]=t[j]-(k-Stime[f]);
}
else
Ctime[0]=Stime[0];
for(i=1;
Ctime[i]=Stime[i]+Ctime[i-1];
ZZtime[i]=Ctime[i]-Atime[i];
for(i=0;
voidHRN(floatAtime[],floatStime[])
inti,j,t=1;
floatm,n,k,f;
=3-t;
=4-j-t;
k=Ctime[j-1]-Atime[i];
f=Ctime[j-1]-Atime[i+1];
if(k/Stime[i]<
f/Stime[i+1])
t++;
七、运行结果及其分析
当程序运行,打印出5个进程到达时间:
02468和服务时间:
36452时,然后再输入要选择的调动服务算法F:
FCFSS:
SJFR:
RRH:
HRN可得到不同的完成情况。
5个进程完成时间,周转时间,响应比如下面各图中每行所示:
FCFS的完成情况:
SJF的完成情况
HRN的完成情况:
在RR的选择运行过程中出现未知问题不能显示,所以暂时没有图片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 进程 调度