




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、計算機操作系統(tǒng)1實驗:進程調(diào)度算法一一時間片輪轉(zhuǎn)算法 實驗:進程調(diào)度算法一一時間片輪轉(zhuǎn)算法實驗設計說明用時間片輪轉(zhuǎn)算法模擬單處理機調(diào)度。(1)建立一個進程控制塊PCB來代表。PCB包括:進程名、到達時間、 運行時間和進程后的狀態(tài)。進程狀態(tài)分為就緒(R)和刪除(C)。(2)為每個進程任意確定一個要求運行時間和到達時間。(3)按照進程到達的先后順序排成一個隊列。再設一個指針指向隊首和 隊尾。(4)執(zhí)行處理機調(diào)度時,開始選擇對首的第一個進程運行。(5)執(zhí)行:a)輸出當前運行進程的名字;b)運行時間減去時間片的大小。(6)進程執(zhí)行一次后,若該進程的剩余運行時間為零,則刪除隊首,并 將該進程的狀態(tài)置為C
2、;若不為空,則將向后找位置插入。繼續(xù)在 運行隊首的進程。(7)若進程隊列不空,則重復上述的(5)和(6)步驟直到所有進程都 運行完為止。在所設計的調(diào)度程序中,要求包含顯示或打印語句。以便顯示或打印每次選 中進程的名稱及運行一次后隊列的變化情況。實驗代碼#include#include#includetypedef struct pcb 定義進程控制塊 char pname5;進程名int arrivetime; 到達時間int runtime;運行時間char state;運行后的狀態(tài)struct pcb *next;PCB;typedef struct /封裝頭結(jié)點,指針分別指向隊頭和隊尾
3、PCB *front,*rear;queue;queue *init() 進程隊列置空 queue *head;head=(queue*)malloc(sizeof(queue);head-front=NULL;head-rear=NULL;return head;int empty(queue *head) /檢驗進程隊列是否為空 return(head-front? 0:1);queue *append(queue *head,char c5,int a,int r,char s) / 進程隊列入隊,往后插入 PCB *p;p=(PCB*)malloc(sizeof(PCB);strcpy
4、(p-pname,c);p-arrivetime=a;p-runtime=r;p-state=s;p-next=NULL;if(empty(head) head-front=head-rear=p;else head-rear-next=p;head-rear=p;return head;queue *creat(queue *head) 創(chuàng)建進程隊列 char c5;char s=R;int a,r,i,n;printf(請輸入進程的數(shù)量:);scanf(%d”,&n);for(i=1;ifront;if(!p) printf(時間片輪轉(zhuǎn)調(diào)度隊列為空!n);while(p) printf(p
5、name=%s arrivetime=%d runtime=%d state= %c,p-pname,p-arrivetime,p-runtime,p-state);printf(n);p=p-next;void RR(queue *head,int q) 時間片輪轉(zhuǎn)調(diào)度算法的實現(xiàn)int n=0;static int m;PCB *p,*s,*t,*r,*h;m=head-rear-arrivetime;p=head-front;while(!empty(head)p-runtime=p-runtime-q;n+;p-state=R;if(p-runtimeruntime=0;p-state=
6、C;printf(運算時刻七運行的進程七運行后的狀態(tài)n);printf(%d t%s t%cn,n,p-pname,p-state);if(p-runtime=0)s=p;head-front=p-next;p=head-front;free(s);elsehead-front=p-next;if(nfront;while(r)if(n=r-arrivetime)p-next=r-next;r-next=p;break;else r=r-next;elsehead=append(head,p-pname,p-arrivetime,p-runtime,p-stat e);p=head-front
7、;int main() queue *head;int q;head=init();head=creat(head);printf(n您輸入的時間片輪轉(zhuǎn)進程隊列為:n);print(head);printf(n請輸入時間片輪轉(zhuǎn)調(diào)度的時間片為:); scanf(%d,&q);RR(head,q); 時間片輪轉(zhuǎn)調(diào)度實驗結(jié)果輸入進程的數(shù)量,每個進程的名稱、到達時間和服務時間,以及時間片:RRRRRstate =state =state =state =state =0 4 1 3 2 5 3 2 4 4 A 可.可 B 司可 C 可司 D 可.可 E 可可 .1.1 .1.1 .1.1 .1.1 .
8、1.1 名曹名甚名其名曹名曹 程達畚達蓄達塞達塞達務 S進蘸進反進斛進蘸進蘸 3B-1,- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - - 1- - hr 二.1二.-1- - hl-二.1二.1二.-1- - hl-二.1二.1二.1- - hl-二.1二.1二.1二 r 嘍進fifila進fifila進fifila進fifi 業(yè)個個個個個個個個個個個個個個個 壬 111222333444555 進 wmwwwwwww 1A1A1A1A1A1A1A1A
9、1A1A1A1A1A1A1A1A 請請請請請請請請請請請請請請請請您輸入的時間片輪轉(zhuǎn)進程隊列為: pname=A pname=B pname=C pname=D pname=Eruntime=4 runtime=3 runtime=5 runtime=2runtime=4arriuetime=0 airiuet ime=l arriuetime=2 arriuetime=3 arriuetime=4的時間片為H請輸入時恒得到的結(jié)果為:實驗結(jié)果分析RR算法:每次調(diào)度時,把CPU分配給隊首進程,并且令其執(zhí)行一個時間片, 時間片的大小從幾個ms到幾百ms。當執(zhí)行的時間片用完時,由一個計時器發(fā)出 時鐘中斷請求,調(diào)度程序便依據(jù)此信號來停止該進程的執(zhí)行;并且把它送往就緒 隊列的隊尾;然后,再把處理劑分配給就緒隊列中的新隊首進程,同時也讓它執(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機二級考試知識拓展試題及答案
- 2025年網(wǎng)絡規(guī)劃設計師考試知識板塊試題及答案
- 高效備考系統(tǒng)集成項目管理試題及答案
- 特教老師考試題庫及答案
- 企業(yè)級網(wǎng)絡規(guī)劃的關鍵要素試題及答案
- 空間音樂測試題及答案
- 多媒體設計中的技術實現(xiàn)案例試題及答案
- 長相動物系列測試題及答案
- 涉外繼承法考試題及答案
- 網(wǎng)絡瓶頸排查與解決試題及答案
- 鑄牢中華民族共同體意識學習PPT
- 初中數(shù)學北師大八年級上冊勾股定理-勾股定理的復習PPT
- 一例給藥錯誤不良事件匯報
- 三腔二囊管壓迫止血及護理課件
- 電氣控制柜制作工藝設計及規(guī)范
- 動力電池和電機電控英語術語匯總
- 普利茲克獎歷屆得主及作品賞析
- 糖尿病中醫(yī)護理查房教學內(nèi)容
- 消防安全培訓記錄表-
- 邏輯判斷推理口訣
- 關于明確公司安全生產(chǎn)相關責任人的通知
評論
0/150
提交評論