《操作系統(tǒng)》上機(jī)實(shí)驗(yàn)報(bào)告—進(jìn)程調(diào)_第1頁(yè)
《操作系統(tǒng)》上機(jī)實(shí)驗(yàn)報(bào)告—進(jìn)程調(diào)_第2頁(yè)
《操作系統(tǒng)》上機(jī)實(shí)驗(yàn)報(bào)告—進(jìn)程調(diào)_第3頁(yè)
《操作系統(tǒng)》上機(jī)實(shí)驗(yàn)報(bào)告—進(jìn)程調(diào)_第4頁(yè)
《操作系統(tǒng)》上機(jī)實(shí)驗(yàn)報(bào)告—進(jìn)程調(diào)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、專(zhuān)業(yè)與班級(jí)姓名課程名稱實(shí)驗(yàn)?zāi)康呐c要求理論基礎(chǔ)操作系統(tǒng)上機(jī)實(shí)驗(yàn)報(bào)告進(jìn)程調(diào)度操作系統(tǒng) 上機(jī)實(shí)驗(yàn)報(bào)告成績(jī)學(xué)號(hào)操作系統(tǒng)實(shí)驗(yàn)名稱進(jìn)程調(diào)度1. 進(jìn)程調(diào)度就是處理機(jī)管理的核心內(nèi)容。2. 本實(shí)驗(yàn)要求用 C 語(yǔ)言編寫(xiě)與調(diào)試一個(gè)簡(jiǎn)單的進(jìn)程調(diào)度程序。3. 通過(guò)本實(shí)驗(yàn)可以加深理解有關(guān)進(jìn)程控制塊、進(jìn)程隊(duì)列的概念 ,并體會(huì)與了解優(yōu)先數(shù)與時(shí)間片輪轉(zhuǎn)調(diào)度算法的具體實(shí)施辦法。1、處理機(jī)調(diào)度的基本概念。處理器就是計(jì)算機(jī)系統(tǒng)中的重要資源 , 處理器調(diào)度算法不僅對(duì)處理器的利用效率與用戶進(jìn)程的執(zhí)行有影響 , 同時(shí)還與內(nèi)存等其她資源的使用密切相關(guān) , 對(duì)整個(gè)計(jì)算機(jī)系統(tǒng)的綜合性能指標(biāo)也有重要影響。2、進(jìn)程調(diào)度方式 :1、搶占式 ( 剝奪式

2、 ):當(dāng)一個(gè)進(jìn)程正在處理器上運(yùn)行時(shí) , 系統(tǒng)可以根據(jù)規(guī)定的原則剝奪分配給它的處理器 , 而把處理器分配給其她進(jìn)程使用。2、非搶占式 ( 非剝奪式 ):一旦某個(gè)進(jìn)程開(kāi)始執(zhí)行后便不再出讓處理器 , 除非該進(jìn)程運(yùn)行結(jié)束或發(fā)生了某個(gè)事件不能繼續(xù)執(zhí)行。3、本實(shí)驗(yàn)所用調(diào)度算法a) 優(yōu)先數(shù)調(diào)度 ;為每個(gè)進(jìn)程設(shè)置一個(gè)優(yōu)先數(shù) , 進(jìn)程調(diào)度程序每次選擇就緒隊(duì)列中優(yōu)先數(shù)最大者占有處理器。b) 循環(huán)輪轉(zhuǎn)調(diào)度。基本思想就是 : 系統(tǒng)確定一個(gè)適當(dāng)大小的時(shí)間片 , 所有進(jìn)程排成一個(gè)就緒隊(duì)列按時(shí)間片輪流使用 CPU。又稱為時(shí)間片輪轉(zhuǎn)法。操作系統(tǒng)上機(jī)實(shí)驗(yàn)報(bào)告進(jìn)程調(diào)度實(shí)驗(yàn)算法主體內(nèi)容及#include#include#inclu

3、de#include#include#define P_NUM 5 / 共有 5 個(gè)進(jìn)程#define P_TIME 50 / 作為優(yōu)先數(shù)計(jì)算時(shí)所用的值enum stateready,execute,block,finish;/ 進(jìn)程的狀態(tài) ,使用枚舉struct pcbchar name4; / 進(jìn)程名稱int priority; / 進(jìn)程優(yōu)先級(jí)int cputime; / 已經(jīng)占有 cpu 運(yùn)行的時(shí)間int needtime; / 還需要運(yùn)行的時(shí)間int count; / 在時(shí)間片輪轉(zhuǎn)法中使用的int round; / 在時(shí)間片輪轉(zhuǎn)法中使用的state process; /進(jìn)程的狀態(tài)pcb

