操作系统进程管理实验报告

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

********实验报告纸

计算机科学与工程学院(院、系)网络工程专业083 班组操作系统课

实验一、进程管理(3学时、必做)

一、实验目的

通过实验使学生进一步了解进程、进程状态、进程控制等基本概念。基本能达到下列具体的目标:

1、理解进程 PCB 的概念,以及 PCB 如何实现、如何组织以及管理。

2、复习数据结构中如何对链的操作,包括建链、删除、插入结点等,来实现进程的管

理。

二、实验内容

1、建立一个结点,即 PCB 块包括用户标识域、状态域(执行、等待、就绪)、 link 域。

2、建立三个队列(执行队列、就绪队列、等待队列)。

3、根据进程状态转换实现对三个队列的具体操作。具体的驱动可以采用时间片算法或

手动调度的形式完成三个状态之间的转换

4、用 switch 选择语句选择状态。

5、按照自己的设定能完成所有的状态转换的运行(包括创建和运行结束)。

三、实验步骤

1、复习进程管理三状态模型部分内容。

2、预习C++ Builder或VC++、Delphi、JBuilder线程编程。

3、运行示例程序,进一步明确实验要求。可以采用控制台模式或窗口模式。

4、上机编程、调试程序。

5、完成实验报告。

四、实验过程

1、进程管理三状态模型部分内容

进程从因创建而产生直至撤销而消亡的整个生命周期中,有时占用处理器执行,有时虽然可以运行但分不到处理器,有时虽然处理器空闲但因等待某个事件发生而无法执行,这一切都说明进程和程序不同,进程是活动的且有状态变化,状态及状态之间的转换体现进程的动态性,为了便于系统管理,一般来说,按照进程在执行过程中的不同情况至少要定义三种进程状态。

(1)运行态:进程占用处理器运行的状态。

(2)就绪态:进程具备运行条件,等待系统分配处理器以便起运行的状态。

(3)等待态:进程不具备运行条件,正在等待某个时间完成的状态。

2、程序设计环境

表1 程序设计环境表

设备名称详细要求

处理器英特尔******************

内存容量 2 GB

操作系统Windows 7 旗舰版32位

java.runtime.version 1.6.0_13-b03

3、程序界面设计

本实验的目的不在界面的创新,所以界面的设计模仿示例程序二,程序界面设计如下:

图 1. 程序界面设计

界面中的元件包括:标题、队列管理、进程状态转换操作、进程转换示意图、作者及版本信息。各元件的设计具体如下:

1)标题:蓝底白字“进程管理演示”,其部分代码如下:

队列管理:实时更新进程就绪队列、进程执行队列、进程阻塞队列,及进程执行队列中进程Node(模拟PCB 块,详见下文)的更新。其中,进程执行队列只包含一

2)进程状态转换操作:

a)创建新的进程:其部分代码如下:

b)已存在的进程的状态切换操作:其部分代码如下:

3)进程转换示意图:

需把图片放在D盘根目录下

图 2. 进程转换示意图

4)作者及版本信息:

new JLabel("作者:杨松青

    版本:PMD 1.0
"

+ "仲恺农业工程学院计算机科学与工程学院网络工程083班
"

+ "电子邮箱:***************")

其中:PMD为Process Management Demo的简写。

4、创建进程

图 3. 创建进程

包括进程名输入域和添加进程提示信息两个组件,进程名输入域可输入进程名(长度不大于4)按回车键添加进程队列中不存在的进程(进程名不能重复);点击下方的按钮将改变进程名对应的进程的状态,详细见6、进程状态转换操作。

按回车键后,在输入域后方的添加进程提示信息组件会打印出提示信息,提示用户进程是否添加成功。如果输入的进程名长度大于4,程序将自动截取前4个字符,确保名字长度不大于4,这中控制是由于该程序无须名字很长的进程名,这样队列管理中可以显示更多的进程。

5、时间片管理

为了模拟处理器的时间片,程序单独开启一个新的线程cpuThread处理时间片到时的进程切换和获得时间片的操作。

时间片的定义如下:

//时间片

public static final Integer TIMEOUT = 5 ;

public int timeOut = TIMEOUT ;

其中TIMEOUT为处理器的每次分配的时间片大小,该值是固定的,所以使用final关

键字修饰。timeOut为进程执行过程中时间片的消耗,但该值为0时,将检查就绪队列,如果就绪队列为空,则为原执行中的进程再次分配TIMEOUT大小的时间片,进程继续占用处理器;如果就绪队列不为空,则原执行中的进程时间片到,转为就绪态,而就绪队列的队首结点转入执行状态。具体操作流程及代码如下:

图 4. 线程cpuThread流程图

6、进程队列管理

图 5. 进程队列管理

实时更新进程就绪队列、进程执行队列、进程阻塞队列,及进程执行队列中进程Node (模拟PCB 块)的更新。

a)队列:Link.java

存放于.util包中,具体接口信息如下图:

图 6. Link.java接口信息

图 7. Node.java接口信息

b)进程:Node.java

存放于.util包中,具体接口信息如下图7:

其中name表示进程名,age表示进程所需的剩余的时间片,next用于在进程队列Link 中,指向下一个进程结点Node,state表状态域(执行、等待、就绪)。

7、进程状态转换操作

在进程名输入域中输入已存在的进程名:

(不存在时点击任何按钮不产生状态转换,并提示“不存在正在**的进程**”)

相关文档
最新文档