ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:15.89KB ,
资源ID:3049805      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3049805.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FCFS算法实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FCFS算法实验报告.docx

1、FCFS算法实验报告一:实验题目: 设计一个先来先服务调度算法 二:源程序名:fcfs.cpp,执行程序名:fcfs.exe 三:使用的数据结构及符号说明如下 typedef struct pcb /定义进程控制块pcb的数据结构 char pnameN; /进程名 int runtime; /进程运行时间 int arrivetime; /进程到来时间 char state; /进程状态 struct pcb *next; /指向下一进程的指针PCB; PCB head_input; /定义初始放入进程的队列的头指针PCB head_run; /定义运行程序的头指针 四:FCFS算法源码及注

2、释: #define N 20 #include #include /输入输出流头文件 #include /文件头文件 using namespace std; typedef struct pcb /定义进程控制块pcb的数据结构 char pnameN; /进程名 int runtime; /进程运行时间 int arrivetime; /进程到来时间 char state; /进程状态 struct pcb *next; /指向下一进程的指针 PCB; PCB head_input; /定义初始放入进程的队列的头指针PCB head_run; /定义执行中进程的头指针 PCB * pcb

3、_input; /定义运行程序的头指针 static char R=r,C=c; unsigned long current; /定义当前时间变量 void inputprocess(); /定义进程进入函数 int readydata(); /定义进程判断函数 int readyprocess(); /定义进程准备函数 int runprocess(); /定义进程运行函数 ofstream fout(result.txt); /打开文件result.txt,用于记录结果 int readyprocess() while(1) if(readydata() = 0) /判断是否还有进程没有执

4、行完毕,如果返回结果是1,那么代表没有进 /程要执行了 return 1; /以执行完所有程序,退出 else runprocess(); /还有程序要执行,执行运行函数 int readydata() /函数准备函数 if(head_input.next = NULL) /判断是否还有没有运行过的进程 if(head_run.next = NULL)/判断是否有进程在运行,有则执行返回值1, /回到readyprocess函数,无则 return 0; /说明没有进程了,退出 else return 1; PCB *p1,*p2,*p3,*t; p1 = head_input.next; /

5、定义p1,使p1等于放入的第一个进程 p2 = &head_run; /定义p2,使p2等于运行函数的头指针 t = p1; /定义t,使它和p1相等; p3 = &head_input; /定义p3,是它等于放入进程队列的头指针 while(p1-next != NULL) /用循环,找出进程队列里到达时间最小的进程 if(p1-next-arrivetime arrivetime) t = p1-next; p3 = p1; /使p3指向t p1 = p1-next; if(unsigned long)t - arrivetime state = R) /判断t所指的进程是否符合条件, /

6、是则开始运行 coutTime current;Processpname start,n; foutTime current;Processpnamenext = t; p3-next = t -next; /将t从放入的队列中移到 /run队列中; return 1; int runprocess() /定义运行进程函数/ PCB *p1,*p2; if(head_run.next = NULL) /判断是否有进程符合条件运行, /有则执行运行代码, /无则将当前时间+1; current+; return 1; else p1 = head_run.next; p2 = &head_run

7、; while(p1 != NULL) /如果运行中的程序未运行完,则继续运行 p1-runtime-; current+; while(1) if(p1-runtime = 0) /如果运行中的程序的runtime为0, /则说明程序已经运行结束 coutTime current;Processpname end.n; foutTime current;Processpnamestate = C; /将p1进程的状态标志为C完成状态 p2-next = p1-next; /将run的头指针指向空 p1 = NULL; /删除p1进程 break; /结束,跳出 else p1-runtime

8、-; /如果p1没有执行完, current+; /则继续执行直至结束 return 1; void inputprocess() /-定义建立进程函数/ PCB *p1,*p2; int num; coutHow many processes do you want to run:; /提示输入进程数 foutnum; foutnext = new PCB; /为p1指向的下一个进程申请空间 p1 = p1-next; /让p1等于它所指向的下一个进程 for(int i = 0; i num; i+) /循环输入num个进程的 coutnNo.i+1 process input pname

9、:; /进程名 foutnNo.i+1p1-pname; foutpname; cout runtime:; /运行时间 foutp1-runtime; foutruntime; cout arrivetime:; /到达时间 foutp1-arrivetime; foutarrivetimestate = R; /初始化状态为R准备状态 p1-next = new PCB; /为下一个进程申请空间 p2 = p1; p1 = p1-next; /让p1指向它所指的下一个进程 p2-next = NULL; /让最后一个进程所指的下一个进程为空 void main() current = 0;

10、 /初始化时钟current为0; inputprocess(); /运行进程构造函数 readyprocess(); /运行进程运行函数 getch(); fout.close(); /文件关闭 五:实验结果: 1:初始状态: How many processes do you want to run:3 No.1 process input pname:p1 runtime:20 arrivetime:1 No.2 process input pname:p2 runtime:23 arrivetime:4 No.3 process input pname:p3 runtime:54 arrivetime:10 2:具体运行过程 Time 1; Processp1 start, Time 21; Processp1 end. Time 21; Processp2 start, Time 44; Processp2 end. Time 44; Processp3 start, Time 98; Processp3 end.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1