版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、計算機操作系統(tǒng)計算機操作系統(tǒng)實驗報告實驗報告學號:姓名:提交日期:2017.10.19成績:計算機與通信工程學院計算機與通信工程學院實驗 1 使用動態(tài)優(yōu)先權的進程調(diào)度算法的模擬1 實驗目的通過動態(tài)優(yōu)先權算法的模擬加深對進程概念和進程調(diào)度過程的理解。2 實驗內(nèi)容(1)實現(xiàn)對 N 個進程采用動態(tài)優(yōu)先權優(yōu)先算法的進程調(diào)度。(2)每個用來標識進程的進程控制塊 PCB 用結(jié)構來描述,包括以下字段:進程標識數(shù) ID。進程優(yōu)先數(shù) PRIORITY,并規(guī)定優(yōu)先數(shù)越大的進程,其優(yōu)先權越高。進程已占用的 CPU 時間 CPUTIME。進程還需占用的 CPU 時間 ALLTIME。當進程運行完畢時,ALLTIME
2、變?yōu)?0。進程的阻塞時間 STARTBLOCK,表示當進程再運行 STARTBLOCK 個時間片后,將進入阻塞狀態(tài)。進程被阻塞的時間 BLOCKTIME,表示已阻塞的進程再等待 BLOCKTIME 個時間片后,將轉(zhuǎn)換成就緒狀態(tài)。進程狀態(tài) STATE。隊列指針 NEXT,用來將 PCB 排成隊列。(3)優(yōu)先數(shù)改變的原則:進程在就緒隊列中停留一個時間片,優(yōu)先數(shù)加 1。進程每運行一個時間片,優(yōu)先數(shù)減 3。(4)假設在調(diào)度前,系統(tǒng)中有 5 個進程,它們的初始狀態(tài)如下:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BL
3、OCKTIME30000STATEreadyreadyreadyreadyready(5)為了清楚的觀察各進程的調(diào)度過程,程序應將每個時間片內(nèi)的情況顯示出來,參照的具體格式如下:RUNNING PROG:iREADY-QUEUE:-id1-id2BLOCK-QUEUE:-id3-id4= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =ID01234PRIORITYP0P1P2P3P4CUPTIMEC0C1C2C3C4ALLTIMEA0A1A2A3A4STARTBLOCKT0T1T2T3T4BLO
4、CKTIMEB0B1B2B3B4STATES0S1S2S3S43 實驗結(jié)果(1)流程圖(2)程序源代碼#include #include #include typedef struct nodeint id;/進程標識數(shù)int priority;/進程優(yōu)先數(shù),優(yōu)先數(shù)越大優(yōu)先級越高int cputime;/進程已占用的 CPU 時間int alltime;/進程還需占用的 CPU 時間int startblock;/進程的阻塞時間int blocktime;/進程被阻塞的時間char state10;/進程狀態(tài)struct node *next;/隊列指針PCB;PCB *CreatQueue(
5、int num)/創(chuàng)建一個就緒隊列int i;/i 為循環(huán)計數(shù)器PCB *head, *temp1, *temp2, *temp3;/head 為就緒隊列的頭指針,temp1 為創(chuàng)建進程結(jié)點的指針,temp2、temp3 分別為比較結(jié)點的前驅(qū)結(jié)點和比較結(jié)點for(i=0; iid,&temp1-priority,&temp1-cputime,&temp1-alltime,&temp1-startblock,&temp1-blocktime,temp1-state);if(i=0)/如果創(chuàng)建的是第一個結(jié)點head=temp1;head-next=NULL;
6、continue;if(head-priority priority)/如果創(chuàng)建結(jié)點中所保存的數(shù)比頭結(jié)點所保存的數(shù)要大,則直接把該結(jié)點插入到頭結(jié)點之前temp1-next=head;head=temp1;continue;temp2=head;/temp2 為比較結(jié)點的直接前驅(qū)結(jié)點temp3=temp2-next;/temp3 為比較的結(jié)點while(temp3!=NULL & temp3-priority=temp1-priority)/實現(xiàn)查找的功能temp2=temp3;temp3=temp2-next;temp2-next=temp1;temp1-next=temp3;retu
7、rn head;PCB *InsertQueue(PCB *head,PCB *run)/在就緒隊列中插入一個結(jié)點PCB *temp1,*temp2;/temp1 和 temp2 分別為比較結(jié)點的前驅(qū)和比較結(jié)點if(head=NULL)/如果就緒隊列為空head=run;head-next=NULL;else if(head-priority priority)/如果插入結(jié)點中所保存的數(shù)比頭結(jié)點所保存的數(shù)要大,則直接把該結(jié)點插入到頭結(jié)點之前run-next=head;head=run;elsetemp1=head;/temp1 為比較結(jié)點的直接前驅(qū)結(jié)點temp2=temp1-next;/tem
8、p2 為比較的結(jié)點while(temp2!=NULL & temp2-priority=run-priority)/實現(xiàn)查找的功能temp1=temp2;temp2=temp1-next;temp1-next=run;run-next=temp2;return head;main()int num;/num 為進程的個數(shù)int alltime=0;/用來保存所有進程需要占用的 CPU 時間PCB *head;/head 為就緒隊列的頭指針PCB *run=NULL;/run 為執(zhí)行進程結(jié)點的指針PCB *block=NULL;/block 為阻塞進程的結(jié)點PCB *temp;print
9、f(請輸入進程的個數(shù):);scanf(%d,&num);head=CreatQueue(num);getchar();temp=head;while(temp!=NULL)alltime+=temp-alltime;temp=temp-next;while(alltime 0)if(head!=NULL)run=head;/把就緒隊列中的第一個進程取出來執(zhí)行head=head-next;/就緒隊列的頭指針指向下一個結(jié)點strcpy(run-state,run);/狀態(tài)改為執(zhí)行run-next=NULL;/*顯示狀態(tài)*/printf(RUNNING PROG:%dn,run-id);/顯
10、示執(zhí)行進程printf(READY_QUEUE:);/顯示就緒進程temp=head;while(temp!=NULL)printf(-%d,temp-id);temp=temp-next;printf(n);printf(BLOCK_QUEUE:);/顯示阻塞進程if(block!=NULL)printf(%d,block-id);printf(n);printf(=n);printf(IDPRIORITYCPUTIME ALLTIME STARTBLOCKBLOCKTIMESTATEn);printf(%d%d%d%d%d%d%sn,run-id,run-priority,run-cput
11、ime,run-alltime,run-startblock,run-blocktime,run-state);temp=head;while(temp!=NULL)printf(%d%d%d%d%d%d%sn,temp-id,temp-priority,temp-cputime,temp-alltime,temp-startblock,temp-blocktime,temp-state);temp=temp-next;if(block!=NULL)printf(%d%d%d%d%d%d%s,block-id,block-priority,block-cputime,block-alltime
12、,block-startblock,block-blocktime,block-state);printf(n);printf(=n);/*顯示狀態(tài)*/*改變優(yōu)先數(shù)*/run-priority-=3;/執(zhí)行進程的優(yōu)先數(shù)減 3temp=head;while(temp!=NULL)/就緒進程的優(yōu)先數(shù)加 1temp-priority+=1;temp=temp-next;/*改變優(yōu)先數(shù)*/*改變執(zhí)行進程的有關參數(shù)*/run-cputime+=1;/執(zhí)行進程的已占用 CPU 時間加 1run-alltime-=1;/還需要的 CPU 時間減 1if(run-alltime!=0)if(run-start
13、block 0)/如果該進程會被阻塞run-startblock-=1;/執(zhí)行完一個時間片后,開始阻塞的時間減 1if(run-startblock=0)/如果阻塞的時間到了block=run;/執(zhí)行轉(zhuǎn)阻塞strcpy(block-state,b);/狀態(tài)轉(zhuǎn)阻塞alltime-;printf(n);continue;strcpy(run-state,r);/狀態(tài)轉(zhuǎn)就緒head=InsertQueue(head,run);/執(zhí)行轉(zhuǎn)就緒run=NULL;/*改變執(zhí)行進程的有關參數(shù)*/alltime-;else/*顯示狀態(tài)*/printf(RUNNING PROG:n);/顯示執(zhí)行進程printf(
14、READY_QUEUE:n);/顯示就緒進程printf(BLOCK_QUEUE:);/顯示阻塞進程if(block!=NULL)printf(%d,block-id);printf(n);printf(=n);printf(IDPRIORITYCPUTIME ALLTIME STARTBLOCKBLOCKTIMESTATEn);if(block!=NULL)printf(%d%d%d%d%d%d%s,block-id,block-priority,block-cputime,block-alltime,block-startblock,block-blocktime,block-state)
15、;printf(n);printf(=n);/*顯示狀態(tài)*/*改變阻塞進程的有關參數(shù)*/if(block!=NULL)/如果有阻塞進程block-blocktime-=1;/被阻塞的時間減 1if(block-blocktime=0) /如果被阻塞的時間到了strcpy(block-state,r);/狀態(tài)轉(zhuǎn)就緒head=InsertQueue(head,block);/阻塞轉(zhuǎn)就緒block=NULL;/*改變阻塞進程的有關參數(shù)*/getchar();4 思考(1)實際進程調(diào)度中,除了按調(diào)度算法選擇下一個執(zhí)行的進程外,還需要處理哪些工作?記錄系統(tǒng)中所有進程的執(zhí)行情況, 作為進程調(diào)度的準備, 進程管理模塊必須將系統(tǒng)中各個進程的執(zhí)行特征記錄
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Bobath技術閆秀麗講解
- 山東省17地市2013一模語文分解-詩歌鑒賞
- 3000噸二氯吡啶及2000噸苯并噁嗪酮醫(yī)藥中間體項目可行性研究報告寫作模板-拿地申報
- 2025年個人債務額度擔保服務合同樣本3篇
- 2025年度個人數(shù)字貨幣交易投資管理合同4篇
- 2025年度苗木養(yǎng)護與生態(tài)旅游合作合同4篇
- 二零二五年度農(nóng)業(yè)合作社員工錄用服務合同示范2篇
- 二零二五版苗木種植與生態(tài)農(nóng)業(yè)產(chǎn)業(yè)園區(qū)建設合同3篇
- 2025年內(nèi)河港口卸貨通道合同
- 2025年度煙酒行業(yè)品牌戰(zhàn)略合作合同3篇
- 道路瀝青工程施工方案
- 2025年度正規(guī)離婚協(xié)議書電子版下載服務
- 《田口方法的導入》課件
- 內(nèi)陸?zhàn)B殖與水產(chǎn)品市場營銷策略考核試卷
- 電力電纜工程施工組織設計
- 醫(yī)生給病人免責協(xié)議書(2篇)
- 票據(jù)業(yè)務居間合同模板
- 高中物理選擇性必修2教材習題答案
- 應急預案評分標準表
- “網(wǎng)絡安全課件:高校教師網(wǎng)絡安全與信息化素養(yǎng)培訓”
- 鋰離子電池健康評估及剩余使用壽命預測方法研究
評論
0/150
提交評論