




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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、P4、P5,而 P2
4、 又创建了 P6 、P7、P8。在进程创建过程中,需要对每一个新增加的进程加入到进程树中,有了清晰的父子关系,可以使资源继承或进程删除等操作变得很方便。4) 进程总链PCB 放入总链中,该总链可以对破它是一个 PCB 链表,每一个新创建的进程必须把其 坏的进程树进行修复,也方便 PCB 查找。四、可能用到的数据结构和操作的部分代码1. 数据结构/process control block :有些 pcb 的容是考虑到以后调度功能而设置的 struct pcbint pid;/process idint ppid;/parent process idint prio;/priorityint s
5、tate;/stateint 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(in
6、t *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 cmdstr32;proot = new
7、 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 programbreak;if(!strcmp(cmdstr,showdetail)cfla
8、g = 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 string para=strtoarray(s1);/get parameter createpc(para); /create process pflag=1;if(!cflag)geterro
9、r(0);elseif(!pflag)geterror(1);五、实验步骤完善实验提供的代码后,输入 createpc 命令创建进程,输入 showdetail 显示每个进程 及其子进程的信息,测试命令解释如下:1) createpc 创建进程命令。参数: 1、 pid (进程 id) 2 、 ppid(父进程 id) 3、prio (优先级)。示例: createpc(1,0,1) 。创建一个进程,其进程号为 1,父进程号为 0,优先级为 1. createpc(2,1,2) 。创建一个进程,其进程号为 2,父进程号为 1,优先级为 2。2) showdetail 显示进程信息命令。3)ex
10、it 退出命令行。六、实习报告容1画出你所创建的进程树的结构图(也可以用上述图1-1)。2. 显示运行结果:至少有五次运行过程截图,这五次截图分 别展现不同类型的父子关系,并在截图的下方配文字以说明 自己创建的进程数量以及这图所展示的进程家族关系。createpc(1,0,1)Showdetail以 P1 为第一层,运行结果;createpc(1,0,1)createpc(2,1,2) createpc(3,1,2) Showdetail以 P1为第一层, P2, P3为第二层,且为 P1 的子进程,运行结果;createpc(1,0,1) createpc(2,1,2) createpc(3
11、,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,3,3) createpc(8,4,4) crea
12、tepc(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(
13、3,1,2)createpc(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的子进程; P10,P11为 P6的子进程; P12,P13为 P7的子进程;运行结果; P14, P15 为第五层,且为 P8的子进程,运行结果;3. 说 明 您 的 关 键 函 数 的 流 程 : 说 明 createpc(para)函 数 、 showdetail() 函数和 main()函数的功能,并以流程图或文字 的形式展现。createpc(para)函数:创建进程showdetail() 函数:显示进程的细
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学网络诈骗课件
- 社会情绪手工课件
- 抗菌技术测试题及答案解析
- 辅警铁骑岗位知识培训课件
- 交通银行2025铜仁市半结构化面试15问及话术
- 中国银行2025永州市秋招笔试创新题型专练及答案
- 邮储银行2025宜昌市秋招笔试创新题型专练及答案
- 2025年3D打印技术的个性化定制与快速制造
- 中国银行2025惠州市秋招笔试价值观测评题专练及答案
- 2025后疫情时代经济复苏的财政政策
- 新概念第一册Lesson-65-66练习题
- 固体物理(黄昆)第一章PPT
- 十经络养生法专家讲座
- 2023年重庆大学入学考试英语一本科
- 铁路公司招聘干部试题
- GB/T 1770-2008涂膜、腻子膜打磨性测定法
- 输血申请单规范PDCA
- 第17课-我是浙江人课件
- 税务尽职调查报告(参考)
- 初中七年级上《综合实践》活动课程课件
- 全屋定制家居整装安装师傅专业安装服务技巧培训指导手册
评论
0/150
提交评论