实验一进程创建模拟报告_第1页
实验一进程创建模拟报告_第2页
实验一进程创建模拟报告_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

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

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

3、源列表(进程除 CPU 以外的所有资源);d) 指针(进程队列中指向下一个进程的 PCB 首址)。2) 进程创建流程(1) 申请空白 PCB为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白 PCB。如果无空白PCB可以创建一个新的 PCB。在本实验中,每次动态创建PCB。(2) 为新进程分配资源为新进程分配存空间和栈空间。(3) 初始化进程控制块a) 初始化标识信息;b) 初始化处理机状态信息;c) 初始化处理机控制信息。(4) 将新进程插入就绪队列3) 进程树进程树用于描述进程家族关系,如图1-1中可以看出,进程P1创建了进程 P2、P3、P4P5,而 P2 又创建了 P6、P

4、7、P8。在进程创建过程中,需要对每一个新增加的进程加入到进程树中,有了清晰的父子关系,可以使资源继承或进程删除等操作变得很方便。4) 进程总链PCB放入总链中,该总链可以对破它是一个PCB链表,每一个新创建的进程必须把其 坏的进程树进行修复,也方便 PCB查找。四、可能用到的数据结构和操作的部分代码1. 数据结构 /process control block :有些pcb的容是考虑到以后调度功能而设置的 struct pcbint pid;/process idint ppid;/pare nt process idint prio;/priorityint state;/stateint

5、lasttime;/last execute timeint tottime; /totle execute time;/process nodestruct pnodepcb *node; pnode *sub; pnode *brother; pnode *next;/信号量struct semphore char name5; / 名称 int count;/ 计数值 int curpid;/ 当前进程 id pnode *wlist; / 等待链表;2. 操作2.1 / 初始化错误提示信息;2.2 /create processint createpc(int *para)/add y

6、our code here:/ find ppid of this process/init new pcb/add to process tree/ add to process link/show process detailvoid showdetail()/add your code here/print all pcb info/main 函数可参考下面的代码,也可以自己写void main() initerror(); short cflag/* (命令标志) */,pflag/* (参数标志) */; char cmdstr32;proot = new pnode; / 创建根节

7、点进程 proot->node=new pcb;/初始化根节点的 pcb proot->node->pid=0; proot->node->ppid=-1; proot->node->prio=0;proot->next=NULL;proot->sub=NULL;proot->brother=NULL;plink=proot;for(;)cflag=0;pflag=0;printf("cmd:");scanf("%s",cmdstr);if(!strcmp(cmdstr,"exit&q

8、uot;) /exit the programbreak;if(!strcmp(cmdstr,"showdetail")cflag = 1;pflag = 1;showdetail();elseint *para;char *s,*s1;s = strstr(cmdstr,"createpc"); /create processif(s)cflag=1;para = (int *)malloc(3);/getparameters1 = substr(s,instr(s,'(')+1,strlen(s)-2); /get param str

9、ing para=strtoarray(s1);/get parameter createpc(para); /create process pflag=1;if(!cflag)geterror(0);elseif(!pflag)geterror(1);五、实验步骤完善实验提供的代码后,输入 createpc 命令创建进程,输入 showdetail 显示每个进程 及其子进程的信息,测试命令解释如下:1)createpc创建进程命令。参数:1、 pid (进程id)2、ppid (父进程id) 3、prio (优先级)。示例:createpc(1,0,1)。创建一个进程,其进程号为1,父进程号

10、为 0,优先级为1.createpc(2,1,2)。创建一个进程,其进程号为2,父进程号为1,优先级为2。2)showdetail显示进程信息命令。3)exit退出命令行。六、实习报告容1 .画出你所创建的进程树的结构图(也可以用上述图 1-1 )。2. 显示运行结果:至少有五次运行过程截图,这五次截图分 别展现不同类型的父子关系,并在截图的下方配文字以说明 自己创建的进程数量以及这图所展示的进程家族关系。createpc(1,0,1)Showdetail以P1为第一层,运行结果;日回inE :iTiylc ; 口 rngQsbu cJ1_ 浇 212013363.execreatepc(1,

11、0,1)createpc(2,1,2) createpc(3,1,2) Showdetail以P1为第一层,P2, P3为第二层,且为 P1的子进程,运行结果;E :iTiylc i 口 r ch ngos binDe buqJ,.廃宝 2'71 01333 .*xcend: ci*eiLtepc(l,0,1) cind:ci*eatepc<2,l,2 J cn)d:ci'eatepc<3,l,2> umd:ereatepc2,3 >end:coatepc2” T >end: cieatepcCG, 3,3 > cnw1:cpf?rttppc

