資源簡介
用java寫的進程調度算法。有時間片輪轉法、先來先服務、最短運行時間優先調度算法、優先權調度算法、多級反饋隊列算法。代碼結構簡潔,邏輯縝密。
代碼片段和文件信息
package?process;
import?java.util.*;
import?java.lang.*;
public?class?Process?{
????
????static???int[][]??record;
????static?int?time;?
????static??Vector?RunProcess;
????static??Vector?HasRunProcess;
????static???Vector?v;
????
????public??Process(){?
????}
???
????public?static?void?main(String[]?args)?{
????????record?=new?int[10][50];
????????time=0;
????????RunProcess=new?Vector();
????????v=new?Vector();
????????HasRunProcess=new?Vector();
????????
?????????PCB?p1=new?PCB();???
?????????PCB?p2=new?PCB();?
?????????PCB?p3=new?PCB();?
?????????
?????????p1.startTime=0;
?????????p1.needRunTime=9;
?????????p1.priority=0;
?????????p1.PID=0;
?????????
?????????v.add(p1);
?????????p2.PID=1;
?????????p2.startTime=3;
?????????p2.needRunTime=3;
?????????p2.priority=1;
?????????v.add(p2);
?????????
?????????p3.PID=2;
?????????p3.startTime=4;
?????????p3.needRunTime=2;
?????????p3.priority=2;
?????????v.add(p3);
?????????
?????????reset();
?????????System.out.println(“先到先服務調度算法“);
?????????FCFS();
?????????print();
?????????
?????????
?????????reset();
?????????System.out.println(“短作業優先調度算法“);
?????????SJF();
?????????print();
?????????
?????????reset();
?????????System.out.println(“高優先權優先調度算法(非搶占)“);
?????????FPF();?
????????print();
?????????
?????????reset();
??????????System.out.println(“高優先權優先調度算法(搶占)“);
?????????FPF_grab?();
?????????print();
?????????
?????????reset();
??????????System.out.println(“動態優先權優先調度(搶占)“);
?????????ActivFPF_grab();
?????????print();?
?????????
?????????reset();
??????????System.out.println(“時間片輪轉法“);
?????????RR();
?????????print();
?????????
?????????reset();
?????????System.out.println(“三級反饋調度算法“);
?????????MFB();
?????????print();
????}
????
???static?void??FCFS(){???
???????time=0;
????????refreshProcessVector();
??????while(RunProcess.size()>0)
??????{
??????????PCB?p=(PCB)RunProcess.get(0);
??????????p.startRunTime=time;
??????????for(int?i=0;i ????????????run(p);
????????????time++;
???????????refreshProcessVector();
????????}
??????????p.endTime=time;
??????????
?????????HasRunProcess.add(RunProcess.get(0));
?????????RunProcess.remove(0);
???????
??????}
????????
????}
???static?void?SJF(){
?????time=0;??
??????refreshProcessVector();
?????SJFCompare?sjfcmp=?new??SJFCompare();
??????while(RunProcess.size()>0)
??????{
???????????Collections.sort(RunProcesssjfcmp);
??????????PCB?p=(PCB)RunProcess.get(0);
??????????p.startRunTime=time;
??????????for(int?i=0;i ????????????run(p);
????????????time++;
???????????refreshProcessVector();
????????}
??????????p.endTime=time;
??????????HasRunProcess.add(RunProcess.get(0));
????????RunProcess.remove(0);
???????
??????}
??????????
??????}
??????
???static?void?FPF?(){//非搶占?最高優先級調度算法
????????time=0;
????????refreshProcessVector();
???????FBFCompare?fbfcmp=?new??FBFCompare();
??????while(RunProcess.size()>0)
??????{
???????????Collections.sort(RunProcessfbfcmp);
??????????PCB?p=(PCB)RunProcess.get(0);
??????????p.sta
- 上一篇:Java人員信息管理系統
- 下一篇:spring 定時器完整 demo
評論
共有 條評論