




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統(tǒng)課程實驗報告實驗名稱:動態(tài)高優(yōu)先權優(yōu)先姓名:學號:地點:指導老師:專業(yè)班級:一、實驗內(nèi)容:1、 實驗內(nèi)容:2、 模擬實現(xiàn)動態(tài)高優(yōu)先權優(yōu)先(若數(shù)值越大優(yōu)先權越高,每運行一個時間單位優(yōu)先權-n,若數(shù)值越小優(yōu)先權越高,沒運行一個時間單位優(yōu)先權+n) ,具體如下:3、 設置作業(yè)體:作業(yè)名,作業(yè)的到達時間,服務時間,初始優(yōu)先權,作業(yè)狀態(tài)(w等待,r運行 ,f完成),作業(yè)間的鏈接指針4、 作業(yè)初始化:由用戶輸入作業(yè)名、服務時間、初始優(yōu)先權進行初始化,同時,初始化作業(yè)的狀態(tài)為w。5、 顯示函數(shù):在作業(yè)調度前、調度中和調度后進行顯示。6、 排序函數(shù):對就緒狀態(tài)的作業(yè)按照優(yōu)先權排序。優(yōu)先權相同時進入等待
2、隊列時間早的作業(yè)在前。注意考慮到達時間7、 調度函數(shù):每次從等待隊列隊首調度優(yōu)先權最高的作業(yè)執(zhí)行,狀態(tài)變化。并在執(zhí)行一個時間單位后優(yōu)先權變化,服務時間變化,狀態(tài)變化。當服務時間為0 時,狀態(tài)變?yōu)閒。8、 刪除函數(shù):撤銷狀態(tài)為f的作業(yè)。實驗要求:9、 測試數(shù)據(jù)可以隨即輸入或從文件中讀入。10、必須要考慮到作業(yè)的到達時間11、最終能夠計算每一個作業(yè)的周轉時間。三、實驗代碼#include #include struct pcb charp_name20; intp_priority; intp_needtime; intp_runtime; charp_state; struct pcb* nex
3、t; ; voidhighpriority(); voidroundrobin(); void information(); char choice(); struct pcb* sortlist(pcb* hl); int main() information(); char choice = choice(); switch(choice) case 1: system(cls); highpriority(); break; case 2: system(cls); roundrobin(); break; default: break; system(pause); return 0;
4、 char choice() printf(nn); printf( * n); printf( 進程調度演示 n); printf( * nnn); printf( 1.演示最高優(yōu)先數(shù)優(yōu)先算法。n); printf( 2.演示輪轉法算法。 n); printf( 3.退出程序。 nnnn); printf( 選擇進程調度方法 :); charch = getchar(); returnch; system(cls); voidhighpriority() struct pcb *processes, *pt; /pt 作為臨時節(jié)點來創(chuàng)建鏈表processes = pt = (struct p
5、cb*)malloc(sizeof(struct pcb); for (inti = 0; i != 5; +i) struct pcb *p = (struct pcb*)malloc(sizeof(struct pcb); printf( 進程號 no.%d:n, i); printf( 輸入進程名: ); scanf(%s, p-p_name); printf( 輸入進程優(yōu)先數(shù): ); scanf(%d, &p-p_priority); printf( 輸入進程運行時間: ); scanf(%d, &p-p_needtime); p-p_runtime = 0; p-p_
6、state = w; p-next = null; pt-next = p; pt = p; printf(nn); getchar(); /接受回車/processes作為頭結點來存儲鏈表processes = processes-next; int cases = 0; struct pcb *psorted = processes; while (1) +cases; pt = processes; /對鏈表按照優(yōu)先數(shù)排序/psorted用來存放排序后的鏈表psorted = sortlist(psorted); printf(the execute number: %dnn, case
7、s); printf(* 當前正在運行的進程是:%sn, psorted-p_name); psorted-p_state = r; printf(qname state super ndtime runtimen); printf(%st%ct%dt%dt%dtnn, psorted-p_name, psorted-p_state, psorted-p_priority, psorted-p_needtime, psorted-p_runtime); pt-p_state = w; psorted-p_runtime+; psorted-p_priority-; printf(* 當前就緒狀
8、態(tài)的隊列為:nn); /pt 指向已經(jīng)排序的隊列pt = psorted-next; while (pt != null) printf(qname state super ndtime runtimen); printf(%st%ct%dt%dt%dtnn, pt-p_name, pt-p_state, pt-p_priority, pt-p_needtime, pt-p_runtime); pt = pt-next; /pt 指向已經(jīng)排序的鏈表,判斷鏈表是否有已用時間啊等于需要時間的pt = psorted; struct pcb *ap; ap = null; /ap 指向 pt 的前一
9、個節(jié)點while (pt != null) if (pt-p_needtime = pt-p_runtime) if (ap = null) pt = 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; stru
10、ct pcb* r = hl; while (r != null) struct pcb* t = r-next; struct pcb* cp = sl; struct pcb* ap = null; while (cp != null) if (r-p_prioritycp-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; /輪轉算法voidroundrobin() struct
11、 pcb *processes, *pt; /pt 作為臨時節(jié)點來創(chuàng)建鏈表processes = pt = (struct pcb*)malloc(sizeof(struct pcb); for (inti = 0; i != 5; +i) struct pcb *p = (struct pcb*)malloc(sizeof(struct pcb); printf( 進程號 no.%d:n, i); printf( 輸入進程名: ); scanf(%s, p-p_name); printf( 輸入進程運行時間: ); scanf(%d, &p-p_needtime); p-p_runt
12、ime = 0; p-p_state = w; p-next = null; pt-next = p; pt = p; printf(nn); getchar(); /接受回車/processes作為頭結點來存儲鏈表processes = processes-next; int cases = 0; while (1) +cases; pt = processes; printf(the execute number: %dnn, cases); printf(* 當前正在運行的進程是:%sn, pt-p_name); pt-p_state = r; printf(qname state su
13、per ndtime runtimen); printf(%st%ct%dt%dt%dtnn, pt-p_name, pt-p_state, pt-p_priority, pt-p_needtime, pt-p_runtime); pt-p_state = w; pt-p_runtime+; pt-p_priority-; printf(* 當前就緒狀態(tài)的隊列為:nn); pt = pt-next; while (pt != null) printf(qname state super ndtime runtimen); printf(%st%ct%dt%dt%dtnn, pt-p_name,
14、 pt-p_state, pt-p_priority, pt-p_needtime, pt-p_runtime); pt = pt-next; /檢測是否運行時間等于需要時間,是的話從隊列里面刪除,不是的話加到隊列最尾部pt = processes; if (pt-p_needtime = pt-p_runtime) pt-p_state = c; pt = processes-next; processes = pt; else if (pt -next != null) /尋找最后一個節(jié)點while (pt-next != null) pt = pt-next; struct pcb* p
15、tem;/臨時節(jié)點用來幫助把頭結點插到尾部ptem = processes-next; pt-next = processes; processes-next = null; processes = ptem; pt = processes; if (pt = null) break; getchar(); 四、實驗結果輸入進程名字,進程優(yōu)先數(shù)和進程時間:圖 3 圖 4 圖 5 圖 6 圖 7 圖 8 ps:僅顯示前 6 個時間片。五、實驗總結靜態(tài)優(yōu)先級(1)含義靜態(tài)優(yōu)先級是在創(chuàng)建進程時確定進程的優(yōu)先級,并且規(guī)定它在進程的整個運行期間保持不變。(2)確定優(yōu)先級的依據(jù)確定優(yōu)先級的依據(jù)通常有下面幾個方面:進程的類型。通常系統(tǒng)進程優(yōu)先級高于一般用戶進程的優(yōu)先級;交互型的用戶進程的優(yōu)先級高于批處理作業(yè)所對應的進程的優(yōu)先級。進程對資源的需求。例如,進程的估計執(zhí)行時間及內(nèi)存需求量少的進程,應賦于較高的優(yōu)先級,這有利縮小作業(yè)的平均周轉時間。根據(jù)用戶的要求。用戶可以根據(jù)自己作業(yè)的緊迫程度來指定一個合適的優(yōu)先級。(3)優(yōu)缺點靜態(tài)優(yōu)先級法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年小貸行業(yè)社會責任實踐計劃
- 2025心理健康教育評估與反饋方案
- 三年級下冊音樂期末復習計劃
- 制造業(yè)冬季安全防疫措施與應急處理方案
- IT行業(yè)項目團隊協(xié)作心得體會
- 節(jié)日慶祝鉆石畫裝飾活動計劃
- 高等院校教師禮儀與職業(yè)素養(yǎng)心得體會
- 2024年天津市腫瘤醫(yī)院健康管理中心招聘筆試真題
- 停車場管理系統(tǒng)C語言實習報告
- 環(huán)衛(wèi)設施設備維修保養(yǎng)策略
- 衛(wèi)星遙感企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- DB54/T 0118-2017 地理標志產(chǎn)品鹽井葡萄酒(干型)
- 2025建筑工程施工監(jiān)理合同條件標準版樣書
- Unit11Grammarinuse課件仁愛科普版(2024)七年級英語下冊
- 規(guī)范夜市攤位管理制度
- 公路水運檢測師《水運材料》考前沖刺必會題(附答案)
- 2024年學校安全生產(chǎn)月活動實施方案
- 羊初乳知識培訓課件
- 牛肉面行業(yè)標準
- 2025屆內(nèi)蒙古自治區(qū)高考化學三模試卷含解析
- 企業(yè)國際差旅服務標準與實踐分享
評論
0/150
提交評論