版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统实验报告计算机学院(院、系)专业班课学号20名Tracy实验日教师评定实验1过程管理一、实验目的通过实验使学生进一步理解过程、过程状态、过程控制等基本概念。 基本上,可以实现以下具体目标:1 .理解过程PCB的概念和PCB是如何实现、如何组织和管理的。2、在数据结构中如何复习链操作,包括链的建设、删除、节点的插入等,实现流程管理。 二、实验内容1 .建立包括PCB块的用户标识域、状态域(执行、等待、就绪)和link域的节点。 2、创建三个队列(执行队列、准备队列、待机队列)。 3 .通过过程的状态转变,实现对三个队列的具体操作。 特定驱动可以以时间片算法或手动调度的形式来实现三种状态之
2、间的转换用java创建关联的接口。三、实验程序使用java的awt和swing包的相关接口的布局。 相关代码如下所示:panel P1=new panel (new flowlayout.left );Panel p2=new Panel(new FlowLayout ();/显示进程的三个文本框jtextfield ready列表,运行列表,等待列表,输入;/三个进程的链表ArrayList reList=new ArrayList ();ArrayList ruList=new ArrayList ();ArrayList waList=new ArrayList ();迭代器运行,迭代器
3、就绪,迭代器等待;公共我帧(); 请参见。this.setLayout(new BorderLayout ();this.add(p1,BorderLayout.NORTH )this.add(p2,BorderLayout.CENTER )init ();this.setTitle (进程三态转换 );set bounds (300,300,500,300 )设置可见性(true )以下voidinit (); 把box box1=box.createhorizontalbox ();box1.添加(“流程准备队列:);readyList=new JTextField(35 )readyLi
4、st.setEditable(false )box1. add (就绪列表)box box2=box.createhorizontalbox ();盒2 .添加(进程块队列:);waitingList=new JTextField(35 )waitingList.setEditable(false )box2. add (等待列表)box box3=box.createhorizontalbox ();box3.add(new JLabel (进程执行队列:);运行列表=new jtextfield (35 )运行列表.设置可编辑(假);box3. add (运行列表)boxbasebox1=
5、box.createbectivebox ();基本盒1 .添加(盒1 )base box1. add (box.createverticesalstrut (10 ) );baseBox1.add(box2)base box1. add (box.createverticesalstrut (10 ) );baseBox1.add(box3)p1.添加(base box1)Button b1=new Button (“执行-准备就绪”)Button b2=new Button (准备就绪-执行 );Button b3=new Button (执行-块 );Button b4=new Butt
6、on (区块-准备就绪 );Button exit=new Button (清空所有进程)this.add(exit,BorderLayout.SOUTH )B1.addactionlistener (newreadylistener ();b2. addactionlistener (newrunningristener ();b3. addactionlistener (newwaitinglistener ();b4. addactionlistener (new ready2listener ();exit.addactionlistener (newclearlistener ()
7、);box box4=box.createhorizontalbox ();盒子4 .添加(b1)盒子4 .添加(b2)box box5=box.createhorizontalbox ();box5.添加(B3 )box5.添加(B4 )box box6=box.createhorizontalbox ();input=new JTextField(20 )input.addactionlistener (newinputlistener () );box6.add(new Label (请输入进程名,然后按enter键进行确认 );box6.添加(输入)boxbasebox2=box.cr
8、eatebectivebox ();baseBox2.add(box6)base box2. add (box.createverticesalstrut (10 ) );基本盒2 .添加(盒4 )base box2. add (box.createverticesalstrut (10 ) );基本盒2 .添加(盒5 )p2.添加(基本盒2 )以下执行的整体界面如下图所示。图1的整体布局2 .分别向“执行-准备就绪”、“准备-执行”、“执行-块”和“块-准备就绪”四个按钮添加监听程序,以监听队列的三种状态。 输入与进程相关的监听程序。输入进程名称监听程序的主要代码classinputlist
9、enerimplementsactionlistenerString s=;publicvoidactionperformed (actionevent e ) 输入if(input.gettext().equals ( ) )jooptionpane.show消息诊断程序(空,“请输入进程名”,“警告对话框”,JOptionPane.WARNING_MESSAGE; else 进程newpro=new process ();newPro.setName(input.getText ();reList.add(newPro) /将输入的进程排队s=readyList.getText ();re
10、ady list.settext (SNE wpro.getname () ;input.setText ( );以下以下以下如果输入的进程名为空,则显示警告输入框图2的进程名称不能为空输入正确地显示在就绪队列中(名称为“第一个进程”、“第二个进程”和“第三个进程”)在图3中输入了三个进程之后可执行监听程序的主要代码:类执行监听程序implementsactionlistenerpublicvoidactionperformed (actionevent e ) iterReady=reList.iterator ();iterRunning=ruList.iterator ();String
11、 s=;输入if (ITER ready.hasnext () )。 2/准备就绪进程不为空,进程未运行if (迭代器运行. hasnext ()=false );/使准备就绪的第一个进程处于运行状态进程newpro=relist.remove (0)ruList.add(newPro )running rist.settext (newpro.getname ();/重新输出准备状态iterReady=reList.iterator ();输入while(iterready.hasnext () )pro=ITER ready.next ();s=s.concat (pro.getname
12、() ).concat ( );以下readyList.setText(s ) else jooptionpane.show消息诊断程序(空,现有进程正在运行,无法执行此操作,警告对话框,JOptionPane.WARNING_MESSAGE;以下 else jooptionpane.show消息诊断程序(null :“就绪队列中没有进程,无法执行此操作”,警告对话框,JOptionPane.WARNING_MESSAGE;以下以下以下准备队列为空时:图4的准备完成状态没有进程如果就绪队列中有进程,则独立的“就绪-运行”按钮:图5准备-执行如果进程正在运行:图6现有进程的执行在被阻止状态下执行
13、的监听器的主要代码:classwaitinglistenerimplementsactionlistenerpublicvoidactionperformed (actionevent e ) iterRunning=ruList.iterator ();iterWaiting=waList.iterator ();if (迭代器运行. hasnext ()=false );jooptionpane.show消息诊断程序(空,“没有正在执行的进程”,“警告对话框”,JOptionPane.WARNING_MESSAGE; else 进程newpro=ru list.remove (0)waLi
14、st.add(newPro )runningList.setText ( );/重新读取被阻止的进程iterWaiting=waList.iterator ();String s=;请参见while(iterstaiting.hasnext () )pro=ITER waiting.next ();s=s.concat (pro.getname () ).concat ( );以下waitingList.setText(s )以下以下以下如果运行队列中有进程运行,请单击运行-块图7在块状态下执行不处理执行队列,显示警告对话框图8中没有执行过程要执行就绪监听程序的主要代码,请执行以下步骤classr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论