实验一进程创建模拟报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一进程创建模拟

实验学时:2

实验类型:验证

实验要求:必修

一、实验目的

1)理解进程创建相关理论;

2)掌握进程创建方法;

3)掌握进程相关数据结构。

二、实验内容

本实验针对操作系统中进程创建相关理论进行实验。要求实验者输入实验指导书提供的代码并进行测试。代码简化了进程创建的多个步骤和内容。进程的树形结构采用广义二叉树的方式进行存储。

三、实验原理

1)进程控制块

为了描述和控制进程的运行,系统为每个进程定义了一个进程控制块(PCB),它是进程实体的一部分,是操作系统管理进程最重要的

数据结构。其主要包含四类信息:

(1) 进程标识符

它唯一地标识一个进程。通常包括进程号 pid,父进程号 ppid 和用户号 uid。

(2) 处理机状态

处理器的状态通常由处理机的各种寄存器中的内容组成。PCB 存放中断(阻塞,挂起)时的各寄存器值,当该进程重新执行时,可以从断点处恢复。主要包括:

a) 通用寄存器;

b) 指令计数器;

c) 程序状态字 PSW;

d) 用户栈指针。

(3) 进程调度信息

a) 进程状态;

b) 进程优先级(用于描述优先使用 cpu 级别的一个整数,高优先级的进程先得到cpu,通常情况下,优先值越小优先级越高);

c) 其它信息(等待时间、总执行时间等);

d) 事件(等待原因)。

(4) 进程控制信息

a) 程序和数据的地址(程序在内存和外存中的首址);

b) 进程同步和通信机制;

c) 资源列表(进程除 CPU 以外的所有资源);

d) 链接指针(进程队列中指向下一个进程的 PCB 首址)。

2) 进程创建流程

(1) 申请空白 PCB

为新进程申请获得唯一的数字标识符,并从 PCB 集合中索取一个空白 PCB。如果无空白PCB,可以创建一个新的 PCB。在本实验中,每次动态创建 PCB。

(2) 为新进程分配资源

为新进程分配内存空间和栈空间。

(3) 初始化进程控制块

a) 初始化标识信息;

b) 初始化处理机状态信息;

c) 初始化处理机控制信息。

(4) 将新进程插入就绪队列

3) 进程树

图 1-1 进程树进程树用于描述进程家族关系,如图 1-1 中可以看出,进程 P1 创建了进程 P2、P3、P4、P5,而 P2 又创建了 P6、P7、P8 …… 。在进程创建过程中,需要对每一个新增加的进程加入到进程树中,有了清晰的父子关系,可以使资源继承或进程删除等操作变得很方便。

4) 进程总链

它是一个 PCB 链表,每一个新创建的进程必须把其 PCB 放入总链中,该总链可以对破坏的进程树进行修复,也方便 PCB 查找。

四、可能用到的数据结构和操作的部分代码

1. 数据结构

createpc(2,1,2) 。创建一个进程,其进程号为 2,父进程号为 1,优先级为 2。

2) showdetail 显示进程信息命令。

3) exit退出命令行。

六、实习报告内容

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,1,2)

createpc(4,2,3)

createpc(5,2,3)

createpc(6,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(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)

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) createpc(4,2,3) createpc(5,2,3) createpc(6,3,3) createpc(7,3,3) createpc(8,4,4) createpc(9,4,4)

相关文档
最新文档