ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:288KB ,
资源ID:12282419      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12282419.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统进程管理实验报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、操作系统进程管理实验报告*试验汇报纸 计算机科学与工程学院 (院、 系) 网络工程 专业 083 班 组 操作系统 课学号* 姓名 * 试验日期 .05.20 老师评定 试验一、 进程管理(3课时、 必做) 一、 试验目经过试验使学生深入了解进程、 进程状态、 进程控制等基础概念。基础能达成下列具体目标: 1、了解进程 PCB 概念, 以及 PCB 怎样实现、 怎样组织以及管理。2、复习数据结构中怎样对链操作, 包含建链、 删除、 插入结点等, 来实现进程管理。二、 试验内容1、建立一个结点, 即 PCB 块包含用户标识域、 状态域(实施、 等候、 就绪)、 link 域。2、建立三个队列(实

2、施队列、 就绪队列、 等候队列)。3、依据进程状态转换实现对三个队列具体操作。具体驱动能够采取时间片算法或手动调度形式完成三个状态之间转换4、用 switch 选择语句选择状态。5、根据自己设定能完成全部状态转换运行(包含创建和运行结束)。三、 试验步骤1、复习进程管理三状态模型部分内容。2、预习C+ Builder或VC+、 Delphi、 JBuilder线程编程。3、运行示例程序, 深入明确试验要求。能够采取控制台模式或窗口模式。4、上机编程、 调试程序。5、完成试验汇报。四、 试验过程1、进程管理三状态模型部分内容进程从因创建而产生直至撤销而消亡整个生命周期中, 有时占用处理器实施,

3、有时即使能够运行但分不四处理器, 有时即使处理器空闲但因等候某个事件发生而无法实施, 这一切都说明进程和程序不一样, 进程是活动且有状态改变, 状态及状态之间转换表现进程动态性, 为了便于系统管理, 通常来说, 根据进程在实施过程中不一样情况最少要定义三种进程状态。(1)运行态: 进程占用处理器运行状态。(2)就绪态: 进程含有运行条件, 等候系统分配处理器方便起运行状态。(3)等候态: 进程不含有运行条件, 正在等候某个时间完成状态。2、程序设计环境表1 程序设计环境表设备名称具体要求处理器英特尔 Core i5 M 460 2.53GHz内存容量2 GB操作系统Windows 7 旗舰版

4、32位java.runtime.version1.6.0_13-b033、程序界面设计本试验目不在界面创新, 所以界面设计模仿示例程序二, 程序界面设计以下: 图 1. 程序界面设计界面中元件包含: 标题、 队列管理、 进程状态转换操作、 进程转换示意图、 作者及版本信息。各元件设计具体以下: 1)标题: 蓝底白字“进程管理演示”, 其部分代码以下: public static final String TITLE = 进程管理演示 ; /程序标题JLabel J_title= new JLabel( + TITLE + ,SwingConstants.CENTER);1)队列管理: 实时更新

5、进程就绪队列、 进程实施队列、 进程阻塞队列, 及进程实施队列中进程Node(模拟PCB 块, 详见下文)更新。其中, 进程实施队列只包含一个进程, 因为一个时间片内只能有一个进程处于运行态。部分代码以下: /进程队列名 public static final String PROCESS_READY = 进程就绪队列: ; public static final String PROCESS_EXECUTE = 进程实施队列: ; public static final String PROCESS_BLOCK = 进程阻塞队列: ; /进程队列信息显示 private JLabel pro

6、cess_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() ; proce

7、ss_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 JBu

