Java 動態(tài)模擬操作系統(tǒng)進(jìn)程調(diào)度算法
實(shí)驗(yàn)?zāi)康?/h2>
通過對進(jìn)程調(diào)度算法的模擬,進(jìn)一步理解進(jìn)程的基本概念,加深對進(jìn)程運(yùn)行狀態(tài)和進(jìn)程調(diào)度過程、調(diào)度算法的理解。
設(shè)備與環(huán)境
硬件設(shè)備:PC機(jī)一臺
軟件環(huán)境:安裝Windows操作系統(tǒng),并安裝相關(guān)的程序開發(fā)環(huán)境,如C \C++\Java 等編程語言環(huán)境。
實(shí)驗(yàn)內(nèi)容
實(shí)驗(yàn)采用了java語言編程模擬N個進(jìn)程采用動態(tài)高優(yōu)先權(quán)優(yōu)先進(jìn)程調(diào)度算法。該算法就是按照優(yōu)先權(quán)的大小運(yùn)行進(jìn)程,如果一個時間片內(nèi)未運(yùn)行完,則將優(yōu)先權(quán)數(shù)減3后再插入到鏈表中按priority的順序進(jìn)行排序找到最大的priority作為下一個運(yùn)行進(jìn)程且在就緒隊(duì)列里面的進(jìn)程priority會加1。
主模塊:
動態(tài)priority排序模塊:
用來保證頭部永遠(yuǎn)最大
到達(dá)時間進(jìn)入就緒狀態(tài)模塊:
計算周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間:
實(shí)驗(yàn)結(jié)果及分析
輸入的信息
初始權(quán)值都為100,needtime為還需要的時間
進(jìn)程 到達(dá)時刻 服務(wù)時間
A 0 3
B 2 6
C 4 4
D 6 5
E 8 2
以A為例:
最后結(jié)束時:
部分代碼展示?
//創(chuàng)建結(jié)構(gòu)
class PCB{
String ID;
int priority=-1;
int cputime;//服務(wù)的時間
int needtime;//進(jìn)程還需的時間
String state="wait";
int arrivetime;
PCB next;
public PCB(String ID,int priority,int cputime,int arrivetime){
this.ID=ID;
this.priority=priority;
this.cputime=cputime;
this.arrivetime=arrivetime;
}
}
判斷是否到達(dá),進(jìn)程進(jìn)入時間 for(int i=0;i<arr.size();i++){ if(h==arr.get(i).arrivetime){ Dynamic_priority.sort(arr.get(i)); arr.remove(i);}}
//將進(jìn)程轉(zhuǎn)為就緒態(tài)并排序 public static void sort(PCB pcb){ PCB tmp=null; if(ready==null){//當(dāng)頭結(jié)點(diǎn)為空 ready=pcb; tail=pcb;} else {if(pcb.priority>ready.priority){//如果這個結(jié)點(diǎn)priority大于頭priority pcb.next=ready; ready=pcb;} else { boolean m=false; tmp=ready;//q while (m==false){ if(tail.priority>=pcb.priority){//插入尾端 tail.next=pcb; tail=pcb; pcb.next=null; m=true; } else { if(tmp.priority>=pcb.priority&&pcb.priority>tail.priority){//逐漸遍歷插到tmp前 pcb.next=tmp.next; tmp.next=pcb; m=true; } else { tmp=tmp.next;
到此這篇關(guān)于Java 動態(tài)模擬操作系統(tǒng)進(jìn)程調(diào)度算法的文章就介紹到這了,更多相關(guān)Java? 操作系統(tǒng)進(jìn)程調(diào)度算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis Example Criteria like 模糊查詢問題
這篇文章主要介紹了mybatis Example Criteria like 模糊查詢問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Java字符編碼簡介_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java字符編碼簡介,本文主要包括以下幾個方面:編碼基本知識,Java,系統(tǒng)軟件,url,工具軟件等,感興趣的朋友一起看看吧2017-08-08