内容发布更新时间 : 2024/11/16 18:05:33星期一 下面是文章的全部内容请认真阅读。
********实验报告纸
计算机科学与工程学院 (院、系) 网络工程 专业 083 班 组 操作系统 课
学号************ 姓名 **** 实验日期 2011.05.20 教师评定 实验一、进程管理(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 页 共 10 页
进程从因创建而产生直至撤销而消亡的整个生命周期中, 有时占用处理器执行,有时虽然可以运行但分不到处理器,有时虽然处理器空闲但因等待某个事件发生而无法执行,这一切都说明进程和程序不同,进程是活动的且有状态变化, 状态及状态之间的转换体现进程的动态性,为了便于系统管理,一般来说,按照进程在执行过程中的不同情况至少要定义三种进程状态。
(1)运行态:进程占用处理器运行的状态。
(2)就绪态:进程具备运行条件,等待系统分配处理器以便起运行的状态。 (3)等待态:进程不具备运行条件,正在等待某个时间完成的状态。 2、 程序设计环境
表1 程序设计环境表 设备名称 处理器 内存容量 操作系统 java.runtime.version 详细要求 英特尔 Core i5 M 460 @ 2.53GHz 2 GB Windows 7 旗舰版 32位 1.6.0_13-b03 3、 程序界面设计
本实验的目的不在界面的创新,所以界面的设计模仿示例程序二,程序界面设计如下:
图 1.
程序界面设计
界面中的元件包括:标题、队列管理、进程状态转换操作、进程转换示意图、作者及版本信息。各元件的设计具体如下:
第 2 页 共 10 页
1) 标题:蓝底白字“进程管理演示”,其部分代码如下:
public static final String TITLE = \进程管理演示\ ; //程序标题 JLabel J_title= new JLabel(\ + TITLE + \,SwingConstants.CENTER); 1) 队列管理:实时更新进程就绪队列、进程执行队列、进程阻塞队列,及进程执行队列中进程Node(模拟PCB 块,详见下文)的更新。其中,进程执行队列只包含一个进程,因为一个时间片内只能有一个进程处于运行态。部分代码如下: //进程队列名 public static final String PROCESS_READY = \进程就绪队列: \ ; public static final String PROCESS_EXECUTE = \进程执行队列: \ ; public static final String PROCESS_BLOCK = \进程阻塞队列: \ ; //进程队列信息显示 private JLabel process_ready = new JLabel(PROCESS_READY) ; private JLabel process_execute = new JLabel(PROCESS_EXECUTE) ; private JLabel process_block = new JLabel(PROCESS_BLOCK) ; //更新进程队列信息 process_ready.setText(PROCESS_READY + readyLink.print()) ; process_execute.setText(PROCESS_EXECUTE + executeLink.print()) ; process_block.setText(PROCESS_BLOCK + blockLink.print()) ; 2) 进程状态转换操作:
a) 创建新的进程:其部分代码如下:
private JTextField process_name= new JTextField(8) ; //进程名输入域 private JLabel process_add = new JLabel(\小于4个字符\);//添加进程提示信息 b) 已存在的进程的状态切换操作:其部分代码如下:
//进程状态转换操作按钮 private JButton executeTOready = new JButton(\执行-->就绪(a)\) ; private JButton executeTOblock = new JButton(\执行-->阻塞(s)\) ; private JButton readyTOexecute = new JButton(\就绪-->执行(d)\) ; private JButton blockTOready = new JButton(\阻塞-->就绪(f)\) ; 3) 进程转换示意图:
private ImageIcon imageIcon = new ImageIcon(\); 需把图片放在D盘根目录下
第 3 页 共 10 页