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

上传人:夺命阿水 文档编号:18429 上传时间:2022-07-04 格式:DOC 页数:12 大小:267KB
返回 下载 相关 举报
实验一进程创建模拟报告材料.doc_第1页
第1页 / 共12页
实验一进程创建模拟报告材料.doc_第2页
第2页 / 共12页
实验一进程创建模拟报告材料.doc_第3页
第3页 / 共12页
实验一进程创建模拟报告材料.doc_第4页
第4页 / 共12页
实验一进程创建模拟报告材料.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《实验一进程创建模拟报告材料.doc》由会员分享,可在线阅读,更多相关《实验一进程创建模拟报告材料.doc(12页珍藏版)》请在课桌文档上搜索。

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

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

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

4、看出,进程 P1 创建了进程 P2、P3、P4、P5,而 P2 又创建了 P6、P7、P8 。在进程创建过程中,需要对每一个新增加的进程参加到进程树中,有了清晰的父子关系,可以使资源继承或进程删除等操作变得很方便。4) 进程总链它是一个 PCB 链表,每一个新创建的进程必须把其 PCB 放入总链中,该总链可以对破坏的进程树进展修复,也方便 PCB 查找。四、可能用到的数据结构和操作的局部代码1.数据结构/process control block:有些pcb的容是考虑到以后调度功能而设置的struct pcb int pid;/process id int ppid;/parent proce

5、ss id int prio;/priority int state;/state int lasttime;/last execute time int tottime; /totle execute time;/process nodestruct pnode pcb *node; pnode *sub; pnode *brother; pnode *next;/信号量struct semphore char name5; /名称 int count;/计数值 int curpid;/当前进程 id pnode *wlist; /等待链表;2.1 /初始化错误提示信息; /create p

6、rocessint createpc(int *para)/add your 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 cmdstr

7、32; proot = new pnode; /创建根节点进程 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) /exit the program break; if(!strc

8、mp(cmdstr,showdetail) cflag = 1;pflag = 1;showdetail(); else int *para;char *s,*s1;s = strstr(cmdstr,createpc); /create process if(s) cflag=1; para = (int *)malloc(3); /getparameter s1 = substr(s,instr(s,()+1,strlen(s)-2); /get param string para=strtoarray(s1);/get parameter createpc(para); /create

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

10、。2) showdetail 显示进程信息命令。3) exit退出命令行。六、实习报告容1画出你所创建的进程树的结构图也可以用上述图1-1。P1P2P3P4P5P6P7P8P9P10P11P12P13P14P152.显示运行结果:至少有五次运行过程截图,这五次截图分别展现不同类型的父子关系,并在截图的下方配文字以说明自己创建的进程数量以与这图所展示的进程家族关系。P10createpc(1,0,1)Showdetail以P1为第一层,运行结果;createpc(1,0,1)createpc(2,1,2)createpc(3,1,2)Showdetail以P1为第一层,P2,P3为第二层,且为P

11、1的子进程,运行结果;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(7,3,3)Showdetail以P1为第一层,P2,P3为第二层,且为P1的子进程;P4,P5,P6,P7为第三层;P4,P5为P2的子进程;P6,P7为P3的子进程;运行结果;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(7

12、,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的子进程;运行结果;createpc(1,0,1)createpc(2,1,2)createpc(3,1,2)cr

13、eatepc(4,2,3)createpc(5,2,3)createpc(6,3,3)createpc(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)createpc(14,8,5)createpc(15,8,5)Showdetail以P1为第一层,P2,P3为第二层,且为P1的子进程;P4,P5,P6,P7为第三层;P4,P5为P2的子进程;P6,P7为P3的子进程;P8,P9,P10,P11,P12,P13为第四层,且P8,P9为P4的子

14、进程;P10,P11为P6的子进程;P12,P13为P7的子进程;运行结果;P14,P15为第五层,且为P8的子进程,运行结果;3. 说明您的关键函数的流程:说明createpc(para)函数、showdetail()函数和main函数的功能,并以流程图或文字的形式展现。createpc(para)函数:创建进程否否是是开 始 p=plink 进程为真进程存在输出进程存在并返回-1添加进程完毕showdetail()函数:显示进程的细节将建立的进程遍历并输出。main()函数:主函数开始initerror()是用来初始化错误的输入createpc(para)创建进程showdetail()输出进程完毕exit4. 思考题(1) 进程创建的核心容是什么?答:1申请空白PCB 2为新进程分配资源3初始化进程控制块4将新进程插入到就绪队列2你的设计和实际的操作系统进程创建相比,缺少了哪些步骤?答:只是模拟的创建,并没有分配资源5.最后将代码以附件形式上交。12 / 12

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号