实验一 进程创建模拟报告.doc

实验一 进程创建模拟报告.doc

ID:55146084

大小:284.18 KB

页数:12页

时间:2020-04-28

实验一 进程创建模拟报告.doc_第1页
实验一 进程创建模拟报告.doc_第2页
实验一 进程创建模拟报告.doc_第3页
实验一 进程创建模拟报告.doc_第4页
实验一 进程创建模拟报告.doc_第5页
资源描述:

《实验一 进程创建模拟报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验一进程创建模拟实验学时:2实验类型:验证实验要求:必修一、实验目的1)理解进程创建相关理论;2)掌握进程创建方法;3)掌握进程相关数据结构。二、实验内容本实验针对操作系统中进程创建相关理论进行实验。要求实验者输入实验指导书提供的代码并进行测试。代码简化了进程创建的多个步骤和内容。进程的树形结构采用广义二叉树的方式进行存储。三、实验原理1)进程控制块为了描述和控制进程的运行,系统为每个进程定义了一个进程控制块(PCB),它是进程实体的一部分,是操作系统管理进程最重要的数据结构。其主要包含四类信息:(1)进程标识符它唯一地标识一个进程。通常包括进程号

2、pid,父进程号ppid和用户号uid。(2)处理机状态处理器的状态通常由处理机的各种寄存器中的内容组成。PCB存放中断(阻塞,挂起)时的各寄存器值,当该进程重新执行时,可以从断点处恢复。主要包括:a)通用寄存器;b)指令计数器;c)程序状态字PSW;d)用户栈指针。(3)进程调度信息a)进程状态;b)进程优先级(用于描述优先使用cpu级别的一个整数,高优先级的进程先得到cpu,通常情况下,优先值越小优先级越高);c)其它信息(等待时间、总执行时间等);d)事件(等待原因)。(4)进程控制信息a)程序和数据的地址(程序在内存和外存中的首址);b)进程

3、同步和通信机制;c)资源列表(进程除CPU以外的所有资源);d)链接指针(进程队列中指向下一个进程的PCB首址)。2)进程创建流程(1)申请空白PCB为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白11PCB。如果无空白PCB,可以创建一个新的PCB。在本实验中,每次动态创建PCB。(2)为新进程分配资源为新进程分配内存空间和栈空间。(3)初始化进程控制块a)初始化标识信息;b)初始化处理机状态信息;c)初始化处理机控制信息。(4)将新进程插入就绪队列P1P2P3P4P5P6P7P8P9P10P11P123)进程树图1-1进程树进程树用

4、于描述进程家族关系,如图1-1中可以看出,进程P1创建了进程P2、P3、P4、P5,而P2又创建了P6、P7、P8……。在进程创建过程中,需要对每一个新增加的进程加入到进程树中,有了清晰的父子关系,可以使资源继承或进程删除等操作变得很方便。4)进程总链它是一个PCB链表,每一个新创建的进程必须把其PCB放入总链中,该总链可以对破坏的进程树进行修复,也方便PCB查找。四、可能用到的数据结构和操作的部分代码1.数据结构//processcontrolblock:有些pcb的内容是考虑到以后调度功能而设置的structpcb{intpid;//proces

5、sidintppid;//parentprocessidintprio;//priorityintstate;//stateintlasttime;//lastexecutetimeinttottime;//totleexecutetime};//processnodestructpnode11{pcb*node;pnode*sub;pnode*brother;pnode*next;};//信号量structsemphore{charname[5];//名称intcount;//计数值intcurpid;//当前进程idpnode*wlist;//等

6、待链表};2.操作2.1//初始化错误提示信息;2.2//createprocessintcreatepc(int*para){//addyourcodehere://findppidofthisprocess//initnewpcb//addtoprocesstree//addtoprocesslink}//showprocessdetailvoidshowdetail(){//addyourcodehere//printallpcbinfo}//main函数可参考下面的代码,也可以自己写voidmain(){initerror();shortcf

7、lag/*(命令标志)*/,pflag/*(参数标志)*/;charcmdstr[32];proot=newpnode;//创建根节点进程proot->node=newpcb;//初始化根节点的pcbproot->node->pid=0;proot->node->ppid=-1;proot->node->prio=0;proot->next=NULL;11proot->sub=NULL;proot->brother=NULL;plink=proot;for(;;){cflag=0;pflag=0;printf("cmd:");scanf("%s",c

8、mdstr);if(!strcmp(cmdstr,"exit"))//exittheprogrambreak

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

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

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