实验2进程状态转换及其PCB的变化

上传人:cn****1 文档编号:513615691 上传时间:2023-02-08 格式:DOC 页数:13 大小:655KB
返回 下载 相关 举报
实验2进程状态转换及其PCB的变化_第1页
第1页 / 共13页
实验2进程状态转换及其PCB的变化_第2页
第2页 / 共13页
实验2进程状态转换及其PCB的变化_第3页
第3页 / 共13页
实验2进程状态转换及其PCB的变化_第4页
第4页 / 共13页
实验2进程状态转换及其PCB的变化_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《实验2进程状态转换及其PCB的变化》由会员分享,可在线阅读,更多相关《实验2进程状态转换及其PCB的变化(13页珍藏版)》请在金锄头文库上搜索。

1、实验2 进程状态转换及其PCB的变化1.目的自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。2. 内容及要求1)设计并实现一个模拟进程状态转换及其相应PCB内容、组织结构变化的程序。2)独立编写、调试程序。进程的数目、进程的状态模型(三状态、五状态、七状态或其它)以及PCB的组织形式可自行选择。3)合理设计与进程PCB相对应的数据结构。PCB的内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。4)设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。5

2、)代码书写要规范,要适当地加入注释。6)鼓励在实验中加入新的观点或想法,并加以实现。7)认真进行预习,完成预习报告。8)实验完成后,要认真总结,完成实验报告。3.程序流程图进程的三种基本状态及其转换如下图所示。4. 数据结构及说明在本实验中,主要的数据结构是PCB的数据结构,具体如下:struct process char name;/进程名称int needtime;/进程所需要的运行时间int priority;/进程的优先级;5.源程序#include#include#includestruct process char name;int needtime;int priority;st

3、ruct process readyQueue5;struct process run;struct process blockedQueue5;const struct process null=NULL,0,0;int readyQueueHead=0;int blockedQueueHead=0;int cpuState=0;int cpuTime=0;void Order(struct process parameter,int head);/将队列中的进程按优先级排列int Creat();void Dispath();int Timeout();int EventWait();in

4、t EventOccur();void Order(struct process parameter,int head) int k,i; struct process temp; for(k=0;khead-1;k+) for(i=0;i=parameteri+1.priority) temp=parameteri; parameteri=parameteri+1; parameteri+1=temp; int Creat() if(readyQueueHead=5) printf(The Ready Queue has been fulln); return 0; label1:print

5、f( input new process name(must be a letter): n);scanf(%c,&(readyQueuereadyQueueHead.name);getchar();int k;for( k=0;kreadyQueueHead;k+)if(readyQueuereadyQueueHead.name=readyQueuek.name|readyQueuereadyQueueHead.name=readyQueuek.name+32|readyQueuereadyQueueHead.name=readyQueuek.name-32)printf(the proce

6、ss is already exist!n);goto label1; for( k=0;kblockedQueueHead;k+)if(readyQueuereadyQueueHead.name=blockedQueuek.name|readyQueuereadyQueueHead.name=blockedQueuek.name+32|readyQueuereadyQueueHead.name=blockedQueuek.name-32)printf(the process is already exist!n);goto label1;if(readyQueuereadyQueueHead

7、.name=run.name|readyQueuereadyQueueHead.name=run.name+32|readyQueuereadyQueueHead.name=run.name-32) printf(the process is already exist!n); goto label1;printf(input needtime (input a int number):n);label2:scanf(%d,&(readyQueuereadyQueueHead.needtime);getchar();if(readyQueuereadyQueueHead.needtime100

8、)printf(please input the true needtime(1-100)n);goto label2;printf( input the priority(1-10): n);label3:scanf(%d,&(readyQueuereadyQueueHead.priority);getchar();if(readyQueuereadyQueueHead.priority10)printf(please 1-10!n);goto label3;readyQueueHead+; Order(readyQueue,readyQueueHead);return 0;void Dis

9、path() if (cpuState=0) readyQueueHead-; if(readyQueuereadyQueueHead.needtime0) Order(readyQueue,readyQueueHead); run=readyQueuereadyQueueHead; readyQueuereadyQueueHead=null; cpuState=1; else printf(no process in the Ready Queuen); else Timeout(); Dispath(); int Timeout() cpuTime+; if (run.name=NULL)

10、 return 0; readyQueuereadyQueueHead=run; run=null; cpuState=0; readyQueuereadyQueueHead.needtime-; if(readyQueuereadyQueueHead.needtime=0) printf(The process %c has finished,readyQueuereadyQueueHead.name); readyQueuereadyQueueHead=null; return 0; readyQueueHead+; Order(readyQueue,readyQueueHead); re

11、turn 0;int EventWait() if(blockedQueueHead=5) printf(error:The Blocked Queue has been fulln); return 0; if(cpuState=0) printf(error:no process in CPU); return 0; run.needtime-; blockedQueueblockedQueueHead=run; blockedQueueHead+; run=null; cpuState=0; cpuTime+; printf(The process is blocked!n); retu

12、rn 0;int EventOccur() if(readyQueueHead=5) printf(The Ready Queue has been fulln); return 0; printf(Please input the process name whose event occured!n); char name=getchar(); getchar(); int i; struct process temp; for(i=0;iblockedQueueHead;i+) if(name=blockedQueuei.name) blockedQueueHead-; readyQueuereadyQueueHead=blockedQueuei; readyQueueHead+; blockedQueuei=blockedQueueblockedQueueHead

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

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号