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