下载此文档

操作系统实验报告 进程状态转换.doc


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
实验进程状态转换及其PCB的变化一、程序流程图:开始初始化使用界面创建进程就绪队列结束空就绪队列链首进程开始运行该进程运行一个时间片在时间片内是否完成运行指针指向下一个进程撤销该进程否不空是二、使用的数据结构及说明: 在本实验中,主要用到的数据结构是PCB的结构,其中PCB的数据结构如下:structPCB{intP_Id; //PCB的ID号charP_Name[10]; //PCB的名称charP_State[10]; //PCB状态intP_Runtime; //PCB的所需要的运行时间intP_Requiry; //PCB所需要的资源要求structPCB*next; //PCB块的下一个指针}; 其中,P_Id,和P_Name用来标示一个进程,而P_State用来标示进程的五种状态:Create_state,Ready_state,Block_state,Run_state,Exit_state。P_Runtime标示要完成一个进程所需要的时间。P_Requiry标示一个进程的执行所需要的其他条件,当其他的条件满足,则P_Requiry置1,否则置0。StructPCB*next用来指向同一队列中的下一个PCB块。三、程序源代码:#include""#include""#include""/**********globlestructureandviable******/structPCB{intP_Id; //PCB的ID号charP_Name[10]; //PCB的名称charP_State[10]; //PCB状态intP_Runtime; //PCB的所需要的运行时间intP_Requiry; //PCB所需要的资源要求structPCB*next; //PCB块的下一个指针};structPCB*Create_state; //创建状态structPCB*Run_state; //运行状态structPCB*Ready_state; //就绪状态structPCB*Block_state; //阻塞状态structPCB*Exit_state; //退出状态intsignal4=0; //标示进程4的完成状态intsignal5=0; //标示进程5的完成状态voidInsertQueue(structPCB**head,structPCB*node)/*insertnodefunction*/{structPCB*p,*q;node->next=NULL;if(*head==NULL) //如果队列为空{*head=node;}Else //队列不空{p=*head;q=p->next;while(q!=NULL) //找到最后的元素位置{ p=q;q=q->next; }p->next=node; //将节点插入队列}}voidDeleteQueue(structPCB**head,structPCB*node)//撤销进程,从队列中删除元素{ structPCB*p,*q; q=*head; if(*head==NULL||node==NULL) //如果队列为空,返回 return; if(*head==node) //如果要删除的元素是队首元素 { *head=(*head)

操作系统实验报告 进程状态转换 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人aisheng191
  • 文件大小194 KB
  • 时间2019-06-01