操作系统实验 进程状态转换及其PCB的变化.doc

操作系统实验 进程状态转换及其PCB的变化.doc

ID:50285629

大小:511.28 KB

页数:12页

时间:2020-03-07

操作系统实验 进程状态转换及其PCB的变化.doc_第1页
操作系统实验 进程状态转换及其PCB的变化.doc_第2页
操作系统实验 进程状态转换及其PCB的变化.doc_第3页
操作系统实验 进程状态转换及其PCB的变化.doc_第4页
操作系统实验 进程状态转换及其PCB的变化.doc_第5页
资源描述:

《操作系统实验 进程状态转换及其PCB的变化.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。5)代码书写要规范,要适当地加入注释。6)鼓励在实验中加入新的观点或想法,并加以实现。7)认真进行预习,完成预习报告。8)实验完成后,要认真总结,完成实验报告。3.程序流程图4.代码部分(1)数据结构部分进程结构体structPCB{charP_name[10];intP_id;intP_state;intneedtime;intlefttime;intP_level;};进程结构体有:进程号,进程状态,进程剩下的时间,进程需要的时间,进程的优先级队列

3、结构体structQueue{PCBqNode[5];intqueueLength;};定义的队列最多有5个进程。(2)程序解释这里做的是对操作系统课程里面将的“3状态”的模型的模拟,给它提供的初始状态是有5个进程,而进程所需要的时间和进程的状态都是随机产生的,并把就绪队列里面的进程按照进程的优先级(P_level)进行排序,设置初始状态时没有在运行的程序。(3)程序的代码//#include#include#include#includestructP

4、CB{charP_name[10];intP_id;intP_state;intneedtime;intleavetime;intP_level;};structQueue{PCBqNode[5];intqueueLength;};intinsertQueue(Queue*q,PCB*p){inti=0;if(q->queueLength==0){q->qNode[i]=*p;q->queueLength++;return1;}else{while(p->P_level<=q->qNode[i].P_level){i++;}f

5、or(intj=q->queueLength;j>=i;j--){q->qNode[j]=q->qNode[j-1];}q->qNode[i]=*p;q->queueLength=q->queueLength+1;return1;}}voidsetQueue(PCBpcb[5],Queue*ready,Queue*blocked,Queue*finish){ready->queueLength=0;blocked->queueLength=0;finish->queueLength=0;for(inti=0;i<5;i++){

6、if(pcb[i].P_state==0){insertQueue(ready,&pcb[i]);}else{blocked->qNode[blocked->queueLength]=pcb[i];blocked->queueLength++;}}}voidshow(Queueready,Queueblocked,Queuefininsh,PCBrun){printf("完成队列");printf("进程名------优先级------所需时间--------剩余时间");for(inti=0;i

7、queueLength;i++){printf("%s%d%d%d%d",fininsh.qNode[i].P_name,fininsh.qNode[i].P_id,fininsh.qNode[i].P_level,fininsh.qNode[i].needtime,fininsh.qNode[i].leavetime);}printf("");if(run.needtime!=0){printf("当前正在运行的进程:");printf("进程名----------优先级------所需时间--------剩余时

8、间");printf("%s%d%d%d%d",run.P_name,run.P_id,run.P_level,run.needtime,run.leavetime);}printf("");printf("就绪队列");printf("进程名--------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。