動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先_第1頁(yè)
動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先_第2頁(yè)
動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先_第3頁(yè)
動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先_第4頁(yè)
動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)操作系統(tǒng)課程實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)名稱:動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先算法姓 名: 王智昆 學(xué) 號(hào): 3 地 點(diǎn): 4#302 指導(dǎo)老師: 張旭 專業(yè)班級(jí): 運(yùn)維1402 實(shí)驗(yàn)?zāi)康模菏煜げ⒄莆談?dòng)態(tài)高優(yōu)先權(quán)優(yōu)先算法。用C語(yǔ)言編程實(shí)現(xiàn)動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先算法二、實(shí)驗(yàn)內(nèi)容:用高級(jí)語(yǔ)言模擬實(shí)現(xiàn)動(dòng)態(tài)分區(qū)存儲(chǔ)管理,要求:模擬實(shí)現(xiàn)動(dòng)態(tài)高優(yōu)先權(quán)優(yōu)先(若數(shù)值越大優(yōu)先權(quán)越高,每運(yùn)行一個(gè)時(shí)間單位優(yōu)先權(quán)-n,若數(shù)值越小優(yōu)先權(quán)越高,沒(méi)運(yùn)行一個(gè)時(shí)間單位優(yōu)先權(quán)+n),具體如下:設(shè)置作業(yè)體:作業(yè)名,作業(yè)的到達(dá)時(shí)間,服務(wù)時(shí)間,初

2、始優(yōu)先權(quán),作業(yè)狀態(tài)(W等待,R運(yùn)行,F完成),作業(yè)間的鏈接指針作業(yè)初始化:由用戶輸入作業(yè)名、服務(wù)時(shí)間、初始優(yōu)先權(quán)進(jìn)行初始化,同時(shí),初始化作業(yè)的狀態(tài)為W。顯示函數(shù):在作業(yè)調(diào)度前、調(diào)度中和調(diào)度后進(jìn)行顯示。排序函數(shù):對(duì)就緒狀態(tài)的作業(yè)按照優(yōu)先權(quán)排序。優(yōu)先權(quán)相同時(shí)進(jìn)入等待隊(duì)列時(shí)間早的作業(yè)在前。注意考慮到達(dá)時(shí)間調(diào)度函數(shù):每次從等待隊(duì)列隊(duì)首調(diào)度優(yōu)先權(quán)最高的作業(yè)執(zhí)行,狀態(tài)變化。并在執(zhí)行一個(gè)時(shí)間單位后優(yōu)先權(quán)變化,服務(wù)時(shí)間變化,狀態(tài)變化。當(dāng)服務(wù)時(shí)間為0時(shí),狀態(tài)變?yōu)镕。刪除函數(shù):撤銷(xiāo)狀態(tài)為F的作業(yè)。#include #include struct PCB char p_name20; int p_priority;

3、 int p_needTime; int p_runTime; char p_state; struct PCB* next;void HighPriority();void Information();char Choice();struct PCB* SortList(PCB* HL);int main() printf( 演示最高優(yōu)先數(shù)優(yōu)先算法nn); HighPriority(); return 0;void HighPriority() struct PCB *processes, *pt; /pt作為臨時(shí)節(jié)點(diǎn)來(lái)創(chuàng)建鏈表 processes = pt = (struct PCB*)m

4、alloc(sizeof(struct PCB); for (int i = 0; i != 5; +i) struct PCB *p = (struct PCB*)malloc(sizeof(struct PCB); printf(進(jìn)程號(hào)No.%d:n, i); printf(輸入進(jìn)程名 輸入進(jìn)程優(yōu)先數(shù) 輸入進(jìn)s程運(yùn)行時(shí)間 n); scanf(%s%d%d, p-p_name,&p-p_priority,&p-p_needTime); p-p_runTime = 0; p-p_state = W; p-next = NULL; pt-next = p; pt = p; printf(nn);

5、 getchar(); /接受回車(chē) /processes作為頭結(jié)點(diǎn)來(lái)存儲(chǔ)鏈表 processes = processes-next; int cases = 0; struct PCB *psorted = processes; while (1) +cases; pt = processes; /對(duì)鏈表按照優(yōu)先數(shù)排序 /psorted用來(lái)存放排序后的鏈表 psorted = SortList(psorted); printf(The execute number: %dnn, cases); printf(* 當(dāng)前正在運(yùn)行的進(jìn)程是:%sn, psorted-p_name); psorted-

6、p_state = R; printf(qname state super ndtime runtimen); printf( %st%ct%dt%dtnn, psorted-p_name, psorted-p_state, psorted-p_needTime, psorted-p_runTime); pt-p_state = W; psorted-p_runTime+; psorted-p_priority-; printf(* 當(dāng)前就緒狀態(tài)的隊(duì)列為:nn); /pt指向已經(jīng)排序的隊(duì)列 pt = psorted-next; while (pt != NULL) printf(qname s

7、tate super ndtime runtimen); printf( %st%ct%dt%dtnn,psorted-p_name, psorted-p_state, psorted-p_needTime, psorted-p_runTime); pt = pt-next; /pt指向已經(jīng)排序的鏈表,判斷鏈表是否有已用時(shí)間啊等于需要時(shí)間的 pt = psorted; struct PCB *ap; ap = NULL; /ap指向pt的前一個(gè)節(jié)點(diǎn) while (pt != NULL) if (pt-p_needTime = pt-p_runTime) if (ap = NULL) pt =

8、psorted-next; psorted = pt; else ap-next = pt-next; ap = pt; pt = pt-next; if (psorted-next = NULL) break; getchar(); struct PCB* SortList(PCB* HL) struct PCB* SL; SL = (struct PCB*)malloc(sizeof(struct PCB); SL = NULL; struct PCB* r = HL; while (r != NULL) struct PCB* t = r-next; struct PCB* cp = S

9、L; struct PCB* ap = NULL; while (cp != NULL) if (r-p_priority cp-p_priority) break; else ap = cp; cp = cp-next; if (ap = NULL) r-next = SL; SL = r; else r-next = cp; ap-next = r; r = t; return SL;四、實(shí)驗(yàn)結(jié)果五、實(shí)驗(yàn)總結(jié)本次試驗(yàn)感覺(jué)難度比較大,有很多生疏的指令。但在老師和同學(xué)的幫助下都解決了。 總體上還是對(duì)進(jìn)程概念和進(jìn)程調(diào)度過(guò)程有了一個(gè)更深的理解。在這次試驗(yàn)中也暴露出自己不少的缺點(diǎn),希望以后試驗(yàn)中可以改正! 本文利用C 語(yǔ)言對(duì)動(dòng)態(tài)優(yōu)先權(quán)的進(jìn)程調(diào)度算法進(jìn)行了設(shè)計(jì)和模擬實(shí)現(xiàn)。程序可實(shí)現(xiàn)動(dòng)態(tài)的進(jìn)行各個(gè)進(jìn)程相關(guān)信息的錄入, 如CPUTIME、ALLTIME、STARTBLOCK、BLOCKTIME 等信息。并充分考慮了進(jìn)程在執(zhí)行過(guò)程中可能發(fā)生的多種情況, 更好的體現(xiàn)了進(jìn)程的就緒態(tài)、執(zhí)行

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論