南昌大學(xué)操作系統(tǒng)實驗報告
《南昌大學(xué)操作系統(tǒng)實驗報告》由會員分享,可在線閱讀,更多相關(guān)《南昌大學(xué)操作系統(tǒng)實驗報告(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。
南 昌 大 學(xué) 實 驗 報 告-( 3) 進(jìn) 程 調(diào) 度 算 法 的 實 現(xiàn)學(xué)生姓名: 張皓然 學(xué) 號: 5501215001 專業(yè)班級: 本碩 151 實驗類型: 驗證 綜合 設(shè)計 創(chuàng)新 實驗日期: 2017.5.31 實驗成績: 一、實驗?zāi)康耐ㄟ^實驗加強(qiáng)對進(jìn)程調(diào)度算法的理解和掌握。二、實驗內(nèi)容編寫程序?qū)崿F(xiàn)進(jìn)程調(diào)度算法,具體可以編寫程序?qū)崿F(xiàn)優(yōu)先度高者調(diào)度算法或先來先服務(wù)算法。三、實驗要求1、需寫出設(shè)計說明;2、設(shè)計實現(xiàn)代碼及說明3、運(yùn)行結(jié)果;四、主要實驗步驟優(yōu)先度高者調(diào)度算法實驗代碼: 1#include #include #include #include #include #define runtime 2#define overflow -2#define null 0enum sta run, wait, finished ;/枚舉類型 sta,標(biāo)志三種狀態(tài)time_t t; /system clockstruct blockint time_used;int prior;/定義結(jié)構(gòu)體,使用時間,優(yōu)先級typedef struct prochar name20;enum sta status;int time_required;int arrive_time;struct block switch_block;struct pro *next;*pcb;/定義 pcb 塊pcb ready;void menu();void insertpcb(pcb newp) /插入至就緒隊列pcb p;p = (pcb)malloc(sizeof(struct pro);if (!p)exit(overflow);p = ready;if (p-next = null)newp-next = ready-next;ready-next = newp;elsewhile (newp-switch_block.priornext-switch_block.prior&p-next != null)p = p-next;newp-next = p-next;p-next = newp;void creat_pcb() /創(chuàng)建一個進(jìn)程pcb newp;newp = (pcb)malloc(sizeof(struct pro);if (!newp) exit(overflow);newp-status = wait;time(newp-arrive_time = t;printf(process name:);scanf(%s, newp-name);printf(priority:);scanf(%d, printf(arrive time:);scanf(%d, printf(cputime_required:);scanf(%d, newp-switch_block.time_used = 0;insertpcb(newp);menu();void printpcb() /打印現(xiàn)狀pcb p;if (ready-next) printf(name status priority server_time arrive_time cputime_usedn);for (p = ready-next; p != null; p = p-next)printf(%s, p-name);switch (p-status)case wait:printf( wait); break;case run:printf( run); break;case finished:printf( finished); break;printf(%7d, p-switch_block.prior);printf(%15d, p-time_required);printf(%20d, p-arrive_time);printf(%13d, p-switch_block.time_used);putchar(n);else printf(queue is empty!n);void switchprocess() /將內(nèi)存中的進(jìn)程切換至外存char temp20;pcb p, q;if (ready-next)printf(input process name:);scanf(%s, temp);for (p = ready; p != null p = p-next);if (p != null)q = p-next;p-next = q-next;printf(remove %s successfully!n, q-name);free(q);printpcb();else printf(found no processn);else printf(queue empty!n);menu();void runprocess() /進(jìn)程調(diào)度pcb p = ready-next;if (p)printf(%s is running.n, p-name);p-status = run;p-switch_block.prior-;p-switch_block.time_used += runtime;if (p-switch_block.time_used = p-time_required)p-status = finished;printpcb();ready-next = p-next;printf(%s have been removed from the ready_queue.n, p-name);free(p);elseprintpcb();printf(%s have used up the run_timen, p-name);p-status = wait;ready-next = p-next;insertpcb(p);else printf(queue empty!n);menu();void menu()/選擇菜單int coos;printf(1.creat a processn);printf(2.run a processn);printf(3.remove a processn);printf(4.exitn);printf(choose(1-4):);scanf(%d, switch (coos)case 1:creat_pcb(); break;case 2:runprocess(); break;case 3:switchprocess(); break;case 4:exit(0); break;int main()/clrscr();ready = (pcb)malloc(sizeof(struct pro);if (!ready) exit(overflow);ready-next = null;menu();return 0;實驗過程:優(yōu)先度高者調(diào)度算法實驗結(jié)果截圖: 1先創(chuàng)建進(jìn)程 a、b、c,設(shè) a 進(jìn)程優(yōu)先級為 2,到達(dá)時間為 2,cpu 處理時間為 1;設(shè) b 進(jìn)程優(yōu)先級為 5,到達(dá)時間為 0,cpu 處理時間為 6;設(shè) c 進(jìn)程優(yōu)先級為 4,到達(dá)時間為 2,cpu 處理時間為 2;開始運(yùn)行進(jìn)程,首先運(yùn)行 0 時刻到達(dá)的優(yōu)先級最高的進(jìn)程 b設(shè)定進(jìn)程 a、b、c運(yùn)行結(jié)束后,進(jìn)程 b 的優(yōu)先級變?yōu)?4,cpu 使用時間為 2,此時進(jìn)程 b 和 c 優(yōu)先級相同,系統(tǒng)仍然調(diào)用進(jìn)程 b;進(jìn)程 b 在運(yùn)行還是進(jìn)程 b再次運(yùn)行進(jìn)程 b 以后,b 的優(yōu)先級掉為 3,而且進(jìn)程 b 還差 2 個時間單位才能運(yùn)行結(jié)束,此時 c 為優(yōu)先級最高的進(jìn)程,系統(tǒng)調(diào)用進(jìn)程 c因為進(jìn)程 c 的 cpu 需要時間僅為 2 個時間單位,所以進(jìn)程 c 運(yùn)行結(jié)束,finished,c 被移除就緒序列;調(diào)度進(jìn)程 c然后系統(tǒng)重新調(diào)用進(jìn)程 b,b 運(yùn)行結(jié)束;最后系統(tǒng)調(diào)度優(yōu)先級最低的進(jìn)程 a,結(jié)束進(jìn)程調(diào)度過程,隊列空。進(jìn)程 c 結(jié)束進(jìn)程 b 回歸調(diào)度進(jìn)程 a進(jìn)程 b 結(jié)束先來先服務(wù)算法: 2#include#includeusing namespace std;/FCFSstruct processchar name10;double arrivetime;/到到時間 double servetime; /服務(wù)時間 double starttime;/開始時間 double finnishtime;/完成時間 double circletime;/周轉(zhuǎn)時間 double dcircletime;/帶權(quán)周轉(zhuǎn)時間 a100;/用結(jié)構(gòu)體存放各進(jìn)程的相關(guān)信息int main()int i,j,k,n;process temp;coutn;coutai.nameai.arrivetimeai.servetime; for(i=0;in;i+)for(j=0;ji;j+)if(ai.arrivetimeaj.arrivetime)temp=ai;ai=aj;aj=temp;/按照 FCFS 算法對進(jìn)程進(jìn)行排序coutnFCFS 進(jìn)程調(diào)度順序為:n;for(k=0;kn;k+)cout ak.name;coutendl;a0.starttime=a0.arrivetime;a0.finnishtime=a0.servetime+a0.starttime;a0.circletime=a0.finnishtime-a0.arrivetime;a0.dcircletime=a0.circletime/a0.servetime;/計算第一個進(jìn)程的相關(guān)信息for(i=1;in;i+)ai.starttime=ai-1.servetime+ai-1.starttime;ai.finnishtime=ai.servetime+ai.starttime;ai.circletime=ai.finnishtime-ai.arrivetime;ai.dcircletime=ai.circletime/ai.servetime;/計算其他進(jìn)程的相關(guān)信息coutn 進(jìn)程調(diào)度列表:n;cout名稱setw(10)到達(dá)時間setw(10)服務(wù)時間setw(10)開始時間setw(10)完成時間setw(10)周轉(zhuǎn)時間setw(14)帶權(quán)周轉(zhuǎn)時間n;for(i=0;in;i+)coutai.namesetw(10)ai.arrivetimesetw(10)ai.servetimesetw(10)ai.starttimesetw(10)ai.finnishtimesetw(10)ai.circletimesetw(14)ai.dcircletimeendl; return 0;實驗結(jié)果及其解釋:周轉(zhuǎn)時間=完成時間-到達(dá)時間帶權(quán)周轉(zhuǎn)時間=周轉(zhuǎn)時間/服務(wù)時間很明顯地觀察到先到達(dá)的進(jìn)程先開始運(yùn)行,直到該進(jìn)程結(jié)束運(yùn)行后才調(diào)度下一個進(jìn)程。進(jìn)程調(diào)度順序為 D、C、A、B ,實現(xiàn)了 First Come First Served。五、實驗體會或?qū)Ω倪M(jìn)實驗的建議本次實驗做的是進(jìn)程調(diào)度算法中的優(yōu)先度高者調(diào)度算法和先來先服務(wù)算法。其中按優(yōu)先級高的調(diào)度算法采用的是動態(tài)優(yōu)先級,即優(yōu)先級在進(jìn)程創(chuàng)建之初被賦予,然后其值隨著進(jìn)程的推進(jìn)而減少,有較好的調(diào)度性能。而 FCFS 則是將新進(jìn)入內(nèi)存的進(jìn)程放入隊列的末尾,按先來先服務(wù)的原則等待調(diào)度。在做 FCFS 的時候,在虛擬機(jī)上出了點(diǎn)問題,所以直接用 win8 下的 dev 解決了。通過這兩個實驗對比著加深了對按優(yōu)先度高者調(diào)度算法和先來先服務(wù)算法的理解和掌握。六、參考資料計算機(jī)操作系統(tǒng)修訂版 湯子瀛主編 西安電子科技大學(xué)出版社- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
10 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 南昌大學(xué) 操作系統(tǒng) 實驗 報告
鏈接地址:http://appdesigncorp.com/p-359712.html