4、 *next; / 指向下一個(gè)進(jìn)程的pcb;pcb *get_process() /通過(guò)輸入各進(jìn)程的值來(lái)建立pcb 隊(duì)列 ,并返回其首元素的指針pcb *q;pcb *t;pcb *p;int i=0;cout 請(qǐng)輸入進(jìn)程名與時(shí)間endl;while(iq-name;cinq-needtime;q-cputime=0;q-priority=P_TIME-q-needtime;q-round=0;q-count=0;q-process=ready;q-next=NULL;if (i=0)p=q;t=q;else t-next=q; t=q; i+;return p;void display(pc

5、b *p)/ 顯示本輪運(yùn)行后的進(jìn)程各狀態(tài)情況cout進(jìn)程各狀態(tài)情況endl;cout 名稱 進(jìn)入時(shí)間 還需時(shí)間 優(yōu)先級(jí) 狀態(tài) endl; while(p)coutname;cout;coutcputime;cout;coutneedtime;操作系統(tǒng)上機(jī)實(shí)驗(yàn)報(bào)告進(jìn)程調(diào)度cout;coutpriority;coutprocess) / 對(duì)枚舉類(lèi)型的輸出方法case ready:cout就緒 endl;break;case execute:cout執(zhí)行 endl;break;case block:cout 阻塞 endl;break;case finish:cout 完成 next;int pro

6、cess_finish(pcb *q) / 判斷所有的進(jìn)程就是否運(yùn)行結(jié)束int b=1;while(q&b)b=b&q-needtime=0;q=q-next;return b;void cpuexe(pcb *q)/ 優(yōu)先級(jí)調(diào)度算法的一次執(zhí)行pcb *t;t=q;int i=0;while(q)if (q-process!=finish)q-process=ready;if(q-needtime=0)q-process=finish;if(ipriority)if(q-process!=finish)t=q;i=q-priority;q=q-next;t-needtime-=1;t-prio

7、rity-=3;if(t-needtime=0)t-process=finish;t-cputime+=1;void priority_cal() / 優(yōu)先級(jí)調(diào)度算法pcb *p;p=get_process();/取得進(jìn)程隊(duì)列int cpu=0;while(!process_finish(p) / 若進(jìn)程并未全部結(jié)束,則還需要執(zhí)行cpu+;cout 運(yùn)行次數(shù) :cpuendl;cpuexe(p);/ 一次 cpu 的執(zhí)行display(p);/ 顯示本次執(zhí)行結(jié)果pcb * get_process_round()操作系統(tǒng)上機(jī)實(shí)驗(yàn)報(bào)告進(jìn)程調(diào)度pcb *q;pcb *t;pcb *p;int i=0

8、;cout 請(qǐng)輸入進(jìn)程名與時(shí)間endl;while (iq-name;cinq-needtime;q-cputime=0;q-round=0;q-count=0;q-process=ready;q-next=NULL;if(i=0)p=q;t=q;elset-next=q;t=q;i+;return p;void cpu_round(pcb *q)q-count+;q-cputime+=2;q-needtime-=2;if(q-needtimeneedtime=0;q-round+;q-process=execute;pcb *get_next(pcb *k,pcb *head)pcb *t;

9、t=k;dot=t-next;while (t & t-process=finish);if(t=NULL)t=head;while (t-next!=k & t-process=finish)t=t-next;return t;void set_state(pcb *p)while(p)if (p-needtime=0)p-process=finish;if (p-process=execute)操作系統(tǒng)上機(jī)實(shí)驗(yàn)報(bào)告進(jìn)程調(diào)度p-process=ready;p=p-next;void display_round(pcb *p)cout進(jìn)程各狀態(tài)情況endl;cout 名稱 進(jìn)入時(shí)間 還需時(shí)間

10、時(shí)間片 次數(shù) 狀態(tài) endl;while(p)coutname;cout;coutcputime;cout;coutneedtime;cout;coutround;cout;coutcount;coutprocess)case ready:cout就緒 endl;break;case execute:cout執(zhí)行 endl;break;case finish:cout 完成 next;void round_cal()pcb *p;pcb *r;p=get_process();int cpu=0;r=p;while(!process_finish(p)cpu+=2;cpu_round(r);r=get_next(r,p);cout 運(yùn)行次數(shù) cpuendl;display_round(p);set_state(p); void display_menu()cout 進(jìn)程調(diào)度算法操作:endl;cout1 優(yōu)先數(shù) endl;cout2 時(shí)間片輪轉(zhuǎn) endl;cout3 退出 endl;void main()display_me

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論