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

2019-08-31 15:10

readyData3.removeElementAt(0);

Integer c=new Integer(0); temp3.addElement(c); Integer pic;

pic=new Integer(30);

temp3.addElement(pic); runData.clear();

runData.addElement(temp3); flag=3; }

else{

//JOptionPane.showMessageDialog(null, \就绪队列为空,运行结束!\\注意\ }

}

public void addreadyData(){ //算法模式选择 try{

if(item.equals(\静态时间片轮转法\ readyData1.clear(); for(int i=0;i

readyData1.add(RR.get(i)); }

// readyData1=(Vector)RR.clone(); }

else if(item.equals(\动态时间片轮转法\ readyData1.clear();

for(int i=0;i

}

else if(item.equals(\多级反馈调度算法\ readyData1.clear();

for(int i=0;i

}catch(NullPointerException m){ m.printStackTrace(); } }

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

public class ThreadRunning extends Thread{ //主线程操作 @SuppressWarnings(\

public void run(){

try{

while(true) { Vector temp2=new Vector(); while(runData.isEmpty()){ addrunData(); if(king!=-1) break; }

if(king!=-1&&runData.isEmpty()){ Vector check=new Vector(); for(int i=0;i

int idN=(Integer)check.get(0);

if(idN==king){ PCB pro=new PCB();

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

String stT=new String();

Date startTime=new Date(); pro.inputStartTime(startTime);

stT=pro.getStartTime(); check.setElementAt(stT,4); Integer c=new Integer(0); check.addElement(c);

Integer pi=new Integer((Integer)check.get(3)); check.addElement(pi); RR.removeElementAt(i);

operation();

addreadyData(); runData.addElement(check); king=-1; Unstop=true; } }

}

temp2=(Vector)runData.get(0); while(!active); sleep(980);

Integer r=(Integer)temp2.get(3); Integer n=(Integer)temp2.get(5); Integer p=(Integer)temp2.get(6);

if(n>=r){ //完成处理

String finishT=new String(); Integer ide=(Integer)temp2.get(0); Date finishTime=new Date(); PCB proc;

proc=(PCB)allData.get(ide); proc.inputFinishTime(finishTime);

finishT=proc.getFinishTime(); Double pt=new Double(proc.getPerTime());

Vector((Vector)waitData.get(0));

Integer runTime=new Integer(proc.getRunTime()); temp2.setElementAt(runTime,3); temp2.setElementAt(finishT,5); temp2.setElementAt(pt,6);

finishData.addElement(temp2); if(Unstop){

if(waitData.size()!=0){ Vector wakeup=new

waitData.removeElementAt(0); int idN=(Integer)wakeup.get(0); PCB pro=new PCB();

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

String stT=new String(); Date startTime=new Date();

pro.inputStartTime(startTime);

stT=pro.getStartTime(); wakeup.setElementAt(stT,4); Integer c=new Integer(0); wakeup.addElement(c);

Integer pi=new Integer((Integer)wakeup.get(3)); wakeup.addElement(pi);

runData.clear();

runData.addElement(wakeup); }

else{

Unstop=false; runData.clear(); addrunData(); } }

else{

runData.clear();

addrunData();

} }

else if(king!=-1&&!runData.isEmpty()){ temp2.setElementAt((r-n),3); temp2.removeElementAt(6); temp2.removeElementAt(5); if(flag==1){

String st=new String(); temp2.setElementAt(st,4); RR.add(temp2); }

else if(flag==2){

readyData2.add(temp2); }

else if(flag==3){

readyData3.add(temp2); }

operation();

Vector check=new Vector();

for(int i=0;i

if(idN==king){ PCB pro=new PCB();

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

String stT=new String(); Date startTime=new Date(); pro.inputStartTime(startTime);

stT=pro.getStartTime(); check.setElementAt(stT,4); Integer c=new Integer(0); check.addElement(c);

Integer pi=new Integer((Integer)check.get(3)); check.addElement(pi); RR.removeElementAt(i); operation(); addreadyData();

runData.clear();

runData.addElement(check); king=-1;

Unstop=true;

} } }

else if(n>=p&&!(item.equals(\动态时间片轮转法\

if(item.equals(\多级反馈调度算法\ temp2.setElementAt((r-p),3); temp2.removeElementAt(6); \

temp2.removeElementAt(5); readyData2.add(temp2); addrunData(); } else

if(item.equals(\多级反馈调度算 temp2.setElementAt((r-p),3); temp2.removeElementAt(6); temp2.removeElementAt(5); readyData3.add(temp2); addrunData(); }

else{

temp2.setElementAt((r-p),3); String st=new String(); temp2.setElementAt(st,4); temp2.removeElementAt(6); temp2.removeElementAt(5); RR.add(temp2); operation(); addreadyData(); addrunData(); }

}

else if(!runData.isEmpty()){

if(item.equals(\动态时间片轮转法\ int pty=(Integer)temp2.get(1); if(readyData1.isEmpty()){ if(n%p==0&&n!=0){ if(pty>1){ pty--; p+=5;

temp2.setElementAt(p,6); temp2.setElementAt(pty,1); }


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

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

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

马上注册会员

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