實驗一 處理器調(diào)度設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序資料_第1頁
實驗一 處理器調(diào)度設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序資料_第2頁
實驗一 處理器調(diào)度設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序資料_第3頁
實驗一 處理器調(diào)度設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序資料_第4頁
實驗一 處理器調(diào)度設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序資料_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗一 處理器調(diào)度 一、實驗內(nèi)容 選擇一個調(diào)度算法,實現(xiàn)處理器調(diào)度。 二、實驗?zāi)康?在采用多道程序設(shè)計的系統(tǒng)中,往往有若干個進程同時處于就緒狀態(tài)。當(dāng)就緒進程個數(shù)大于處理器數(shù)時,就必須依照某種策略來決定哪些進程優(yōu)先占用處理器。本實習(xí)模擬在單處理器情況下的處理器調(diào)度,幫助學(xué)生加深了解處理器調(diào)度的工作。 三、實驗題目 第二題:設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序。 提示: (1) 假定系統(tǒng)有五個進程,每一個進程用一個進程控制塊PCB來代表。進程控制塊的 格式為: 進程名 指針 要求運行時間 已運行時間 狀態(tài) 其中, 進程名作為進程的標識,假設(shè)五個進程的進程名分別為Q,Q,Q,Q,Q。 5412

2、3 指針進程按順序排成循環(huán)隊列,用指針指出下一個進程的進程控制塊的首地址 最后一個進程的指針指出第一個進程的進程控制塊首地址。 要求運行時間假設(shè)進程需要運行的單位時間數(shù)。 已運行時間假設(shè)進程已經(jīng)運行的單位時間數(shù),初始值為“0”。 狀態(tài)有兩種狀態(tài),“就緒”和“結(jié)束”,初始狀態(tài)都為“就緒”,用“R”表示。 當(dāng)一個進程運行結(jié)束后,它的狀態(tài)為“結(jié)束”,用“E”表示。 (2) 每次運行所設(shè)計的處理器調(diào)度程序前,為每個進程任意確定它的“要求運行時間”。 (3) 把五個進程按順序排成循環(huán)隊列,用指針指出隊列連接情況。另用一標志單元記錄輪到運行的進程。例如,當(dāng)前輪到P執(zhí)行,則有: 2 標志單元 K2 Q Q

3、KK QK Q K Q K5134234215 K K K K K132544 1 2 3 2 0 1 0 0 0 R R R R R PCB5 PCB1 PCB2 PCB3 PCB4 (4) 處理器調(diào)度總是選擇標志單元指示的進程運行。由于本實習(xí)是模擬處理器調(diào)度的 功能,所以,對被選中的進程并不實際的啟動運行,而是執(zhí)行: 已運行時間+1 來模擬進程的一次運行,表示進程已經(jīng)運行過一個單位的時間。 請同學(xué)注意:在實際的系統(tǒng)中,當(dāng)一個進程被選中運行時,必須置上該進程可以運 行的時間片值,以及恢復(fù)進程的現(xiàn)場,讓它占有處理器運行,直到出現(xiàn)等待事件或 ”來表示進程已+1運行滿一個時間片。在這時省去了這些工

