2022年进程调度vc代码计算机操作系统实验 .pdf
《2022年进程调度vc代码计算机操作系统实验 .pdf》由会员分享,可在线阅读,更多相关《2022年进程调度vc代码计算机操作系统实验 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、个人资料整理仅限学习使用实验报告 1 课程 计算机操作系统实验名称进程调度第1页班级 11计本学号 105032018130 姓名风律澈实验日期: 2018年 10月4日报告退发 (订正 、 重做 一、实验目的:多道系统中,当就绪进程数大于处理机数时,必须按照某种策略决定选取哪些进程占用处理器。本实验模拟实现处理器调度,进一步加深对处理器调度算法的理解。二、实验内容:选择某种调度算法,设计一个实现处理器调度的程序。三、实验环境:VS2008,window7 操作系统四、实验步骤:1、设计一个有N个进程并发的处理器调度程序,每个进程由一个PCB表示, PCB包含以下信息:进程名、优先数、要求服务
2、时间、进程状态。2、可分别用链表表示就绪队列,用队列中的结构体结点表示进程。3、已知各进程的的到达时间等如下:进程名到达时间服务时间优先数A 0 3 12 B 1 5 31 C 2 2 21 D 3 4 10 4、分别实现下面两种调度算法按FCFS调度算法实现处理器调度;按优先数调度算法实现处理器调度。五、实验程序:链表队列 此部分头文件名:link.h #include using namespace std。/ / 修改部分 / /节点定义typedef struct listnode listnode *prior 。char name。/进程名int serve_time。/服务时间i
3、nt priors 。 /优先权int arrival_time 。/到达时间float start_time 。/开始时间float finish_time 。/结束时间float turnover_time 。/周转时间精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 11 页个人资料整理仅限学习使用float t_t_s。/带权重周转时间int state。listnode *next 。progress。/表头定义typedef struct listnode *head。int length 。listlead,list 。/输
4、出函数void coutdata(listnode *p cout 进程名为 name 。cout 服务时间为 serve_time 。cout 优先权为 priors 。cout 到达时间为 arrival_time 。cout 开始时间为 start_time 。cout 结束时间为 finish_time 。cout 周转时间为 turnover_time 。cout 带权重周转时间为t_t_s e.name=n。e.serve_time=s。e.priors=p。e.arrival_time=time 。 void cindata(listnode &e coute.name。cout
5、e.serve_time。coute.priors 。 /初始化void initilead(listlead &L L.head=NULL 。L.length=0 。 void initinode(listnode &e,char n,int s,int p,int timee.prior=NULL 。e.next=NULL 。e.finish_time=0 。e.start_time=0。e.state=0。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 11 页个人资料整理仅限学习使用e.turnover_time=0 。e.t_
6、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-finish_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(listl
7、ead L,int i while(iL.length couti 位置不合法!请重新输入,位置为i 。 listnode*p=L.head 。int j=1 。if(i while(j p=p-next 。j+ 。 return p。 else i=L.length-i 。if(i=0 return L.head。 else while(j p=p-prior 。j+ 。 return p。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 11 页个人资料整理仅限学习使用 / / 正式使用部分 / / / / / 查找 / /使用说明:
8、 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 &e while(iL.length+1 couti 位置不合法!请重新输入,位置为L.length+1i 。if(i=1/ 表头插入i
9、f(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&i 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 11 页个人资料整
10、理仅限学习使用listnode *p,*q 。/表中插入p=fin_i(L,i-prior。q=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_inser
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年进程调度vc代码计算机操作系统实验 2022 进程 调度 vc 代码 计算机 操作系统 实验
限制150内