8、tton executeTOblock = new JButton(实施-阻塞(s) ;private JButton readyTOexecute = new JButton(就绪-实施(d) ;private JButton blockTOready = new JButton(阻塞-就绪(f) ;3)进程转换示意图: private ImageIcon imageIcon = new ImageIcon(D:/process.jpg); 需把图片放在D盘根目录下图 2. 进程转换示意图4)作者及版本信息: new JLabel(作者:杨松青    

9、版本:PMD 1.0 + 仲恺农业工程学院计算机科学与工程学院网络工程083班 + 电子邮箱:)其中: PMD为Process Management Demo简写。4、创建进程图 3. 创建进程包含进程名输入域和添加进程提醒信息两个组件, 进程名输入域可输入进程名(长度小于4)按回车键添加进程队列中不存在进程(进程名不能反复); 点击下方按钮将改变进程名对应进程状态, 具体见6、 进程状态转换操作。按回车键后, 在输入域后方添加进程提醒信息组件会打印出提醒信息, 提醒用户进程是否添加成功。假如输入进程名长度大于4, 程序将自动截取前4个字符, 确保名字长度小于4, 这中控制是因为该程序无须名字

10、很长进程名, 这么队列管理中能够显示更多进程。5、时间片管理为了模拟处理器时间片, 程序单独开启一个新线程cpuThread处理时间片到时进程切换和取得时间片操作。时间片定义以下: /时间片public static final Integer TIMEOUT = 5 ;public int timeOut = TIMEOUT ;其中TIMEOUT为处理器每次分配时间片大小, 该值是固定, 所以使用final关键字修饰。timeOut为进程实施过程中时间片消耗, 但该值为0时, 将检验就绪队列, 假如就绪队列为空, 则为原实施中进程再次分配TIMEOUT大小时间片, 进程继续占用处理器; 假如

11、就绪队列不为空, 则原实施中进程时间片到, 转为就绪态, 而就绪队列队首结点转入实施状态。具体操作步骤及代码以下: 图 4. 线程cpuThread步骤图if(executeLink.getRoot() != null) if(timeOut != 0) /时间片未到 timeOut - ; executeLink.getRoot() .setAge(executeLink.getRoot().getAge()-1); if(executeLink.getRoot().getAge() = 0) / 进程正常结束 executeLink.deleteRoot() ; process_Info.

12、setText(进程+executeLink.getRoot().getName()+正常撤销) ; else timeOut = TIMEOUT ; /时间片到 if(readyLink.getRoot() != null) /将进程放回就绪队列中 process_Info.setText(时间片到, 进程+executeLink.getRoot().getName()+让出处理器) ; executeLink.getRoot().setState(0) ; readyLink.add(executeLink.getRoot(); executeLink.deleteRoot() ; els

13、e / 就绪队列为空, 目前进程继续占有cpu timeOut - ; executeLink.getRoot() .setAge(executeLink.getRoot().getAge()-1); if(executeLink.getRoot().getAge() = 0) / 进程正常结束 executeLink.deleteRoot() ; process_Info.setText(进程+executeLink.getRoot().getName()+正常撤销) ; else if (readyLink.getRoot() != null) /进程占有处理器 Node node = r

14、eadyLink.getRoot() ; readyLink.deleteRoot() ; node.setNext(null) ; node.setState(1) ; executeLink.setRoot(null) ; executeLink.add(node) ; process_Info.setText(就绪进程 +executeLink.getRoot().getName()+实施) ;6、进程队列管理图 5. 进程队列管理实时更新进程就绪队列、 进程实施队列、 进程阻塞队列, 及进程实施队列中进程Node(模拟PCB 块)更新。a)队列: Link.java存放于.util包中

15、, 具体接口信息以下图: 图 6. Link.java接口信息图 7. Node.java接口信息b)进程: Node.java存放于.util包中, 具体接口信息以下图7: 其中name表示进程名, age表示进程所需剩下时间片, next用于在进程队列Link中, 指向下一个进程结点Node, state表状态域(实施、 等候、 就绪)。7、进程状态转换操作在进程名输入域中输入已存在进程名: (不存在时点击任何按钮不产生状态转换, 并提醒“不存在正在*进程*”)a) 假如该进程在实施队列(处于运行态)中, 则单击“实施就绪(a)”按钮能够把进程切换到就绪态, 并提醒“进程*: 实施就绪”信

16、息。具体操作以下: Node node = executeLink.getRoot(); /1.先取出该进程node.setNext(null) ; /2.切断进程链node.setState(0) ; /3.修改善程状态readyLink.add(node) ; /4.放入就绪队列executeLink.setRoot(null) ; /5.从实施队列中移除其中, 切断进程链操作是相当关键, 在以下每次状态转换都需要实施此操作。假如没有立刻切断进程链, 将会造成结点next中仍然残余着其她信息, 这么会在不停进程切换时, 链表变成循环链表, 将造成程序发生致命错误。b)单击“实施阻塞(s)”

17、按钮能够把进程切换到等候态, 并提“进程*: 实施阻塞”信息。具体操作以下: Node node = executeLink.getRoot();node.setNext(null) ;node.setState(3) ;blockLink.add(node) ;executeLink.setRoot(null) ;c) 假如该进程在实施队列中, 则单击“就绪实施(d)”按钮能够把进程切换到实施态, 并提“进程*: 就绪实施”信息。具体操作以下: /1.先把正在实施进程放入就绪队列Node node = executeLink.getRoot();node.setNext(null) ;nod

18、e.setState(0) ;readyLink.add(node) ;executeLink.setRoot(null) ;/2.把就绪队列中进程放入实施队列node = readyLink.getNodeByName(processName);readyLink.delete(processName) ;node.setNext(null) ;node.setState(1) ;executeLink.add(node) ;d) 假如该进程在阻塞队列中, 则单击“阻塞就绪(f)”按钮能够把进程切换到就绪态, 并提“进程*: 阻塞就绪”信息。具体操作以下: Node node = block

19、Link.getNodeByName(processName);blockLink.delete(processName) ;node.setNext(null) ;node.setState(0) ;readyLink.add(node) ;四、 试验心得本试验模拟了进程管理, 包含新建进程、 进程状态转换等操作, 而且还独立设计了专用链表以模拟进程队列。程序使用JAVA编写, 以面向对象思维抽象出进程和进程队列。经过本试验, 我愈加了解进程、 进程状态、 进程控制等基础概念。同时也复习了JAVA Swing图形界面编程、 数据结构中链、 JAVA多线程管理等知识。但还是有不足, 程序设定进程名不能反复, 使得程序不能很好模拟PCB。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1