进程的三种状态转换.doc_第1页
进程的三种状态转换.doc_第2页
进程的三种状态转换.doc_第3页
进程的三种状态转换.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 报 告实验名称进程的三种状态转换专 业计算机科学与技术课程名称操作系统指导老师张海燕老师班 级2011级二表1班姓 名姜玉龙学 号*评 分实验地点1c26217实验日期2013/09/18一、实验目的1.熟悉进程管理及其相关的基本概念。2.通过实验掌握进程的三种转化,执行,就绪,阻塞及其相关知识。二、实验内容(含实验原理介绍)1. 就绪状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。2执行状态:当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。3.阻塞)状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等三、实验过程及步骤(包含使用软件或实验设备等情况)实验设备:装有vc+6.0的pc实验步骤: 创建链表 LinkList CreateListR(int Num) LinkList head = (LinkList)malloc(sizeof(ListNode) s=(ListNode *)malloc(sizeof(ListNode)返回key结点位置LinkList LocateNode(LinkList head,DataType key)while (head-data != key & head)head=head-next; return head;删除进程LinkList LocateNode(LinkList head,DataType key) while (head-data != key & head) head=head-next return head 显示链表void ShowList(LinkList head)head = head-next; 在链表中删除结点key void ClearList(LinkList head,DataType key)删除链表void DeleteList(LinkList head)head=p-next;free(p);p=head;创建链表向就绪状态转化void FreeToReady(LinkList FreeP,LinkList ReadyP,DataType key)p=FreeP-next; FreeP-next=p-next; p-data=key; q=ReadyP; while(q-next)q=q-next; q-next=p; p-next=NULL;就绪状态向执行状态转化void ReadyToExe(LinkList ReadyP,LinkList ExeP,DataType key) ExeP-next=LocateNode(ReadyP,key); ClearList(ReadyP,key); ExeP-next-next=NULL; printf(Execute process %c success.n,key);执行状态向就绪状态转化void ExeToReady(LinkList ExeP,LinkList ReadyP)p=p-next; p-next=ExeP-next; ExeP-next=NULL;阻塞状态向就绪状态转化void BlockToReady(LinkList BlockP,LinkList ReadyP,DataType key) LinkList p,q; p=LocateNode(BlockP,key); q=ReadyP; while(q-next)q=q-next; q-next=p; ClearList(BlockP,key); p-next=NULL; 执行状态向阻塞状态转化void ExeToBlock(LinkList ExeP,LinkList BlockP)LinkList p; p=BlockP; while(p-next)p=p-next; p-next=ExeP-next; ExeP-next=NULL;int main() .cmd=getchar();switch(cmd) case c: /创建进程 while(LocateNode(ReadyP,Name)|LocateNode(BlockP,Name) |LocateNode(ExeP,Name) Name=Name+1; if(LocateNode(ReadyP,Name) | LocateNode(ExeP,Name) |LocateNode(BlockP,Name) = NULL) FreeToReady(FreeP,ReadyP,Name); case P: /输入进程名 if(LocateNode(ReadyP,Name) ReadyToExe(ReadyP,ExeP,Name); case E: /结束进程 while(temp-next) temp=temp-next; temp-next=ExeP-next; ExeP-next=NULL; printf(End process %c success.n,temp-next-data);case B: /清空进程 if(ExeP-next) printf(Block process %c success.n,ExeP-next-data); else printf(Error: No process executing.n);case w: /唤醒进程 Name=getchar(); getchar(); if(LocateNode(BlockP,Name) printf(Wakeup process %c success.n,Name);. 四、实验结果(含算法说明、程序、数据记录及分析等,可附页)五、实验思考题进程状态转换中,存在四种状态转换。当进程调度程序从就绪队列中选取一个进程投入运行时引起转换1;正在执行的进程如因时间片用完而被暂停执行就会引起转换2;正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完成I/O)则会引去转换3;当进程等待的事件发生时(如I/O完成)则会引

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论