操作系统进程调度仿真程序源码(4)

2019-08-31 15:10

sleep(1000);

item=(String)mode.getSelectedItem(); jsp0.setViewportView(runprocess); jsp1.setViewportView(ready);

jsp2.setViewportView(interrupted);

jsp3.setViewportView(finish); if(active){

controll.setText(\暂停运行\ }

else{

controll.setText(\开始运行\

} }

}catch(InterruptedException e) { e.printStackTrace(); }

} }

public void actionPerformed(ActionEvent e){ //事件响应

if(e.getSource()==createprocess){ CreateProcess(); }

else if(e.getSource()==exit){ closeOperation(); }

else if(e.getSource()==save){ save(); }

else if(e.getSource()==wakeup){ wakeup();

}

else if(e.getSource()==interrupt){

if(runData.isEmpty()){

JOptionPane.showMessageDialog(null, \没有运行进程,阻塞失败!\\注意\ }

else{

stop=true; }

}

else if(e.getSource()==controll){ if(active){

active=false;

controll.setText(\开始运行\ } else{

active=true;

controll.setText(\暂停进程\ } } }

@SuppressWarnings(\ public void wakeup(){

Vector temp=new Vector(); int selected=0,ident=-1,identy=-1;

selected=interrupted.getSelectedRow(); if(selected<=-1||selected>=waitData.size())

JOptionPane.showMessageDialog(null, \请先选择要唤醒的进程!\\警告\ else{

ident=(Integer)interrupted.getValueAt(selected,0); for(int i=0;i

temp=(Vector)waitData.get(i); identy=(Integer)temp.get(0); if(ident==identy){

waitData.removeElementAt(i); break;

} }

temp.removeElementAt(4); FCFS.addElement(temp); operation(); } }

public void closeOperation(){

if(times==0){

Object[] options = {\是\否\取消\

int response=JOptionPane.showOptionDialog(null, \您还未保存结果,是否保存后再

退

\

\

\ if(response==0) {

save();

frame.dispose(); }

else if(response==1) {

frame.dispose(); }

else if(response==2) { } }

else{

frame.dispose(); } }

public void save(){

String str=new String();

String f=new String(); times++;

for(int i=0;i

str=str+\

for(int j=0;j

str=str+\ \alueAt(i,j).toString(); }

}

f=\王慧娟_1928105_Result\ try{

File file=new File(f);

FileWriter result=new FileWriter(file); result.write(str); result.close();

}catch(IOException e){

JOptionPane.showMessageDialog(null, \对不起,结果保存失败!\\保存提示\ }

JOptionPane.showMessageDialog(null, \恭喜您,运行结果已保存至相同路径下的<王慧娟>txt文件中!\保存提示\TION_MESSAGE); }

//-----------------------------------------------------------------------------

public void CreateProcess(){ //创建进程 PCB process; Vector temp=new Vector(); int runT;

runT=outputruntime(); if(runT<=0){

process=new PCB(); process.inputID(id); id++; } else{

process=new PCB(runT,pri); process.inputID(id); id++;

}

allData.addElement(process);

Integer id=new Integer(process.getID());

Integer priority=new Integer(process.getPriority()); String createTime=new String(process.getCreateTime()); Integer runTime=new Integer(process.getRunTime()); Integer counter=new Integer(process.getCounter()); temp.addElement(id);

temp.addElement(priority); temp.addElement(createTime); temp.addElement(runTime); temp.addElement(counter); FCFS.addElement(temp); operation(); }

//--------------------------------------------------------------------------------

private class MTable extends JTable{ //表格设置 /** * */

private static final long serialVersionUID = 1L; public MTable(Vector rowData,Vector columnNames){

super(rowData,columnNames);

}

public JTableHeader getTableHeader(){

JTableHeader tableHeader=super.getTableHeader(); tableHeader.setReorderingAllowed(false); DefaultTableCellRenderer

hr=(DefaultTableCellRenderer)tableHeader.getDefaultRenderer();

hr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); return tableHeader;

}

public TableCellRenderer getDefaultRenderer(Class columnClass){ DefaultTableCellRenderer

cr=(DefaultTableCellRenderer)super.getDefaultRenderer(columnClass); cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); return cr; }

public boolean isCellEditable(int row,int column){ return false; } } }

//--------------------------------------------------------------------------------------------------------

import javax.swing.*; import java.awt.*;

import java.awt.event.*; import javax.swing.table.*; import java.util.*; import java.io.*;

public class MainProgramme implements ActionListener{

int pri=5; //存放所选择的优先级 String item; //存放所选择的模式

int flag=0; //当前运行进程是从flag级就绪队列获得 Vector nm,nm1,nm2,nm3,nm4; //各个表头信息 Vector allData=new Vector(); //存放生成的所有对象

Vector runData=new Vector(); //运行进程显示数据 Vector readyData1=new Vector(); //高优先级就绪队列显示数据 Vector readyData2=new Vector(); //中优先级就绪队列显示数据 Vector readyData3=new Vector(); //低优先级就绪队列显示数据 Vector waitData=new Vector(); //阻塞队列显示数据 Vector finishData=new Vector(); //完成队列显示数据

Vector RR=new Vector(); //静态时间片轮转法 Vector DRR=new Vector(); //动态时间片轮转法 Vector MLFQ=new Vector(); //多级反馈队列调度算法


操作系统进程调度仿真程序源码(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

Copyright © 2019-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18

× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: