FCFS算法实验报告Word格式.docx
- 文档编号:15960754
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:7
- 大小:15.89KB
FCFS算法实验报告Word格式.docx
《FCFS算法实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《FCFS算法实验报告Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
PCBhead_input;
//定义初始放入进程的队列的头指针PCBhead_run;
//定义运行程序的头指针
四:
FCFS算法源码及注释:
#defineN20
#include<
conio.h>
iostream>
//输入输出流头文件
fstream>
//文件头文件
usingnamespacestd;
typedefstructpcb//定义进程控制块pcb的数据结构
{
//指向下一进程的指针
}PCB;
//定义执行中进程的头指针
PCB*pcb_input;
staticcharR='
r'
C='
c'
;
unsignedlongcurrent;
//定义当前时间变量
voidinputprocess();
//定义进程进入函数
intreadydata();
//定义进程判断函数
intreadyprocess();
//定义进程准备函数
intrunprocess();
//定义进程运行函数
ofstreamfout("
result.txt"
);
//打开文件result.txt,用于记录结果
intreadyprocess()
while
(1)
if(readydata()==0)//判断是否还有进程没有执行完毕,如果返回结果是1,那么代表没有进
//程要执行了
return1;
//以执行完所有程序,退出
else
runprocess();
//还有程序要执行,执行运行函数
}
intreadydata()//函数准备函数
if(head_input.next==NULL)//判断是否还有没有运行过的进程
if(head_run.next==NULL)//判断是否有进程在运行,有则执行返回值1,
//回到readyprocess函数,无则
return0;
//说明没有进程了,退出
PCB*p1,*p2,*p3,*t;
p1=head_input.next;
//定义p1,使p1等于放入的第一个进程
p2=&
head_run;
//定义p2,使p2等于运行函数的头指针
t=p1;
//定义t,使它和p1相等;
p3=&
head_input;
//定义p3,是它等于放入进程队列的头指针
while(p1->
next!
=NULL)//用循环,找出进程队列里到达时间最小的进程
if(p1->
next->
arrivetime<
p1->
arrivetime)
t=p1->
next;
p3=p1;
//使p3指向t
p1=p1->
if(((unsignedlong)t->
arrivetime<
=current)&
&
(t->
state==R))//判断t所指的进程是否符合条件,
//是则开始运行
cout<
<
"
Time"
current<
Process"
t->
pname<
start,\n"
fout<
p2->
next=t;
p3->
next=t->
//将t从放入的队列中移到
//run队列中;
intrunprocess()//定义运行进程函数//
PCB*p1,*p2;
if(head_run.next==NULL)//判断是否有进程符合条件运行,
//有则执行运行代码,{//无则将当前时间+1;
current++;
p1=head_run.next;
while(p1!
=NULL)//如果运行中的程序未运行完,则继续运行
p1->
runtime--;
runtime<
=0)//如果运行中的程序的runtime为0,
//则说明程序已经运行结束
end.\n"
state=C;
//将p1进程的状态标志为"
C"
完成状态
next=p1->
//将run的头指针指向空
p1=NULL;
//删除p1进程
break;
//结束,跳出
//如果p1没有执行完,
//则继续执行直至结束
voidinputprocess()//--定义建立进程函数//
intnum;
Howmanyprocessesdoyouwanttorun:
//提示输入进程数
cin>
>
num;
p1=&
//让p1等于放入进程的头指针
p2=p1;
//让p2等于p1都等于放入进程的头指针p1->
next=newPCB;
//为p1指向的下一个进程申请空间
//让p1等于它所指向的下一个进程
for(inti=0;
i<
num;
i++)//循环输入num个进程的
\nNo."
i+1<
processinputpname:
pname;
runtime:
//运行时间
\nruntime:
runtime;
arrivetime:
//到达时间
\narrivetime:
arrivetime;
arrivetime<
\n"
state=R;
//初始化状态为"
R"
准备状态
//为下一个进程申请空间
//让p1指向它所指的下一个进程}
next=NULL;
//让最后一个进程所指的下一个进程为空}
voidmain()
current=0;
//初始化时钟current为0;
inputprocess();
//运行进程构造函数
readyprocess();
//运行进程运行函数
getch();
fout.close();
//文件关闭
五:
实验结果:
1:
初始状态:
3No.1processinputpname:
p1
runtime:
20
arrivetime:
1
No.2processinputpname:
p2
23
4
No.3processinputpname:
p3
54
10
2:
具体运行过程
Time1;
Processp1start,
Time21;
Processp1end.
Processp2start,
Time44;
Processp2end.
Processp3start,
Time98;
Processp3end.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FCFS 算法 实验 报告