进程调度-vc的代码-计算机操作系统实验

上传人:文*** 文档编号:62761837 上传时间:2022-03-16 格式:DOC 页数:10 大小:226KB
收藏 版权申诉 举报 下载
进程调度-vc的代码-计算机操作系统实验_第1页
第1页 / 共10页
进程调度-vc的代码-计算机操作系统实验_第2页
第2页 / 共10页
进程调度-vc的代码-计算机操作系统实验_第3页
第3页 / 共10页
资源描述:

《进程调度-vc的代码-计算机操作系统实验》由会员分享,可在线阅读,更多相关《进程调度-vc的代码-计算机操作系统实验(10页珍藏版)》请在装配图网上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 实验报告1课程 计算机操作系统 实验名称 进程调度 第 1 页班级 11计本 学号 105032011130 姓名 风律澈 实验日期:2013年10月4日 报告退发 (订正 、 重做) 一、实验目的:多道系统中,当就绪进程数大于处理机数时,必须按照某种策略决定选取哪些进程占用处理器。本实验模拟实现处理器调度,进一步加深对处理器调度算法的理解。二、实验内容:选择某种调度算法,设计一个实现处理器调度的程序。三、实验环境:VS2008,window7操作系统四、实验步骤:1、设计一个有N个进程并发的处理器调度程序,每个进程由一个PCB表示,PCB包含以

2、下信息:进程名、优先数、要求服务时间、进程状态。2、可分别用链表表示就绪队列,用队列中的结构体结点表示进程。3、已知各进程的的到达时间等如下:进程名到达时间服务时间优先数A0312B1531C2221D34104、分别实现下面两种调度算法按FCFS调度算法实现处理器调度;按优先数调度算法实现处理器调度。5、 实验程序:链表队列此部分头文件名:link.h#includeusing namespace std;/ / 修改部分 / /节点定义typedef struct listnodelistnode *prior;char name;/进程名int serve_time;/服务时间int p

3、riors;/优先权int arrival_time;/到达时间float start_time;/开始时间float finish_time;/结束时间float turnover_time;/周转时间float t_t_s;/带权重周转时间int state;listnode *next;progress;/表头定义typedef structlistnode *head;int length;listlead,list;/输出函数void coutdata(listnode *p)cout进程名为name ;cout服务时间为serve_time ;cout优先权为priors ;cou

4、t到达时间为arrival_time ;cout开始时间为start_time ;cout结束时间为finish_time ;cout周转时间为turnover_time ;cout带权重周转时间为t_t_s endl;/输入函数void cindata(listnode &e,char n,int s,int p,int time)e.name=n;e.serve_time=s;e.priors=p;e.arrival_time=time;void cindata(listnode &e)coute.name;coute.serve_time;coute.priors;/初始化void in

5、itilead(listlead &L)L.head=NULL;L.length=0;void initinode(listnode &e,char n,int s,int p,int time)e.prior=NULL;e.next=NULL;e.finish_time=0;e.start_time=0;e.state=0;e.turnover_time=0;e.t_t_s=0;cindata(e,n,s,p,time);/拷贝函数void copy(listnode* p,listnode &e)e.arrival_time=p-arrival_time;e.finish_time=p-f

