操作系统实验报告 进程管理 java编写相关的界面Word文档下载推荐.docx
- 文档编号:6831076
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:16
- 大小:151.03KB
操作系统实验报告 进程管理 java编写相关的界面Word文档下载推荐.docx
《操作系统实验报告 进程管理 java编写相关的界面Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告 进程管理 java编写相关的界面Word文档下载推荐.docx(16页珍藏版)》请在冰点文库上搜索。
//三个显示进程的文本框
JTextFieldreadyList,runningList,waitingList,input;
//三个进程的链表
ArrayList<
Process>
reList=newArrayList<
();
ruList=newArrayList<
waList=newArrayList<
Iterator<
iterRunning,iterReady,iterWaiting;
publicMyFrame(){
this.setLayout(newBorderLayout());
this.add(p1,BorderLayout.NORTH);
this.add(p2,BorderLayout.CENTER);
init();
this.setTitle("
进程三态转换"
);
setBounds(300,300,500,300);
setVisible(true);
}
voidinit(){
Boxbox1=Box.createHorizontalBox();
box1.add(newJLabel("
进程就绪队列:
"
));
readyList=newJTextField(35);
readyList.setEditable(false);
box1.add(readyList);
Boxbox2=Box.createHorizontalBox();
box2.add(newJLabel("
进程阻塞队列:
waitingList=newJTextField(35);
waitingList.setEditable(false);
box2.add(waitingList);
Boxbox3=Box.createHorizontalBox();
box3.add(newJLabel("
进程运行队列:
runningList=newJTextField(35);
runningList.setEditable(false);
box3.add(runningList);
BoxbaseBox1=Box.createVerticalBox();
baseBox1.add(box1);
baseBox1.add(Box.createVerticalStrut(10));
baseBox1.add(box2);
baseBox1.add(box3);
p1.add(baseBox1);
Buttonb1=newButton("
执行—>
就绪"
Buttonb2=newButton("
就绪—>
执行"
Buttonb3=newButton("
阻塞"
Buttonb4=newButton("
阻塞—>
Buttonexit=newButton("
清空所有进程"
this.add(exit,BorderLayout.SOUTH);
b1.addActionListener(newreadyListener());
b2.addActionListener(newrunningListener());
b3.addActionListener(newwaitingListener());
b4.addActionListener(newready2Listener());
exit.addActionListener(newclearListener());
Boxbox4=Box.createHorizontalBox();
box4.add(b1);
box4.add(b2);
Boxbox5=Box.createHorizontalBox();
box5.add(b3);
box5.add(b4);
Boxbox6=Box.createHorizontalBox();
input=newJTextField(20);
input.addActionListener(newinputListener());
box6.add(newLabel("
请输入进程名字,按回车确认"
box6.add(input);
BoxbaseBox2=Box.createVerticalBox();
baseBox2.add(box6);
baseBox2.add(Box.createVerticalStrut(10));
baseBox2.add(box4);
baseBox2.add(box5);
p2.add(baseBox2);
运行的总体界面如下图所示:
图1总体布局
2.分别为“执行—》就绪”,“就绪—》执行”,“执行—》阻塞”,“阻塞—》就绪”四个按钮添加监听器,监听队列的三种状态。
输入进程也要相关的监听器。
输入进程名字的监听器主要代码:
classinputListenerimplementsActionListener{
Strings="
"
;
publicvoidactionPerformed(ActionEvente){
if(input.getText().equals("
)){
JOptionPane.showMessageDialog(null,"
请输入进程名字"
"
警告对话框"
JOptionPane.WARNING_MESSAGE);
}else{
ProcessnewPro=newProcess();
newPro.setName(input.getText());
reList.add(newPro);
//把输入的进程放进就绪队列
s=readyList.getText();
readyList.setText(s+newPro.getName()+"
input.setText("
}
}
当输入的进程名字为空时,弹出警告输入框:
图2进程名字不能为空
输入正确显示在就绪队列中(名字分别为:
“第一个进程”,“第二个进程”,第三个进程):
图3输入三个进程后
就绪到执行状态的监听器主要代码:
classrunningListenerimplementsActionListener{
iterReady=reList.iterator();
iterRunning=ruList.iterator();
Strings="
if(iterReady.hasNext()){
//当就绪进程不为空而且没有进程运行时
if(iterRunning.hasNext()==false){
//把就绪的第一个进程变为运行状态
ProcessnewPro=reList.remove(0);
ruList.add(newPro);
runningList.setText(newPro.getName());
//重新输出就绪状态
iterReady=reList.iterator();
while(iterReady.hasNext()){
ProcessPro=iterReady.next();
s=s.concat(Pro.getName()).concat("
}
readyList.setText(s);
}else{
JOptionPane.showMessageDialog(null,"
已有进程运行中'
不能进行该操作"
"
JOptionPane.WARNING_MESSAGE);
}
没有任何进程在'
就绪队列中'
当就绪队列为空时:
图4就绪态没有任何进程
就绪队列有进程时,单机“就绪—》执行”按钮:
图5就绪—》执行
当有进程在运行时:
图6已有进程运行
执行到阻塞状态的监听器主要代码:
classwaitingListenerimplementsActionListener{
iterWaiting=waList.iterator();
if(iterRunning.hasNext()==false){
没有正在执行的进程"
ProcessnewPro=ruList.remove(0);
waList.add(newPro);
runningList.setText("
//重新读取阻塞的进程
iterWaiting=waList.iterator();
Strings="
while(iterWaiting.hasNext()){
ProcessPro=iterWaiting.next();
s=s.concat(Pro.getName()).concat("
waitingList.setText(s);
执行队列有进程执行是,单击“执行—》阻塞”:
图7执行到阻塞状态
执行队列没进程,弹出警告对话框:
图8没有进程执行
执行到就绪态监听器主要代码:
classreadyListenerimplementsActionListener{
//重新读取就绪的进程
iterReady=reList.iterator();
while(iterReady.hasNext()){
ProcessPro=iterReady.next();
readyList.setText(s);
没有进程在执行,弹出警告对话框:
图9没有进程执行
执行队列有进程执行是,单击“执行—》就绪”:
图10执行到就绪
阻塞到就绪态监听器主要代码:
classready2ListenerimplementsActionListener{
if(iterWaiting.hasNext()==false){
没有阻塞的进程"
ProcessnewPro=waList.remove(0);
Stringt="
t=t.concat(Pro.getName()).concat("
readyList.setText(t);
当有进程阻塞时,单击“阻塞—》就绪“按钮:
图11阻塞到就绪
清空所有进程监听器代码:
图12清空所有进程
四、实验总结
本次实验通过用java的链表来表示进程的状态,程序中分别用三个不同的链表来表示“就绪“、”执行“、”阻塞“的三种状态。
当有状态转换时,就把相应链表中的第一个对象去除,再在另外的链表中增加去除的对象,这样就相当于状态的转换。
实验通过java的相关包来进行布局,使程序更加人性话与直观化,状态的转移通过不同的监听器而来实现。
通过本次实验,我更加加深了对增加链表、增加节点、删除节点方面的印象,并且掌握了进程不同状态转换的实质。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统实验报告 进程管理 java编写相关的界面 操作系统 实验 报告 进程 管理 java 编写 相关 界面