




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗一處理器調度一、實習內容選擇一個調度算法,實現(xiàn)處理器調度。二、實習目的在采用多道程序設計的系統(tǒng)中,往往有若干個進程同時處于就緒狀態(tài)。當就緒進程個數(shù)大于處理器數(shù)時,就必須依照某種策略來決定哪些進程優(yōu)先占用處理器。本實習模擬在單處理器情況下的處理器調度,幫助學生加深了解處理器調度的工作。三、實習題目本實習有兩個題,學生可選擇其中的一題做實習。第二題:設計一個按時間片輪轉法實現(xiàn)處理器調度的程序。提示:(1) 假定系統(tǒng)有五個進程,每一個進程用一個進程控制塊PCB來代表。進程控制塊的格式為:進程名指針要求運行時間已運行時間狀態(tài)其中,進程名作為進程的標識,假設五個進程的進程名分別為Q1,Q2,Q3,Q
2、4,Q5。指針進程按順序排成循環(huán)隊列,用指針指出下一個進程的進程控制塊的首地址,最后一個進程的指針指出第一個進程的進程控制塊首地址。要求運行時間假設進程需要運行的單位時間數(shù)。已運行時間假設進程已經運行的單位時間數(shù),初始值為“0”。狀態(tài)有兩種狀態(tài),“就緒”和“結束”,初始狀態(tài)都為“就緒”,用“R”表示。當一個進程運行結束后,它的狀態(tài)為“結束”,用“E”表示。(2) 每次運行所設計的處理器調度程序前,為每個進程任意確定它的“要求運行時間”。(3) 把五個進程按順序排成循環(huán)隊列,用指針指出隊列連接情況。另用一標志單元記錄輪到運行的進程。例如,當前輪到P2執(zhí)行,則有:標志單元, K2K1Q1 K2Q2
3、 K3Q3 K4Q4 K5Q5 K2 K3 K4 K5 K1 2 3 1 2 4 1 0 0 0 0 R R R R R PCB1 PCB2 PCB3 PCB4 PCB5 (4) 處理器調度總是選擇標志單元指示的進程運行。由于本實習是模擬處理器調度的功能,所以,對被選中的進程并不實際的啟動運行,而是執(zhí)行:已運行時間+1來模擬進程的一次運行
4、,表示進程已經運行過一個單位的時間。請同學注意:在實際的系統(tǒng)中,當一個進程被選中運行時,必須置上該進程可以運行的時間片值,以及恢復進程的現(xiàn)場,讓它占有處理器運行,直到出現(xiàn)等待事件或運行滿一個時間片。在這時省去了這些工作,僅用“已運行時間+1”來表示進程已經運行滿一個時間片。(5) 進程運行一次后,應把該進程的進程控制塊中的指針值送到標志單元,以指示下一個輪到運行的進程。同時,應判斷該進程的要求運行時間與已運行時間,若該進程的要求運行時間¹已運行時間,則表示它尚未執(zhí)行結束,應待到下一輪時再運行。若該進程的要求運行時間=已運行時間,則表示它已經執(zhí)行結束,應指導它的狀態(tài)修改成“結束”(E)
5、且退出隊列。此時,應把該進程的進程控制塊中的指針值送到前面一個進程的指針位置。(6) 若“就緒”狀態(tài)的進程隊列不為空,則重復上面的(4)和(5)的步驟,直到所有的進程都成為“結束”狀態(tài)。(7) 在所設計的程序中應有顯示或打印語句,能顯示或打印每次選中進程的進程名以及運行一次后進程隊列的變化。(8) 為五個進程任意確定一組“要求運行時間”,啟動所設計的處理器調度程序,顯示或打印逐次被選中的進程名以及進程控制塊的動態(tài)變化過程。2. 所用數(shù)據(jù)結構及符號說明typedef struct PNode / PCB struct PNode *next; / 定義指向下一個節(jié)點的指針 char name10
6、; / 定義進程名,并分配空間 int All_Time; / 定義總運行時間 int Runed_Time; / 定義已運行時間 char state; / 定義進程狀態(tài) Ready / End* Proc; / 指向該PCB的指針int ProcNum; / 總進程個數(shù)3.流程圖與源程序四.源代碼:#include <iostream>#include <cstdlib>using namespace std;typedef struct PNode / PCB struct PNode *next; / 定義指向下一個節(jié)點的指針 char name10; / 定義
7、進程名,并分配空間 int All_Time; / 定義總運行時間 int Runed_Time; / 定義已運行時間 char state; / 定義進程狀態(tài) Ready / End* Proc; / 指向該PCB的指針int ProcNum; / 總進程個數(shù)/ 初始化就緒隊列void InitPCB(Proc &H) cout<<"請輸入總進程個數(shù): " cin>>ProcNum; / 進程總個數(shù) int Num=ProcNum; H=(Proc)malloc(sizeof(PNode); / 建立頭節(jié)點 H->next=NULL;
8、 Proc p=H; /定義一個指針 cout<<"總進程個數(shù)為 "<<ProcNum<<" 個,請依次輸入相應信息nn" while (Num-) p=p->next=(Proc)malloc(sizeof(PNode); cout<<"進程名 總運行時間 已運行時間 :" cin>>p->name>>p->All_Time>>p->Runed_Time; p->state='R' p->next=
9、NULL; p->next=H->next; /輸出運行中的進程信息void DispInfo(Proc H) Proc p=H->next; do if (p->state != 'E') /如果該進程的狀態(tài)不是End的話 cout<<"進程名:"<<p->name<<"t總運行時間:"<<p->All_Time <<"t已運行時間:"<<p->Runed_Time <<"t狀態(tài):&
10、quot;<<p->state<<endl; p=p->next; else p=p->next; while (p != H->next); / 整個進程鏈條始終完整,只是狀態(tài)位有差異/ 時間片輪轉法void SJP_Simulator(Proc &H) cout<<endl<<"-START-n" int flag=ProcNum; / 記錄剩余進程數(shù) int round=0; / 記錄輪轉數(shù) Proc p=H->next; while (p->All_Time > p-&
11、gt;Runed_Time) / 即未結束的進程 round+; cout<<endl<<"Round "<<round<<"-正在運行 "<<p->name<<" 進程"<<endl; p->Runed_Time+; / 更改正在運行的進程的已運行時間 DispInfo(H); / 輸出此時為就緒狀態(tài)的進程的信息 if (p->All_Time = p->Runed_Time) / 并判斷該進程是否結束 p->state
12、='E' flag-; cout<<p->name<<" 進程已運行結束,進程被刪除!n" p=p->next; while (flag && p->All_Time = p->Runed_Time) p=p->next; / 跳過先前已結束的進程 cout<<endl<<"-END-n"void main() Proc H; InitPCB(H); / 數(shù)據(jù)初始化 DispInfo(H); / 輸出此刻的進程狀態(tài) SJP_Simulator(H); / 時間片
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班漂流活動方案
- 小班春季入園活動方案
- 少兒誦讀大賽活動方案
- 居家美工活動方案
- 工廠周末活動方案
- 鞏義標準工具活動方案
- 小班重陽藝術活動方案
- 小孩栗子活動方案
- 工會演講比賽活動方案
- 小班冰燈活動方案
- QB∕T 2080-2018 高回彈軟質聚氨酯泡沫塑料
- 李善友顛覆式創(chuàng)新課件
- 分包單位過程施工進度款審批表
- 工程機械設備保險附加第三者責任保險條款
- 醫(yī)院感染知識培訓記錄范文(精選6篇)
- 日周月安全檢查記錄表
- 上海電動汽車充電設施建設管理暫行規(guī)定
- 100道結構力學彎矩圖
- 鋼結構設計圖中的焊接符號標注大全(圖)
- 廣州初中數(shù)學知識點總結(共40頁)
- 流動資金缺口測算表
評論
0/150
提交評論