6、inish_time;e.name=p-name;e.next=p-next;e.prior=p-prior;e.priors=p-priors;e.serve_time=p-serve_time;e.start_time=p-start_time;e.state=p-state;/ / 一些复用函数 / / /listnode* fin_i(listlead L,int i)while(iL.length)couti位置不合法!请重新输入,位置为i;listnode*p=L.head;int j=1;if(i=(L.length/2)while(jnext;j+;return p;else

7、i=L.length-i;if(i=0)return L.head;elsewhile(jprior;j+;return p;/ / 正式使用部分 / / / 查找 /使用说明:L表示表头,i表示查找位置,e表示提取出该元素的备份/ /void fin_elem(listlead L,int i,listnode &e)listnode* p;p=fin_i(L,i);copy(p,e);/ / *插入* /使用说明:L表示表头,i表示位置,表尾i为L.Length+1,e表示插入元素,e必须是new出来的空间/ /void insert(listlead &L,int i,listnode

8、&e)while(iL.length+1)couti位置不合法!请重新输入,位置为L.length+1i;if(i=1)/表头插入if(L.length=0)L.head=&e;e.next=&e;L.length+;/空表首元插入else if(L.length=1)/一元表头插入L.head-next=&e;e.next=L.head;L.head-prior=&e;L.length+;else/超一元表头插入listnode* p=L.head-next ;p-prior=&e;e.next=p;L.head-next =&e;L.length+;else if(i1&iprior;q=

9、p-next;p-next=&e;e.next=q;q-prior=&e;e.prior=p;L.length+;else/表尾插入listnode*p=L.head;e.next=p-next;e.prior=p;p-next=&e;L.head=&e;L.length+;/ / *优先插入* /使用说明:L表示表头,e表示插入元素,e必须是new出来的空间 /使用时需要修改比较元素,可以通过 修改 比大小来决定小头还是大头/void prior_insert(listlead &L,listnode &e)if(L.length=0)insert(L,1,e);elseint in=1;i

10、nt i=1;listnode* p=new listnode();initinode(*p,x,0,0,0);/需要自适应部分/dofin_elem(L,in,*p);if(e.priorsp-priors)/需要自适应部分/break;elsein+;while(in=L.length);insert(L,in,e);/ 删除 /使用说明:L表示表头,i表示删除位置/ /void del_elem(listlead &L,int i)while(iL.length)couti位置不合法!请重新输入,位置为i;listnode *p,*q;if(i=1)/表头删除if(L.length=1)

11、/一元表头删除delete L.head;L.head=NULL;L.length=0;else if(L.length=2)/二元表头删除listnode* p=L.head;listnode* q;q=p-next;p-next=p;p-prior=NULL;L.length-;else/多元表头删除listnode* p=L.head;listnode* q;q=p-next;p-next=q-next;q-next-prior=NULL;delete q;L.length-;else if(i1&iprior;q=p-next;p-next=q-next;q-next-prior=p;

12、delete q;L.length-;else/表尾删除listnode *p=L.head-prior;p-next=L.head-next;delete L.head ;L.head=p;L.length-;/ / 修改 /使用说明:L表示表头,i表示修改元素的位置/ /void modify(listlead &L,int i)listnode* p;p=fin_i(L,i);cindata(*p);/ / 释放 /使用说明:直接释放表L的全部元素/ /void del_list(listlead &L)listnode *p,*q;p=L.head;if(L.length=1)del_

13、elem(L,1);elseq=p-prior;while(q-prior!=NULL)delete p;p=q;q=p-prior;delete q;L.head =NULL;L.length=0;本次实验算法部分此部分头文件名:Assist and extension.h/ / 适应小函数 /void this_insert(list &ready,int Type,listnode* x)if(Type=1)insert(ready,ready.length+1,*x);else if(Type=2)prior_insert(ready,*x);/ / 进程事件集合 /使用说明:按照时间

14、进度逐步开始发生,ABCD依时间触发后,进入链表/type=1,则按时间顺序加入队列,type=2,则以权重大小加入队列 /void accident(list &ready,int time,int Type)if(time=0)progress* x=new progress();initinode(*x,A,3,12,time);this_insert(ready,Type,x);else if(time=1)progress* x=new progress();initinode(*x,B,5,31,time);this_insert(ready,Type,x);else if(tim

15、e=2)progress* x=new progress();initinode(*x,C,2,21,time);this_insert(ready,Type,x);else if(time=3)progress* x=new progress();initinode(*x,D,4,10,time);this_insert(ready,Type,x);else if(time0)coutnext-state=0)ready.head-next-start_time=time;ready.head-next-state+;else if(ready.head-next-state0)if(rea

16、dy.head-next-state=ready.head-next-serve_time)ready.head-next-finish_time=time;ready.head-next-turnover_time=ready.head-next-finish_time-ready.head-next-arrival_time;ready.head-next-t_t_s=ready.head-next-turnover_time/ready.head-next-serve_time;coutdata(ready.head-next);ready.head-next-next-start_ti

17、me=time;ready.head-next-next-state+;del_elem(ready,1);elseready.head-next-state+;elsecoutwrongendl;main部分此部分头文件名:main.cpp#includelink.h#includeAssist and extension.hvoid main()/ 变量声明 /int time=0;list ready;int Type=3;initilead(ready);/ 开始流程 /cout选择调度方式,输入1表示FCFS,输入2表示抢占式优先权调度算法endl;coutType;doaccident(ready,time,Type);handle(ready,time);time+;while(ready.head!=NULL/*time10*/);6、 实验结果:FCFS调度方式抢占式优先调度方式:10 / 10

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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