4、作,僅用“已運行時間 經(jīng)運行滿一個時間片。 (5) 進程運行一次后,應(yīng)把該進程的進程控制塊中的指針值送到標志單元,以指示下一 個輪到運行的進程。同時,應(yīng)判斷該進程的要求運行時間與已運行時間,若該進程 則表示它尚未執(zhí)行結(jié)束,應(yīng)待到下一輪時再運行。若 的要求運行時間?已運行時間, =已運行時間,則表示它已經(jīng)執(zhí)行結(jié)束,應(yīng)指導(dǎo)它的狀態(tài)修 該進程的要求運行時間 E)且退出隊列。此時,應(yīng)把該進程的進程控制塊中的指針值送到前 改成“結(jié)束”( 面一個進程的指針位置。 )的步驟,直到所有若“就緒”狀態(tài)的進程隊列不為空,則重復(fù)上面的(4)和(5(6) 的進程都成為“結(jié)束”狀態(tài)。 (7) 在所設(shè)計的程序中應(yīng)有顯示或

5、打印語句,能顯示或打印每次選中進程的進程名以及 運行一次后進程隊列的變化。 為五個進程任意確定一組“要求運行時間”,啟動所設(shè)計的處理器調(diào)度程序,顯示(8) 或打印逐次被選中的進程名以及進程控制塊的動態(tài)變化過程。 所用數(shù)據(jù)結(jié)構(gòu)及符號說明四. /PCB struct PNodetypedef /定義指向下一個節(jié)點的指針 PNode *next; struct char name10; /定義進程名,并分配空間 int All_time; /定義總運行時間 int Runed_Time; /定義已運行時間 char state; /定義進程狀態(tài)Ready/End *Proc; /指向該PCB的指針

6、int ProcNum; /總進程數(shù) 五.流程圖 開始輸入進程總數(shù)輸入各進程信息輸出為就緒狀態(tài)的進程的信息指針所指的進程是N否結(jié)束Y更改正在運行的進程的已運行時間輸出此時為就緒狀態(tài)的進程的信息如果存在下一個進程的話指向下一個進程Y跳過已結(jié)束的程序 結(jié) 源代碼:六. #include #include std; namespaceusing typedef struct PNode /PCB struct PNode *next; /定義指向下一個節(jié)點的指針 char name10; /定義進程名,并分配空間 int All_time; /定義總運行時間 int Runed_Time; /定義已

7、運行時間 char state; /定義進程狀態(tài)Ready/End *Proc; /指向該PCB的指針 int ProcNum; /總進程數(shù) /初始化就緒隊列 void lnitPCB(Proc &H) cout ProcNum; /進程總個數(shù) int Num = ProcNum; H = (Proc)malloc(sizeof(PNode); /建立頭結(jié)點 H-next = NULL; Proc p = H; /定義一個指針 cout 總進程個數(shù)為 ProcNum 個,請依次輸入相應(yīng)信息endl; cout next = (Proc)malloc(sizeof(PNode); cout p-

8、name p-All_time p-Runed_Time; p-state = R; p-next = NULL; p-next = H-next; /輸入運行中的進程信息 void Displnfo(Proc H) Proc p = H-next; do 的話End 如果該進程的狀態(tài)不是/) E (p-state != if 總運行時間尺 All_time cout 進程名尺 name state endl; 尺 Runed_Time next; p = p-next; else 整個進程鏈條始終完整,只是狀態(tài)位有差異-next); /while (p != H /時間片輪轉(zhuǎn)法 void S

9、JP_Simulator(Proc &H) cout endl next; while (p-All_timep-Runed_Time) round+; cout endl 剜畯摮 round -正在運行 name 進程 Runed_Time+; /更改正在運行的進程的已運行的時間 Displnfo(H); /輸出此時為就緒狀態(tài)的進程 的信息 if (p-All_time = p-Runed_Time) /判斷該進程是否結(jié)束 p-state = E; flag-; cout name next; while (flag & p-All_time = p-Runed_Time) p = p-next; /跳過先前已結(jié)束的進程 cout endl ?久?屜屮; void main() Proc H; lnitPCB(H); /數(shù)據(jù)初始化 Displnfo(H); /輸出此刻的進程狀態(tài) SJP_Simulator(H);/時間片輪轉(zhuǎn)法 system(灜畡敳); 七、測試數(shù)據(jù)與實驗結(jié)果 八、結(jié)果分析與實驗體會 時間片輪轉(zhuǎn)算法中,系統(tǒng)將所有的就緒程序按先來先服務(wù)的原則排成一個隊列,每次調(diào)度時,把CPU分配給隊首進程,并令其執(zhí)行一個時間片(一個較小的時間單元)。輪轉(zhuǎn)法是一種剝奪式調(diào)度,當(dāng)執(zhí)行的時間片用完時,調(diào)度程序停止該進程的執(zhí)行,并將它送往就緒隊列的末尾;然后,再把處理機分

溫馨提示

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

評論

0/150

提交評論