操作系统实验一.docx

上传人:豆**** 文档编号:28520255 上传时间:2022-07-28 格式:DOCX 页数:10 大小:38.08KB
返回 下载 相关 举报
操作系统实验一.docx_第1页
第1页 / 共10页
操作系统实验一.docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《操作系统实验一.docx》由会员分享,可在线阅读,更多相关《操作系统实验一.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品文档,仅供学习与交流,如有侵权请联系网站删除学号E11614051 专业计算机科学与技术 姓名施飞宇实验日期2018/10/25 教师签字 成绩实验报告【实验名称】 进程调度【实验目的】巩固和加深处理机调度的概念。设计调度算法,模拟实现处理机的调度【实验原理】先来先服务(FCFS)调度算法FCFS是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。 当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程,

2、然后把它放入就绪队列。【实验内容】本次实验进程的数据结构如下:typedef struct pcbchar pnameN;/进程名int runtime;/运行时间int arrivetime;/到达时间int starttime;/开始运行时间 float avgtime;/带权周转时间char state;/进程状态 struct pcb *next;/链表指针PCB;1. 设计先来先服务调度算法FCFS测试数据:算法流程图(图1):图1源代码:/*2018/10/26 施飞宇 笃行南楼a202*/#define N 20#include #include using namespace

3、std;typedef struct pcbchar pnameN;/进程名int runtime;/运行时间int arrivetime;/到达时间int starttime;/开始运行时间 float avgtime;/带权周转时间char state;/进程状态 struct pcb *next;/链表指针PCB;PCB headinput;PCB headrun;PCB * pcbinput;void inputprocess();/建立进程函数int readydata()return 1;/判断进程是否进入就绪函数void runprocess();/运行进程函数void inpu

4、tprocess()PCB *p1,*p2;cout输入进程数目num;int i=0;p1=&headinput;p2=p1;for(i=0;inum;i+)cout输入第i+1进程名,运行时间,到达时间pname);cinp1-runtime;cinp1-arrivetime;p1-next=new PCB;p2=p1;p1=p1-next;delete p1;p1=NULL;p2-next=NULL;void runprocess()PCB *p1;int time=0;/时间p1=&headinput;printf(进程名到达时间服务时间开始执行时间完成时间周转时间带权周转时间n);w

5、hile(p1!=NULL)if(timestarttime)time=p1-starttime;p1-starttime=time; p1-avgtime=(p1-starttime+p1-runtime-p1-arrivetime)*1.0/p1-runtime;time=p1-starttime+p1-runtime; printf(%s %10d %10d %10d %10d %10d %5fn,p1-pname,p1-arrivetime,p1-runtime,p1-starttime,p1-starttime+p1-runtime,p1-starttime+p1-runtime-p

6、1-arrivetime,p1-avgtime); p1=p1-next;int main()inputprocess(); runprocess();return 0;运行截图:2. 设计按短进程优先调度算法SJF测试数据:算法流程图(图2):是否图2源代码:/*2018/10/26 施飞宇 笃行南楼a202*/#define N 20#include #include #include using namespace std;typedef struct pcbchar pnameN;/进程名int runtime;/运行时间int arrivetime;/到达时间int starttim

7、e;/开始运行时间 float avgtime;/带权周转时间char state;/进程状态 struct pcb *next;/链表指针PCB;PCB headinput;PCB headrun;PCB * pcbinput;void inputprocess();/建立进程函数int readydata()return 1;/判断进程是否进入就绪函数void runprocess();/运行进程函数void inputprocess()PCB *p1,*p2;cout输入进程数目num;int i=0;p1=&headinput;p2=p1;for(i=0;inum;i+)cout输入第

8、i+1进程名,到达时间,运行时间pname); cinp1-arrivetime;cinp1-runtime; p1-state=a;p1-next=new PCB;p2=p1;p1=p1-next;delete p1;p1=NULL;p2-next=NULL;void runprocess() int b;PCB *p1,*p2;int time=0;/时间int runtime=0;/存储运行最短时间int label;printf(进程名到达时间服务时间开始执行时间完成时间周转时间带权周转时间n);while(1) runtime=100; p1=&headinput; label=1;

9、 while(p1!=NULL) if(p1-state!=a) p1=p1-next; continue; else/ cinb; if(runtimep1-runtime)&(time=p1-arrivetime) p2=p1; runtime=p1-runtime;/ printf(%s %dn,p1-pname,runtime); label=0; p1=p1-next; if(label) break; p2-state=b;p2-starttime=time; p2-avgtime=(p2-starttime+p2-runtime-p2-arrivetime)*1.0/p2-run

10、time;time=p2-starttime+p2-runtime; printf(%s %10d %10d %10d %10d %10d %15.5fn,p2-pname,p2-arrivetime,p2-runtime,p2-starttime,p2-starttime+p2-runtime,p2-starttime+p2-runtime-p2-arrivetime,p2-avgtime);int main()inputprocess();PCB *p2=&headinput;/while(p2)/ printf(%s %10d %10d %10d %10d %10d %5fn,p2-pname,p2-arrivetime,p2-runtime,p2-starttime,p2-starttime+p2-runtime,p2-starttime+p2-runtime-p2-arrivetime,p2-avgtime);/ p2=p2-next; runprocess();return 0;运行截图:【小结或讨论】在SJF算法设计时,程序总在指针操作的过程正出错。后来在程序中添加输入中断程序,调试发现错误后才得到正确的算法。【精品文档】第 10 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