版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、XXXXXX計(jì)算機(jī)系綜合性實(shí)驗(yàn)實(shí) 驗(yàn) 報(bào) 告 課程名稱 操作系統(tǒng) B 實(shí)驗(yàn)學(xué)期 XXXX 至 XXXX 學(xué)年 第 X 學(xué)期學(xué)生所在系部 計(jì)算機(jī)系 年級(jí) XXXX 專業(yè)班級(jí) XXXXXX 學(xué)生姓名 XXXX 學(xué)號(hào) XXXXXXXXXXXX 任課教師 XXX 實(shí)驗(yàn)成績(jī) 計(jì)算機(jī)系制 操作系統(tǒng)B 課程綜合性實(shí)驗(yàn)報(bào)告開(kāi)課實(shí)驗(yàn)室: 年 月 日實(shí)驗(yàn)題目進(jìn)程調(diào)度算法模擬程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)對(duì)進(jìn)程調(diào)度算法的模擬,進(jìn)一步理解進(jìn)程的基本概念,加深對(duì)進(jìn)程運(yùn)行狀態(tài)和進(jìn)程調(diào)度過(guò)程、調(diào)度算法的理解。二、設(shè)備與環(huán)境1. 硬件設(shè)備:PC機(jī)一臺(tái)2. 軟件環(huán)境:安裝Windows操作系統(tǒng)或者Linux操作系統(tǒng),并安裝相關(guān)的程序
2、開(kāi)發(fā)環(huán)境,如C C+Java 等編程語(yǔ)言環(huán)境。三、實(shí)驗(yàn)內(nèi)容1. 用C語(yǔ)言(或其它語(yǔ)言,如Java)編程實(shí)現(xiàn)對(duì)N個(gè)進(jìn)程采用某種進(jìn)程調(diào)度算法(如動(dòng)態(tài)優(yōu)先權(quán)調(diào)度算法、先來(lái)先服務(wù)算法、短進(jìn)程優(yōu)先算法、時(shí)間片輪轉(zhuǎn)調(diào)度算法)調(diào)度執(zhí)行的模擬。2. 每個(gè)用來(lái)標(biāo)識(shí)進(jìn)程的進(jìn)程控制塊PCB可用結(jié)構(gòu)來(lái)描述,包括以下字段:typedef struct node char name10; /進(jìn)程的名字 int round; /一次分配CPU的時(shí)間片 int cputime; /CPU已執(zhí)行時(shí)間 int needtime; /進(jìn)程執(zhí)行所需要的時(shí)間 char state; /進(jìn)程的狀態(tài),W-就緒態(tài),R-執(zhí)行態(tài),F(xiàn)-完成態(tài) i
3、nt count; /記錄進(jìn)程執(zhí)行的次數(shù) struct node *next; /隊(duì)列指針 PCB; 3.主要算法:(1)取得第一個(gè)就緒隊(duì)列節(jié)點(diǎn)void GetFirst() run = ready; if(ready!=NULL) run ->state = 'R' ready = ready ->next; run ->next = NULL; (2)將進(jìn)程插入就緒片隊(duì)列void InsertTime(PCB *in) /將進(jìn)程插入到就緒隊(duì)列尾部 PCB *fst; fst = ready; if(ready = NULL) in->next = r
4、eady; ready = in; else while(fst->next != NULL) fst = fst->next; in ->next = fst ->next; fst ->next = in; (3)時(shí)間片輪轉(zhuǎn)調(diào)度void RoundRun() int flag = 1; GetFirst(); while(run != NULL) Output(); while(flag) run->count+; run->cputime+; run->needtime-; if(run->needtime = 0) /進(jìn)程執(zhí)行完畢
5、run ->state = 'F' InsertFinish(run); flag = 0; else if(run->count = run->round)/時(shí)間片用完 run->state = 'W' run->count = 0; /計(jì)數(shù)器清零,為下次做準(zhǔn)備 InsertTime(run); flag = 0; flag = 1; GetFirst(); 4.流程圖:開(kāi)始界面顯示輸入進(jìn)程數(shù)目進(jìn)程信息輸入并初始化將進(jìn)程插入就緒隊(duì)列設(shè)標(biāo)志flag=1取就緒隊(duì)列首節(jié)點(diǎn)Run!=null N結(jié)束輸出各隊(duì)列進(jìn)程信息 YFlag=1 Nr
6、un->count+; run->cputime+;run->needtime-; run->cputime+; run->needtime-; Yrun->needtime = 0run->count= run->roundrun->roundrun->round Y N N 將進(jìn)程插入完成隊(duì)列將進(jìn)程插入就緒隊(duì)列 YFlag=0 四、實(shí)驗(yàn)結(jié)果及分析 1.程序運(yùn)行截圖:2.實(shí)驗(yàn)體會(huì)(1)、本實(shí)驗(yàn)的難點(diǎn)是每執(zhí)行一個(gè)時(shí)間片就讓它排到隊(duì)尾,也即重新排序,并從頭開(kāi)始調(diào)度執(zhí)行?。?)、時(shí)間片的工作流程是:時(shí)間片輪轉(zhuǎn)的原則是系統(tǒng)將所有的就緒進(jìn)程按
7、照先來(lái)先服務(wù)的原則排成一個(gè)隊(duì)列,每次調(diào)度時(shí),把CPU分配隊(duì)首進(jìn)程,并令其執(zhí)行一個(gè)時(shí)間片,當(dāng)執(zhí)行完時(shí),有一個(gè)計(jì)時(shí)器發(fā)出時(shí)鐘中斷請(qǐng)求,該進(jìn)程停止,并被送到就緒隊(duì)列的末尾,然后再把處理機(jī)分配就緒隊(duì)列的隊(duì)列進(jìn)程,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。(3)、通過(guò)親手實(shí)驗(yàn),對(duì)上述寫的時(shí)間片的工作流程和原理有了更貼切的認(rèn)識(shí)。另外本次實(shí)驗(yàn)遇到了很大的麻煩,其實(shí)大部分代碼是借鑒網(wǎng)上的,但自己通過(guò)修改,來(lái)獲取自己想要的,在自己的努力和同學(xué)的幫助下終于調(diào)試正確,很是高興。教 師 評(píng) 價(jià)評(píng)定項(xiàng)目ABCD評(píng)定項(xiàng)目ABCD算法正確界面美觀,布局合理程序結(jié)構(gòu)合理操作熟練語(yǔ)法、語(yǔ)義正確解析完整實(shí)驗(yàn)結(jié)果正確文字流暢報(bào)告規(guī)范題解正確其他:
8、評(píng)價(jià)教師簽名:年 月 日附代碼:#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct node char name10; /進(jìn)程的名字 int round; /一次分配CPU的時(shí)間片 int cputime; /CPU已執(zhí)行時(shí)間 int needtime; /進(jìn)程執(zhí)行所需要的時(shí)間 char state; /進(jìn)程的狀態(tài),W-就緒態(tài),R-執(zhí)行態(tài),F(xiàn)-完成態(tài) int count; /記錄進(jìn)程執(zhí)行的次數(shù) struct node *next; /隊(duì)列指針 PCB; PCB *
9、ready=NULL,*run=NULL,*finish=NULL; /定義三個(gè)隊(duì)列,就緒隊(duì)列,執(zhí)行隊(duì)列和完成隊(duì)列 int num; void GetFirst(); /從就緒隊(duì)列取得第一個(gè)節(jié)點(diǎn) void Output(); /輸出各隊(duì)列信息 void InsertTime(PCB *in); /插入就緒片隊(duì)列 void InsertFinish(PCB *in); /插入完成隊(duì)列 void TimeCreate(); /時(shí)間片輸入函數(shù) void RoundRun(); /時(shí)間片輪轉(zhuǎn)調(diào)度 void main() printf("n* 歡迎光臨指導(dǎo) *n"); printf(
10、"n*時(shí)間片輪轉(zhuǎn)進(jìn)程調(diào)度算法 *n");printf("n* 計(jì)科B082 韓友 *n");printf("n* 200807014225 *n");printf("n* 2011年5月15日 *n"); printf("n請(qǐng)輸入要?jiǎng)?chuàng)建的進(jìn)程數(shù)目:n"); scanf("%d",&num); getchar(); /吸收回車符號(hào) TimeCreate(); RoundRun(); Output(); void GetFirst() /取得第一個(gè)就緒隊(duì)列節(jié)點(diǎn) run =
11、 ready; if(ready!=NULL) run ->state = 'R' ready = ready ->next; run ->next = NULL; void Output() /輸出隊(duì)列信息 PCB *p; p = ready; printf("進(jìn)程 輪數(shù) cpu時(shí)間 需要時(shí)間 進(jìn)程狀態(tài) 計(jì)數(shù)器n"); while(p!=NULL) printf("%st%dt%dt%dt%ct%dn",p->name,p->round,p->cputime,p->needtime,p->
12、state,p->count); p = p->next; p = finish; while(p!=NULL) printf("%st%dt%dt%dt%ct%dn",p->name,p->round,p->cputime,p->needtime,p->state,p->count); p = p->next; p = run; while(p!=NULL) printf("%st%dt%dt%dt%ct%dn",p->name,p->round,p->cputime,p->
13、needtime,p->state,p->count); p = p->next; void InsertTime(PCB *in) /將進(jìn)程插入到就緒隊(duì)列尾部 PCB *fst; fst = ready; if(ready = NULL) in->next = ready; ready = in; else while(fst->next != NULL) fst = fst->next; in ->next = fst ->next; fst ->next = in; void InsertFinish(PCB *in) /將進(jìn)程插入到
14、完成隊(duì)列尾部 PCB *fst; fst = finish; if(finish = NULL) in->next = finish; finish = in; else while(fst->next != NULL) fst = fst->next; in ->next = fst ->next; fst ->next = in; void TimeCreate() /時(shí)間片輪轉(zhuǎn)輸入函數(shù) PCB *tmp; int i; printf("輸入進(jìn)程名字和進(jìn)程時(shí)間片所需時(shí)間:n"); for(i = 0;i < num; i+) i
15、f(tmp = (PCB *)malloc(sizeof(PCB)=NULL) perror("malloc"); exit(1); scanf("%s",tmp->name); getchar(); scanf("%d",&(tmp->needtime); tmp ->cputime = 0; tmp ->state ='W' tmp ->round = 2; /假設(shè)每個(gè)進(jìn)程所分配的時(shí)間片是2 tmp ->count = 0; InsertTime(tmp); void RoundRun() /時(shí)間片輪轉(zhuǎn)調(diào)度算法 int flag = 1; GetFirst(); while(run != NULL) Output(); while(flag) run->count+; run->cputime+; run->needtime-; if(run-&
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物養(yǎng)護(hù)服務(wù)合同及免責(zé)條款
- 遠(yuǎn)程辦公平臺(tái)使用合同
- 2025公司商業(yè)秘密保密的合同
- 2025年臨時(shí)用工合同
- 2025關(guān)于合同繼續(xù)履行的條件
- 2025超市意向合同范
- 2025數(shù)據(jù)保密技術(shù)合同
- 商品銷售合同標(biāo)準(zhǔn)版范本
- 技術(shù)合作合同
- 簡(jiǎn)單門面轉(zhuǎn)讓合同范本1
- 上海市12校2025屆高三第一次模擬考試英語(yǔ)試卷含解析
- 三年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案集錦
- 鋪大棚膜合同模板
- 長(zhǎng)亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡(jiǎn)版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲(chǔ)系統(tǒng)解決方案
- 《銷售心理學(xué)培訓(xùn)》課件
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及解析
- 你比我猜題庫(kù)課件
- 豐順縣鄉(xiāng)鎮(zhèn)集中式飲用水水源地基礎(chǔ)狀況調(diào)查和風(fēng)險(xiǎn)評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論