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

2019-08-31 15:10

//阻塞控制

interrupt.setBounds(650,95,100,25); c.add(interrupt);

interrupt.addActionListener(this);

jl5=new JLabel(\就绪队列:\ jl5.setForeground(Color.red); jl5.setBounds(10,140,70,20); c.add(jl5);

//---------------------------就绪队列JTable

String name2[]={\进程ID\优先级\提交时间\运行耗时\已运行\ nm2=new Vector();

for(int column=0;column

ready=new MTable(readyData,nm2);

// DefaultTableModel model2 = new DefaultTableModel(); // ready.setmodel(model2);

// ready.setPreferredScrollableViewportSize(new Dimension(500,100)); // ready.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

ready.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); ready.setSelectionBackground(Color.yellow); ready.setSelectionForeground(Color.red); // ready.setRowHeight(30); jsp1=new JScrollPane();

jsp1.setViewportView(ready); jsp1.setBounds(10,165,600,100); c.add(jsp1);

jl6=new JLabel(\阻塞队列:\ jl6.setForeground(Color.red);

jl6.setBounds(10,280,70,20); c.add(jl6);

//------------------------------------阻塞队列JTable

String name3[]={\进程ID\优先级\提交时间\运行耗时\开始时间\已运行\ nm3=new Vector();

for(int column=0;column

interrupted=new MTable(waitData,nm3);

// interrupted.setPreferredScrollableViewportSize(new Dimension(440,80)); // interrupted.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

interrupted.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

interrupted.setSelectionBackground(Color.yellow); interrupted.setSelectionForeground(Color.red); // interrupted.setRowHeight(30); jsp2=new JScrollPane();

jsp2.setViewportView(interrupted); jsp2.setBounds(10,305,600,80); c.add(jsp2); wakeup=new JButton(\//唤醒控制

wakeup.setBounds(650,325,100,25); c.add(wakeup);

wakeup.addActionListener(this);

jl7=new JLabel(\完成队列:\ jl7.setForeground(Color.red); jl7.setBounds(10,400,70,20);

c.add(jl7);

//---------------------------------------完成队列JTable

String name4[]={\进程ID\优先级\提交时间\运行耗时\开始时间\完成时间\带权周转时间\

nm4=new Vector();

for(int column=0;column

finish=new MTable(finishData,nm4);

// finish.setPreferredScrollableViewportSize(new Dimension(500,120)); // finish.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

finish.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); finish.setSelectionBackground(Color.yellow); finish.setSelectionForeground(Color.red); // finish.setRowHeight(30); jsp3=new JScrollPane(); jsp3.setViewportView(finish); jsp3.setBounds(10,425,600,120); c.add(jsp3);

save=new JButton(\保存结果\ save.setBounds(250,580,100,25); c.add(save);

save.addActionListener(this); exit=new JButton(\退出系统\ exit.setBounds(400,580,100,25); c.add(exit);

exit.addActionListener(this);

\

c.setVisible(true); frame.setVisible(true);

new //线程启动

new Looking().start(); }

//--------------------------------------------------------------------------------------------------------------- public int outputruntime(){ //从输入框获取运行时间

String s=tm.getText(); int rt;

if(s.trim().length()==0) return 0; else{

try{

rt=Integer.parseInt(s); return rt;

}catch(NumberFormatException e){

System.out.println(\您没有输入数值数据!\ return 0; } } }

//------------------------------------------------------------------------------------------- class ModeChoice implements ItemListener{ public void itemStateChanged(ItemEvent e){ item=e.getItem().toString(); } }

@SuppressWarnings(\ public void operation(){ //进程调度核心算法: PF,SRTF,MLFQ的计算

Vector up=new Vector(); Vector temp=new Vector(); Vector bridge=new Vector(); Vector cloneData=new Vector(); int max,maxp,midp;

cloneData=(Vector)FCFS.clone(); for(int i=0;i

ThreadRunning().start();

max=0;

for(int j=1;jmidp){ max=j; maxp=midp; } }

up=(Vector)cloneData.get(max);

bridge=(Vector)cloneData.get(cloneData.size()-i-1); cloneData.setElementAt(up,cloneData.size()-i-1); cloneData.setElementAt(bridge,max); }

PF=cloneData;

DPF=cloneData;

cloneData=(Vector)FCFS.clone(); for(int i=0;i

maxp=(Integer)temp.get(3)-(Integer)temp.get(4); max=0;

for(int j=1;j

midp=(Integer)temp.get(3)-(Integer)temp.get(4); if(maxp

up=(Vector)cloneData.get(max); bridge=(Vector)cloneData.get(cloneData.size()-i-1); cloneData.setElementAt(up,cloneData.size()-i-1); cloneData.setElementAt(bridge,max); }

SJF=cloneData;

cloneData=(Vector)FCFS.clone(); for(int i=0;i

maxp=(Integer)temp.get(3)-(Integer)temp.get(4); max=0;

for(int j=1;j

midp=(Integer)temp.get(3)-(Integer)temp.get(4); if(maxp

maxp=midp; } }

up=(Vector)cloneData.get(max);

bridge=(Vector)cloneData.get(cloneData.size()-i-1); cloneData.setElementAt(up,cloneData.size()-i-1); cloneData.setElementAt(bridge,max); }

SRTF=cloneData; }

@SuppressWarnings(\

public void addrunData(){ Vector temp1=new Vector(6); Vector tp=new Vector(); if(readyData.size()!=0){

// temp1=readyData.ElementAt(0);

// temp1=readyData.firstElement();

// temp1=readyData.get(0); //三种获取元素的方法 if(readyData.firstElement() instanceof Vector){ tp=(Vector)readyData.get(0); }

for(int i=0;i

temp1.add(tp.get(i));

Integer ide=(Integer)temp1.get(0); readyData.removeElementAt(0); for(int i=0;i

tp=(Vector)FCFS.get(i);

Integer iden=(Integer)tp.get(0); if(iden==ide){

FCFS.removeElementAt(i); operation(); break; } }

PCB pro=new PCB();

if(allData.get(ide) instanceof PCB){ pro=(PCB)allData.get(ide); }


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

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

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

马上注册会员

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