公眾:類PrivilegeProcess {
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、甘南ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的甘南網(wǎng)站制作公司
公共靜態(tài)無效的主要(字串[] args){
MyQueue的MyQueue的新MyQueue的();/ /聲明隊(duì)列
印刷電路板[PCB = {新的PCB(001 ,8,1),新的PCB(002,7,9),新的PCB(003,3,8),新的PCB(004,1,7),新的PCB(005,7,4)};
PCB段=新的PCB();
(INT I = 0; pcb.length; + +){/ /初始化先進(jìn)行排序,選擇排序這里使用的是高優(yōu)先級的一線隊(duì)
(J =我; pcb.length; J + +){
(PCB [I]。特權(quán)PCB [J]。特權(quán)){
段= PCB [1];
PCB [I] = PCB [J];
PCB [J] =段;
}
}
}
體系。通過out.println(“入隊(duì)后第一時(shí)間的進(jìn)程的順序:”);
(INT I = 0; pcb.length; + +){
的System.out調(diào)用println(第一次入隊(duì)#程序名稱:“+ PCB [我]。名稱+ totaltime:”+ PCB [I]。totaltime +“的”特權(quán)“+ PCB [我]。特權(quán)); }
();
myqueue.start(PCB);
}
}
類MyQueue的{
INT指數(shù)= 0;
PCB [] PC =新的PCB [5];
PCB [] PC1 =新的PCB [4];
PCB溫度=新的PCB() BR /公共無效排隊(duì)(PCB工藝){/ /排隊(duì)算法
(指數(shù)== 5){
(“出界!”);
返回
}
PC [索引] =進(jìn)程;
指數(shù)+ +;
}
公共:PCB DEQUEUE(){/ /出隊(duì)算法(索引== 0)
返回空;
(INT I = 0; pc1.length; + +){
PC1 [I] = PC [ +1];
}
指數(shù) -
溫度= PC [0];
(INT I = 0; pc1.length; + +){ BR / PC [I] = PC1 [I];
}
回報(bào)條件;
}
公共無效啟動(dòng)(PCB [] PC){/ /進(jìn)程表算法
(PC [0]。isNotFinish ==真| | PC [1 isNotFinish ==真| | PC [2 isNotFinish ==真| | PC [3]。時(shí)isNotFinish ==真| | PC [4]。isNotFinish ==){
/ / *注:| |運(yùn)算符都是假的,所有的表達(dá)式結(jié)果為假,否則真
(INT I = 0; PC長度; + +){
PC [I]。運(yùn)行(這一點(diǎn)); /} 的System.out.println();
(INT I = 0; pc.length; + +){/ /處理每個(gè)運(yùn)行一次運(yùn)行的時(shí)間片的長度重新排序優(yōu)先一旦
(J =我; pc.length; J + +){
如果(PC [I]特權(quán)PC [J]。特權(quán)){
溫度= PC [I];
PC [I] = PC [J];
PC [J] =溫度;
}
}
}
}
}
}
類PCB {/ /聲明過程級
和int名,totaltime ,運(yùn)行時(shí)特權(quán);
布爾isNotFinish的;
公眾PCB(){
}
公開PCB(名稱,詮釋totaltime特權(quán)){
this.name =的名稱;/ /進(jìn)程名
this.totaltime = totaltime ;/ /
this.privilege =特權(quán);/ /總時(shí)間優(yōu)先 this.runtime = 2 ;/ /時(shí)間片值是2
this.isNotFinish =真;/ /是否執(zhí)行完成
(“初始值:程序名稱:”+名+“totaltime:”+ totaltime +“特權(quán)”+特權(quán));
System.out的。調(diào)用println();
}
MyQueue的MQ公共無效的run(){/ /處理的基礎(chǔ)上實(shí)施的時(shí)間片算法
(totalTime 1){ totaltime =運(yùn)行;/ /總時(shí)間大于1,總時(shí)間=總時(shí)間 - 時(shí)間片
特權(quán) -
(“程序名稱:”+姓名+“ remaintime:“+ +”特權(quán)“+特權(quán)); totaltime
的} else if(totaltime == 1){
totaltime - ;/ /總時(shí)間為1時(shí),執(zhí)行時(shí)間為1
特權(quán) -
(“程序名稱:”+姓名+“remaintime:”+ totaltime +“特權(quán)”+特權(quán));
}其他{
isNotFinish =假;/ / 0,將isNotFinish標(biāo)志設(shè)置為假
}
如果(isNotFinish ==真){br mq.deQueue();
mq.enQueue(本);
}
}
}
可以的,想必你是個(gè)學(xué)生,而且正在學(xué)習(xí)的是操作系統(tǒng)這門課程。我想你們老師只是會教你們操作系統(tǒng)這門課程,會教你們先來先服務(wù),時(shí)間片輪流這幾種進(jìn)程調(diào)度的方法。如果你上課聽懂了,那么你要做的是熟悉這個(gè)思想,而不是真的要去實(shí)現(xiàn)操作系統(tǒng)級別的進(jìn)程調(diào)度(這對于一個(gè)學(xué)生來說很有難度,當(dāng)然天才除外)。
所以目的明確,辦事的方法不一樣,你只要熟悉JAVA進(jìn)程編程這一塊,你就可以動(dòng)手開始寫了,你可以用JAVA帶的進(jìn)程類thread,因?yàn)槟愕哪康氖菫榱耸煜みM(jìn)程調(diào)度算法,而不是如何去創(chuàng)建一個(gè)進(jìn)程(創(chuàng)建JAVA為你封裝好了)。至于如何實(shí)現(xiàn)這些調(diào)度算法就靠你自己寫了。
也許看到這里,你會覺得我一點(diǎn)有用的代碼都沒貼出來,原因很簡單:我沒時(shí)間寫這種代碼(多進(jìn)程編程一直是編程的難點(diǎn),特別是資源的共享這一塊)。第2,成果是要自己爭取,別人不會給你最終的答案,最多給你指個(gè)方向(出來工作這么久,沒人給過現(xiàn)成的,能跑的代碼。給個(gè)方向就已經(jīng)非常感激別人了,很多時(shí)候,別人理都賴的理你)。
這個(gè)實(shí)驗(yàn)我事先搜過,就是因?yàn)榘俣葲]有才留的。
王一凡是吧,明天你找我一下,咱倆好好聊聊。