全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三:时间片轮转法完成进程调度一、 实验目的:(1) 加深对进程的理解(2) 理解进程控制块的结构(3) 理解进程运行的并发性(4) 掌握时间片轮转法进程调度算法二、 实验内容:(1) 建立进程控制块(2) 设计三个链队列,分别表示运行队列、就绪队列和完成队列(3) 用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。(4) 每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)三、 实验程序:#include #include #include typedef struct node char name10; /*进程标识符*/ int prio; /*进程优先数*/ int round; /*进程时间轮转时间片*/ int cputime; /*进程占用CPU时间*/ int needtime; /*进程到完成还要的时间*/ int count; /*计数器*/ char state; /*进程的状态*/ struct node *next; /*链指针*/PCB;PCB *finish,*ready,*tail,*run; /队列指针int N,t; /进程数,时间片的大小void firstin() run=ready; /就绪队列头指针赋值给运行头指针 run-state=R; /进程状态变为运行态 ready=ready-next; /就绪队列头指针后移到下一进程void prt1(char a)/输出标题函数if(toupper(a)=P) /优先级法 printf(进程名 占用CPU时间 到完成还要的时间 轮转时间片 状态n);void prt2(char a,PCB *q)/进程PCB输出 if(toupper(a)=P)/优先级法的输出 printf(%4s %8d %12d %14d %8cn,q-name,q-cputime,q-needtime,q-round,q-state);void prt(char algo)/输出函数 PCB *p; prt1(algo);/输出标题 if(run!=NULL)/如果运行指针不空 prt2(algo,run);/输出当前正在运行的PCB p=ready;/输出就绪队列PCB while(p!=NULL)prt2(algo,p); p=p-next; p=finish; /输出完成队列的PCB while(p!=NULL) prt2(algo,p); p=p-next; getchar(); /按住任意键继续void insert(PCB *q)/时间片轮转的插入算法 PCB *p1,*s,*r; s=q; /待插入的PCB指针 p1=ready; /就绪队列头指针 r=p1; /*r做pl的前驱指针 while(p1!=NULL) if(p1-roundround) r=p1; p1=p1-next; if(r!=p1) r-next=s; s-next=p1; else s-next=p1; /否则插入在就绪队列的头 ready=s; void create(char alg)/时间片轮转法创建链表进程PCB PCB *p; int i,time; char na10; ready=NULL; finish=NULL; run=NULL; printf(输入进程名及其需要运行的时间(中间以空格隔开):n); for(i=1;iname,na); p-cputime=0; p-needtime=time; p-state=W;/进程的状态 p-round=0; if(ready!=NULL) insert(p); else p-next=ready; ready=p; printf(*时间片轮转法进程调度过程*n); prt(alg); run=ready; ready=ready-next; run-state=R;void timeslicecycle(char alg)/时间片轮转法 while(run!=NULL) run-cputime=run-cputime+t;/处理时间加t run-needtime=run-needtime-t;/完成需要时间减t run-round=run-round+t;/运行完将其变为完成态,插入完成队列 if(run-needtimenext=finish; finish=run; run-state=F; run=NULL; if(ready!=NULL)/就绪队列不空,将第一个进程投入进行 firstin(); else run-state=W;/将进程插入到就绪队列中等待轮转 insert(run);/将就绪队列的第一个进程投入运行 firstin(); prt(alg);void main()/主函数 char algo=P; /算法标记 printf(输入进程的个数:);scanf(%d,&N); /输入进程数printf(定义时间片大小:); scanf(%d,&t); /输入时间片大小 create(algo); /创建进程 timeslicecycle(algo); /时间片轮转法调度/main()四、 实验结果:五、 实验小结: 时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。时间片轮转调度中关键的一点是时间片的长度的选取。本实验可以自己设置时间片大小t,在试验过程中基本满足了实验要求。通过本次实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国铁道科学研究院集团有限公司校园招聘笔试考试参考试题及答案解析
- 2025年开封市尉氏县辅警招聘考试题库附答案解析
- 2025年桦甸市总工会公开招聘工会社会工作者(6人)考试笔试参考题库附答案解析
- 2025秋季招聘清华大学附属小学教育集团招聘考试笔试备考试题及答案解析
- 2025年三支一扶人员招募考试(申论)历年参考题库含答案详解
- 2025安徽芜湖市镜湖区乡编村用暨面向全区社区(村)党组织书记定向招聘事业单位工作人员2人考试笔试备考试题及答案解析
- 2025江苏徐州市水利工程建设有限公司招聘考试笔试参考题库附答案解析
- 2025华夏银行成都分行社会招聘(11月)考试笔试模拟试题及答案解析
- 2025年福建省宁德市霞浦县融媒中心考试笔试备考题库及答案解析
- (2025)全国保密教育线上培训考试试题及答案
- 成品出货检验报告模板
- “互联网+”大学生创新创业大赛项目计划书
- 眼内异物课件
- (无序号)工贸行业小微企业安全风险分级管控和隐患排查治理双重预防机制建设指导手册 - 副本
- SB/T 10752-2012马铃薯雪花全粉
- BIM-建筑信息模型
- GA 139-2009灭火器箱
- 火力发电工程建设标准强制性条文执行表格锅炉分册
- 单位减少存档人员表
- 煤矿井下隔爆水棚安装设计说明
- 盘锦浩业芳烃抽提装置操作规程
评论
0/150
提交评论