歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOCX文檔下載  

南昌大學(xué)操作系統(tǒng)實(shí)驗(yàn)報(bào)告

  • 資源ID:359712       資源大小:972.60KB        全文頁數(shù):11頁
  • 資源格式: DOCX        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

南昌大學(xué)操作系統(tǒng)實(shí)驗(yàn)報(bào)告

南 昌 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告-( 3) 進(jìn) 程 調(diào) 度 算 法 的 實(shí) 現(xiàn)學(xué)生姓名: 張皓然 學(xué) 號(hào): 5501215001 專業(yè)班級(jí): 本碩 151 實(shí)驗(yàn)類型: 驗(yàn)證 綜合 設(shè)計(jì) 創(chuàng)新 實(shí)驗(yàn)日期: 2017.5.31 實(shí)驗(yàn)成績(jī): 一、實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn)加強(qiáng)對(duì)進(jìn)程調(diào)度算法的理解和掌握。二、實(shí)驗(yàn)內(nèi)容編寫程序?qū)崿F(xiàn)進(jìn)程調(diào)度算法,具體可以編寫程序?qū)崿F(xiàn)優(yōu)先度高者調(diào)度算法或先來先服務(wù)算法。三、實(shí)驗(yàn)要求1、需寫出設(shè)計(jì)說明;2、設(shè)計(jì)實(shí)現(xiàn)代碼及說明3、運(yùn)行結(jié)果;四、主要實(shí)驗(yàn)步驟優(yōu)先度高者調(diào)度算法實(shí)驗(yàn)代碼: 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)體,使用時(shí)間,優(yōu)先級(jí)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) /插入至就緒隊(duì)列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)建一個(gè)進(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;實(shí)驗(yàn)過程:優(yōu)先度高者調(diào)度算法實(shí)驗(yàn)結(jié)果截圖: 1先創(chuàng)建進(jìn)程 a、b、c,設(shè) a 進(jìn)程優(yōu)先級(jí)為 2,到達(dá)時(shí)間為 2,cpu 處理時(shí)間為 1;設(shè) b 進(jìn)程優(yōu)先級(jí)為 5,到達(dá)時(shí)間為 0,cpu 處理時(shí)間為 6;設(shè) c 進(jìn)程優(yōu)先級(jí)為 4,到達(dá)時(shí)間為 2,cpu 處理時(shí)間為 2;開始運(yùn)行進(jìn)程,首先運(yùn)行 0 時(shí)刻到達(dá)的優(yōu)先級(jí)最高的進(jìn)程 b設(shè)定進(jìn)程 a、b、c運(yùn)行結(jié)束后,進(jìn)程 b 的優(yōu)先級(jí)變?yōu)?4,cpu 使用時(shí)間為 2,此時(shí)進(jìn)程 b 和 c 優(yōu)先級(jí)相同,系統(tǒng)仍然調(diào)用進(jìn)程 b;進(jìn)程 b 在運(yùn)行還是進(jìn)程 b再次運(yùn)行進(jìn)程 b 以后,b 的優(yōu)先級(jí)掉為 3,而且進(jìn)程 b 還差 2 個(gè)時(shí)間單位才能運(yùn)行結(jié)束,此時(shí) c 為優(yōu)先級(jí)最高的進(jìn)程,系統(tǒng)調(diào)用進(jìn)程 c因?yàn)檫M(jìn)程 c 的 cpu 需要時(shí)間僅為 2 個(gè)時(shí)間單位,所以進(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í)最低的進(jìn)程 a,結(jié)束進(jìn)程調(diào)度過程,隊(duì)列空。進(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;/到到時(shí)間 double servetime; /服務(wù)時(shí)間 double starttime;/開始時(shí)間 double finnishtime;/完成時(shí)間 double circletime;/周轉(zhuǎn)時(shí)間 double dcircletime;/帶權(quán)周轉(zhuǎn)時(shí)間 a100;/用結(jié)構(gòu)體存放各進(jìn)程的相關(guān)信息int main()int i,j,k,n;process temp;cout>n;cout>ai.name>>ai.arrivetime>>ai.servetime; for(i=0;i<n;i+)for(j=0;j<i;j+)if(ai.arrivetime<aj.arrivetime)temp=ai;ai=aj;aj=temp;/按照 FCFS 算法對(duì)進(jìn)程進(jìn)行排序cout<<"nFCFS 進(jìn)程調(diào)度順序?yàn)椋簄"for(k=0;k<n;k+)cout<<" "<<ak.name;cout<<endl;a0.starttime=a0.arrivetime;a0.finnishtime=a0.servetime+a0.starttime;a0.circletime=a0.finnishtime-a0.arrivetime;a0.dcircletime=a0.circletime/a0.servetime;/計(jì)算第一個(gè)進(jìn)程的相關(guān)信息for(i=1;i<n;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ì)算其他進(jìn)程的相關(guān)信息cout<<"n 進(jìn)程調(diào)度列表:n"cout<<"名稱"<<setw(10)<<"到達(dá)時(shí)間"<<setw(10)<<"服務(wù)時(shí)間"<<setw(10)<<"開始時(shí)間"<<setw(10)<<"完成時(shí)間"<<setw(10)<<"周轉(zhuǎn)時(shí)間"<<setw(14)<<"帶權(quán)周轉(zhuǎn)時(shí)間n"for(i=0;i<n;i+)cout<<ai.name<<setw(10)<<ai.arrivetime<<setw(10)<<ai.servetime<<setw(10)<<ai.starttime<<setw(10)<<ai.finnishtime<<setw(10)<<ai.circletime<<setw(14)<<ai.dcircletime<<endl; return 0;實(shí)驗(yàn)結(jié)果及其解釋:周轉(zhuǎn)時(shí)間=完成時(shí)間-到達(dá)時(shí)間帶權(quán)周轉(zhuǎn)時(shí)間=周轉(zhuǎn)時(shí)間/服務(wù)時(shí)間很明顯地觀察到先到達(dá)的進(jìn)程先開始運(yùn)行,直到該進(jìn)程結(jié)束運(yùn)行后才調(diào)度下一個(gè)進(jìn)程。進(jìn)程調(diào)度順序?yàn)?D、C、A、B ,實(shí)現(xiàn)了 First Come First Served。五、實(shí)驗(yàn)體會(huì)或?qū)Ω倪M(jìn)實(shí)驗(yàn)的建議本次實(shí)驗(yàn)做的是進(jìn)程調(diào)度算法中的優(yōu)先度高者調(diào)度算法和先來先服務(wù)算法。其中按優(yōu)先級(jí)高的調(diào)度算法采用的是動(dòng)態(tài)優(yōu)先級(jí),即優(yōu)先級(jí)在進(jìn)程創(chuàng)建之初被賦予,然后其值隨著進(jìn)程的推進(jìn)而減少,有較好的調(diào)度性能。而 FCFS 則是將新進(jìn)入內(nèi)存的進(jìn)程放入隊(duì)列的末尾,按先來先服務(wù)的原則等待調(diào)度。在做 FCFS 的時(shí)候,在虛擬機(jī)上出了點(diǎn)問題,所以直接用 win8 下的 dev 解決了。通過這兩個(gè)實(shí)驗(yàn)對(duì)比著加深了對(duì)按優(yōu)先度高者調(diào)度算法和先來先服務(wù)算法的理解和掌握。六、參考資料計(jì)算機(jī)操作系統(tǒng)修訂版 湯子瀛主編 西安電子科技大學(xué)出版社

注意事項(xiàng)

本文(南昌大學(xué)操作系統(tǒng)實(shí)驗(yàn)報(bào)告)為本站會(huì)員(1**)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!