12、<7.3.3> cnbd: houdetail B<Vpid Kppid 2<ppid 3<ppid ppid <ppld G<ppid ?<ppia-l.pru 0> = Bprio 1>= 1prio 2>; 1>prio 2>: 2>prio 3>: 2>priu 3>;>>rio 3>c j>ikio 3>:l<Hpid 0,prio 1> 2<ppid 1Fprio 2> 4<ppid S.prio 3> bppid

13、3Pprio 3>3>?<ppid 3,prio 3Jcreatepc(1,0,1) createpc(2,1,2) createpc(3,1,2) createpc(4,2,3) createpc(5,2,3) createpc(6,3,3) createpc(7,3,3) Showdetail以P1为第一层,P2, P3为第二层,且为 P1的子进程;P4, P5, P6, P7为第三层;P4, P5 为P2的子进程;P6, P7为P3的子进程;运行结果;E:imybia rchengo&bi n D 站z 勺饶说宝201133 用柄lend; cr*eatepc(

14、6,3,3) cind:credtepc<7,J,3> emd:createpcCB, 4,4) umd:treatepc <9,4, end: ciLcs.tc pc <10,6 , -1 > end:create pc <11,6,4 > cinH:cpf?fltppr<l2-7J4> cni(1:createpc<13JL7JL4> end:shoudetmi】 B<ppid Kppid 2<ppid Jppid Kppld 5<p)>id G<pt>id 心冋 9<pi>i

15、d 10(ppi.d 11<pp£d 12 Cppid Id Cpptd-l,prio : nprio 1>; 1>prio 2>: 1 >prio 2: 2>priu 3>; 2,>>rio 3>c j>ikio 3>:lpvin A.vin 4>: 4 j. prio 4>:6, prio 4)- 6>prio 4>:7, prio 4>: 7,prio 4):1Cppid Qprio 1 > 2<ppid 4<ppid 6<ppid 6<ppid1

16、Pprio2Pprio 3»prio l-piclu10<ppid4>1 2<ppid 7, pi(*io 4、3(ppid5Cppid 7<ppid 9<ppUlprio 2> 2prio 3>3, 卩片io4, pirlu 勺lKppiid >pvia 4>1 3<ppiri 7, lyric* 4>L|riil =createpc(1,0,1)createpc(2,1,2) createpc(3,1,2)createpc(4,2,3)createpc(5,2,3) createpc(6,3,3) createpc

17、(7,3,3) createpc(8,4,4) createpc(9,4,4) createpc(10,6,4) createpc(11,6,4) createpc(12,7,4) createpc(13,7,4) Showdetail以P1为第一层,P2, P3为第二层,且为 P1的子进程;P4, P5, P6, P7为第三层;P4, P5 为P2的子进程;P6, P7为P3的子进程;P8, P9, P10, P11, P12, P13为第四层,且 P8, P9为P4的子进程;P10, P11为P6的子进程;P12, P13为P7的子进程;运行结果; E:mybifl ngc>jbi2

18、12011363 .= 一凹Hcmd:createpcClBG,4Dtend: createpctll9end:cpeatepc<12,7,4? yc <13 ,7,4 > ci*catepc(14 B ,5 > ci'eatepc<15,5 >rnd: shnyrlptai 1H< pp>ld 1 >iflirio 0> :Kppid Bpvio 1 >Ofrio 1>:2<ppid l>prio 2>3<ppid 1, pr-io 2>5Cppid 2fprio1 ,>rio

19、 2>:4(ppid 2rprio 3>1 ,frio 2>:6<ppid 3.prio 3>?(ppid M/prdo 3><ppid Z>prio 3>-积ppid 1Fprio 4>9(ppid 4,prio 勺2bppid Zprio 3>: u<ppld3>:ll»<pL)id &,prlu 4>lKpplC 6,prlif 4>J,prio J>:12<ppid 7,prio 4>13<ppid 7,pr4>i,pvio 4>:4,p

20、vin 4>:110(>nid 6r»rio 4): iKppld 6,prio 4> : 12(pp£d prio 4): 13(ppid 7,prlo 4>s 14<ppld 8, pi'io S> : lb Cpptd 8,priD S>:8,pvio E>!&<ppid 8,pria 5>1createpc(1,0,1)createpc(2,1,2) createpc(3,1,2)createpc(4,2,3)createpc(5,2,3) createpc(6,3,3)createpc(7,3,3

温馨提示

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

评论

0/150

提交评论