版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)課程實驗報告姓名學(xué)號系計算機(jī)科學(xué)與技 術(shù)任課教師賀輝指導(dǎo)教師賀輝評閱教師賀輝實驗地點(diǎn)實驗時間實驗編號與實驗名稱:第5次進(jìn)程調(diào)度模擬實驗?zāi)康模哼M(jìn)程調(diào)度是處理機(jī)管理的核心內(nèi)容。通過本實驗可以加深理解有關(guān)進(jìn)程控制塊(進(jìn)程的概念)、進(jìn)程隊列的概念及進(jìn)程調(diào)度算法的理解并體會和了解優(yōu)先級和時間片輪轉(zhuǎn)調(diào)度算法的具 體實施辦法。實驗內(nèi)容及要求(詳見實驗講義):本實驗要求用C語言【也可以是其它你擅長的程序設(shè)計語言】編寫和調(diào)試一個簡單的進(jìn)程 調(diào)度模擬程序。須在實驗報告中給岀詳細(xì)算法描述和流程圖。設(shè)計進(jìn)程控制塊PCB表結(jié)構(gòu),分別適用于優(yōu)先級調(diào)度算法和輪轉(zhuǎn)調(diào)度算法。編制兩種進(jìn)程調(diào)度算法:1)優(yōu)先級調(diào)度;2)輪
2、轉(zhuǎn)調(diào)度建立進(jìn)程就緒隊列。對兩種不同算法編制入隊子程序【重點(diǎn)!】。實驗用到的軟件(:)Vs word實驗內(nèi)容、關(guān)鍵步驟(流程圖、代碼等)及結(jié)果分析(70分)1優(yōu)先級調(diào)度(1)基本思想:為了防止高優(yōu)先級進(jìn)程無休止地運(yùn)行下去,調(diào)度程序可以在每個時鐘滴答(即 每個時鐘中斷)降低當(dāng)前進(jìn)程的優(yōu)先級。(2)實現(xiàn):即給每個進(jìn)程被賦予一個優(yōu)先級,允許優(yōu)先級最高的可運(yùn)行進(jìn)程先運(yùn)行。進(jìn)程之間再以優(yōu)先級的髙低,從高到低進(jìn)行排序,之后開始執(zhí)行進(jìn)程,在規(guī)左的時間片當(dāng)中,如果 進(jìn)程能夠執(zhí)行完畢,就從進(jìn)程隊列當(dāng)中移除該進(jìn)程,否則的話,減小該進(jìn)程的優(yōu)先級(運(yùn)行 一次,優(yōu)先級-8),插入進(jìn)程隊列當(dāng)中,整個進(jìn)程隊列依舊是按照優(yōu)先級
3、從髙到低的順序進(jìn)行 排序,之后繼續(xù)執(zhí)行,判斷進(jìn)程隊列是否為空,如果不為空,則就緒隊列的首進(jìn)程投入運(yùn)行。 最后直到進(jìn)程隊列為空,結(jié)朿。(3)算法流程圖使用優(yōu)先級算法給新加的五個進(jìn)程進(jìn)行cpu處理。就緒隊列為空將首進(jìn)程置入到 就緒隊列中,并 運(yùn)行。進(jìn)程狀態(tài) 變?yōu)镽。進(jìn)程開始運(yùn)行,當(dāng)時間時間片使用 完,cpu的使用時間+1,進(jìn)程所需的 時間優(yōu)先級狀態(tài)置為W判斷進(jìn)程所需cpu時間是否等于運(yùn)行時 間。如果等于,那么進(jìn)程被cpu處理完, 進(jìn)程狀態(tài)變?yōu)镕,將cpu資源分配給英 他進(jìn)程。重新對進(jìn)程排序,按照進(jìn)程的 優(yōu)先級髙低。如果所有進(jìn)程狀態(tài)都為廠 隊列為空,即表明所有進(jìn) 程都被cpu處理完,結(jié)束。(4)步驟
4、說明1)char algo;pmitfr選擇算法:P/R(優(yōu)先級算法/時間片輪轉(zhuǎn)算法):輸入結(jié)束n); scanf_s(%c,/ &algo);printf(“輸入進(jìn)程數(shù):nM);scanf_s(%d舄 &N);選擇算法,進(jìn)程數(shù)量2)for (i = 1; i name, na); p-cputime = 0; p-needtime = time; p-state = w; p-prio = 100 time; if (ready != NULL)insertl(p);elsep-next = ready; ready 二 p;初始化并創(chuàng)建進(jìn)程,排序run = ready;ready = re
5、ady- next;run-state = R;將首進(jìn)程進(jìn)入就緒隊列run-cputime = run-cputime + 1;run-needtime =eedtime 1;run-prio = run-prio - 8; if (ready != NULL)cha nge(r un);elserun-next = ready; ready = run;run = ready;ready = ready- next; run-state = R;進(jìn)程運(yùn)行及重新排序。if(run-needtime = 0)run-next = finish; finish = run; run-state =
6、 F1; run = NULL;if (ready != NULL) firstin();進(jìn)程處理完,將cpu資源交予其他進(jìn)程。(5)子函數(shù)關(guān)系圖先選擇優(yōu)先級算法,再輸入進(jìn)程數(shù)傳入createl函數(shù)。再利用createl創(chuàng)建進(jìn)程。(6)結(jié)果將進(jìn)程傳進(jìn)prtl() 函數(shù)輸岀信息。將進(jìn)程傳進(jìn)prt()函數(shù)。將進(jìn)程傳進(jìn)prt2() 函數(shù)輸出排序后. 進(jìn)程的所有信息。跳轉(zhuǎn)到priority()函數(shù),并傳入?yún)?shù)即進(jìn)程數(shù)量。進(jìn)程開始運(yùn)行,時間片使用完,cpu的使用時間+1,進(jìn)程所需的時間,優(yōu)先級-8,狀態(tài)宜為并判斷進(jìn)程是否被處理完,處理完將cpu資源給予其他進(jìn)程。判斷進(jìn)程所需cpu時間是否等于運(yùn)行時 間。
7、如果等于,那么進(jìn)程被cpu處理完, 進(jìn)程狀態(tài)變?yōu)镕,將cpu資源分配給其他 進(jìn)程。將進(jìn)程傳入change ()函數(shù),重新對進(jìn)程排序,按照進(jìn)程的優(yōu)先級髙低。將新建進(jìn)程傳入insertl()函數(shù)進(jìn)行從優(yōu)先級程度髙到低排序(優(yōu)先級“00-所需cpu運(yùn)行時間) D:xuexi燥作系統(tǒng)作業(yè)五次實驗五-桂擇算法:P/R(優(yōu)先級算法/時問片輪軼算?4):禰入心站衷 囪入進(jìn)程數(shù)一扁入逬程號、運(yùn)行時何:m 2p2 3冃3 5刖205 4優(yōu)先數(shù)算祛輸出1fl&:KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX進(jìn)程號己占用CPU時問所需時間優(yōu)先數(shù)狀恣A1e298M餅e
8、298MA2039?MA5e96MA3e595M逬程號已占用CPU時間所需時間優(yōu)先數(shù)狀態(tài)G298RP2e397MA5e96MA36595WA11190M難撈咅需入法全:己占用CPU時間進(jìn)程號己占用CPU時何所需時何A5GMA3G5A111姑11A212態(tài) RMWWM狀數(shù)先99590英89A3G595PI11逬程號A2ASA3A1進(jìn)程號己占用CPU時問所需時問優(yōu)先敖A3G5RA111W11WA212MAS13W D:xuexi漲作系統(tǒng)作業(yè)第五次實驗第五A21289HA51388U進(jìn)程號己占用CPU時間所需時間優(yōu)先效狀杏A11190RA41190NA21289MA51388MA31487M進(jìn)程號己
9、占用CPU時間所需時間優(yōu)先數(shù)狀態(tài)A41136RA21289HA51388WA3187MA12082F進(jìn)程號已占用CPU時間所需時間優(yōu)先數(shù)狀花A21289RA51388MA3187HA42082FA12082F諭入法全:M2082FA12082F進(jìn)程號己占用CPU時問所簽時間優(yōu)先敷狀恣A51388RA31斗87MA22181WM2e82FA12082F進(jìn)程號己占用CPU時問所誥時何優(yōu)先數(shù)狀恣A31斗RA221M22MM20FAI20F進(jìn)程號己占用CPU時間所希時間優(yōu)先數(shù)狀杏A22181RA52289WA323T3MM2032FA12032FtliS 為 5di 亠輸入法全X D:xuexiJg作
10、系統(tǒng)作業(yè)第五次實驗第五_ D:xuexiJg作系統(tǒng)作業(yè)諜五次實驗第五M2G82FA12G82F迸程號己占用CPU時何所盍?xí)r間優(yōu)先數(shù)狀態(tài)A52286RR32379WM3673FM2G82FA12G82F迸程號己占用CPU時何所畬時間優(yōu)先效狀態(tài)A32379RQ53172NM3073FM2G82FA12G82F迸程號己占用CPU時何所需時間優(yōu)先數(shù)狀態(tài)A53172RR332?1wA23073FM2G82F2G82F:XjXT H輸入法全:V D:xuexi燥作系統(tǒng)作業(yè)澤五次實驗M五進(jìn)程號 Q5 A3MP1己占用CPU時何舸齋時間優(yōu)先紋7271738282進(jìn)程號P3A52MA1己占用CPU時何所需時間優(yōu)
11、先坡7164738282進(jìn)程號P3A5Q2A1己占用CPU時何所需時何優(yōu)先坡636738282結(jié)果分析:和優(yōu)先級算法結(jié)果一樣。2.輪轉(zhuǎn)調(diào)度基本思想:每個進(jìn)程被分配一個時間段,稱為時間片,即允許改進(jìn)程在i亥時間段中運(yùn)行。如 果時間片結(jié)束時改進(jìn)程還在運(yùn)行,則將剝奪cpu并分配給另一個進(jìn)程。如果該進(jìn)程在時間片 結(jié)朿前阻塞或結(jié)朿,則cpu立即進(jìn)行切換。實現(xiàn):每個進(jìn)程都會被分配一個相同的時間片,并按照先來先服務(wù)進(jìn)行排序,允許該進(jìn)程在 該時間段中運(yùn)行。如果在時間片結(jié)朿時該進(jìn)程還在運(yùn)行,則將剝奪CPU并分配給另一個進(jìn)程。 如果該進(jìn)程在時間片結(jié)束前阻塞或結(jié)朿,則CPU立即進(jìn)行切換。其中每個進(jìn)程分配的相同時 間
12、片的大小設(shè)計為2, 個進(jìn)程如果在該時間片當(dāng)中沒有結(jié)束,則將會被強(qiáng)制結(jié)束,將CPU 分配給下一個進(jìn)程,該進(jìn)程將會被插入整個進(jìn)程隊列的最后,如果一個進(jìn)程在規(guī)泄的時間結(jié) 朿,則將CPU立刻分配給下一個進(jìn)程,該進(jìn)程從進(jìn)程隊列中移除。(3)算法流程圖時間輪轉(zhuǎn)算法先來先服務(wù)算法初始化PCB,輸入進(jìn)程 號及進(jìn)程所需的cpu運(yùn) 行時間先來先創(chuàng)建,先排序.后創(chuàng)建的插在隊列后就緒隊列為空J(rèn)Z將首進(jìn)程置入到 就緒隊列中,并 運(yùn)行。進(jìn)程狀態(tài) 變?yōu)镽。進(jìn)程開始運(yùn)行,當(dāng)時間時間片使用完,占用cpu時間+2,進(jìn)程所需的時間-2,計數(shù)+1,時間片長度不變,狀態(tài)置為并將進(jìn)程宜于隊尾。判斷進(jìn)程所需cpu時間是否等于計數(shù) *2.如
13、果等于,那么進(jìn)程被cpu處理 完,進(jìn)程狀態(tài)變?yōu)镕,將卬u資源分 配給其他進(jìn)程。進(jìn)程被插入到隊尾如果所有進(jìn)程狀態(tài)都為F,隊列為空,即表明所有進(jìn)程都被cpu處理完.結(jié)束。(4)步驟說明char algo;printfC1選擇算法:P/R(優(yōu)先級算法/時間片輪轉(zhuǎn)算法):輸入結(jié)束n); scan f_s(”c, &algo);printf(”輸入進(jìn)程數(shù):nH);scanf_s(,%d,: &N);選擇算法,進(jìn)程數(shù)量p = (PCB *)malloc(sizeof(PCB);cin na;cin time;strcpy_s(p-name, na);p-cputime = 0;pn eedtime = t
14、ime;p-co unt = 0;p-state = w;p-round = 2;if (ready != NULL)insert2(p);elsep-next = ready; ready = p; tail = p;初始化并創(chuàng)建進(jìn)程,按照先來先服務(wù)排序run = ready;ready = ready- next; run-state = R;將首進(jìn)程進(jìn)入就緒隊列run-cputime = run-cputime + 2;run-needtime = run-needtime 2;if (run-needtime needtime = 0;run-count = run-count + 1
15、;Prt(alg);進(jìn)程運(yùn)行if (run-needtime = 0)run-next = fin ish;finish = run;run-state = F;run = NUM;if (ready != NULL) firstin();elseif (run-count*2 = run-round)run-cou nt = 0;if (ready != NULL)run-state = w;in sert2(r un); firstin();處理過的或者處理完的都插入隊尾。當(dāng)所有都為F時,結(jié)束。(5)子函數(shù)關(guān)系圖(6)結(jié)果 D:xuexi縣作系統(tǒng)作業(yè)諜五次實驗第五一 felP50e2A12
16、012F逬程號己占用CPU時何所需時間計數(shù)時何片長度狀態(tài)A305e2R曲02e2MA50G2HP221e2MA120i2F逬程號己占用CPU時何所需時間計數(shù)時間片長度狀態(tài)Al02e2RA50e2MA221G2WP323e2MA120i2F逬腔號己占用CPU時間所需時問計數(shù)時間片長度A50斗G2RQ221e2MQ32302M20i2FA120i2F搜狗拼咅!尚入法全: P:xuexi臊作系統(tǒng)作業(yè)謬五次實驗諜五-口M A122001122FF迸程號己占用CPU時問斯羞時何計孩時何片長度狀態(tài)A22102RR32302wA52202WA42012FA12012F迸程號己占用CPU時問所需時間計效時何片
17、長度狀態(tài)A32302RR52202wM耳012FM2012FM2G12F進(jìn)程號己占用CPU時問所希時間計玻時何片長度狀態(tài)A52202RA34102wA2q012FM2012FM搜狗拼弟2矗入法全:012F D:xuexiw乍系統(tǒng)作業(yè)第五次實驗第五XM2912FAl2912F逬程號己占用CPU時問所需時問計數(shù)時間片長度狀態(tài)A323G2RR522G2WM耳012FM2912FA12012F迸程號己占用CPU時何所需時問計數(shù)時間片長度狀態(tài)A522G2RR3q1G2WA2耳012FM2e12FA12912F逬程號己占用CPU時問所需時問計數(shù)時間片長度狀態(tài)A31G2RQ5q012FA2斗012FM2e1
18、2FAl2012F輸入法全:D:xuexiJg作系統(tǒng)作業(yè)五次實驗第五.-M2912FAl2012F迸程號己占用CPU時何所需時間計數(shù)時何片長度秋譽(yù)A52202RA3片102WA24912FM2012FAl2912F迸程號己占用CPU時問所簾時問計紋時問片長度狀恣A34102RA54912FM4012FM2012FAl2912F逬程號己占用CPU時何所需時間計數(shù)時何片長皮狀恣A36012FA5片912FR24912FM2012Fd2912F搜狗拼音禰入法全i結(jié)果分析:和時間片輪轉(zhuǎn)調(diào)度算法結(jié)果一樣3 代碼/ :定義控制臺應(yīng)用程序的入口點(diǎn)。/includen轉(zhuǎn) include11,1ffinclud
19、e ,H,include 11,1ffinclude ,1Mffinclude ,H,include,H,#include using namespace std;typedef struct nodechar name10;int prio;int round;int cputime;int needtime;int count;char state;struct node *next;PCB;PCB *finishz * ready, *taiL *run;int N;void firstin()run = ready;run-state = R;ready = ready- next;v
20、oid prtl(char a)if (toupper(a) = P)printf(進(jìn)程號己占用CPU時間 所需時間 優(yōu)先數(shù) 狀態(tài)n);else狀態(tài)n“);printf(進(jìn)程號已占用CPU時間 所需時間 計數(shù)時間片長度void prt2(char a, PCB *q)if (toupper(a) = P)printf(”%-10s%-15d%-10d%-7d %cn,/ q-name,qcputime, q:*needtime, q-prio, q-state);elseprintf(”%-12s%-12d%-12d%-12d%-12d %-cn蔦 qnam巳q-cputimez q-need
21、timez q-count, q-round, q-state);void prt(char algo)PCB *p;prtl(algo);if (run != NULL)pt2(algo, run);p = ready;while (p != NULL)prt2(algo, p);p = p-next;p = fin ish;while (p != NULL)prt2(algo, p);p = p-next;getchar();void insertl(PCB *q)PCB pl, *sz *r;int b;s 二 q;pl = ready;r = pl;b = 1;while (pl !=
22、 NULL) & b) if (pl-prio = s-prio) r = pl;pl = pl-next;elseb = 0;if (r != pl)r-next = s;s-next = pl; elses-next = pl; ready = s;void insert2(PCB*p2)tail-next = p2; tail = p2;p2-next = NULL;void change(PCB #q)PCB pl, *sz *r; int b; q-state = w; s = q; pl = ready; r = pl;b = 1;while (pl != NULL) & b) i
23、f (pl-prio = s-prio) r = pl;pl = pln ext; elseb = 0;if (r != pl)r-next = s; sn ext = pl; elsesn ext = pl; ready = s;void createl(char alg, int N) PCB *p; int i, time; char na10; ready = NULL; finish = NULL;run = NULL;printtf輸入進(jìn)程號.運(yùn)行時間:n);for (i = 1; i name, na); p-cputime = 0; p-needtime = time; p-s
24、tate = w; p-prio = 100 - time; if (ready != NULL) insertl(p); elsepn ext = ready; ready = p;printf(H優(yōu)先數(shù)算法輸出仁息:n);printf(ii #*#*拿拿導(dǎo)專拿拿*拿*拿拿拿茅*拿拿拿*茅*Prt(alg); run = ready;ready = ready-next;run-state = R; void create2(char alg, int N)PCB *p;int i, time; char na10; ready = NULL; finish = NULL;run = NUL
25、L;printfC輸入進(jìn)程號、運(yùn)冇時間:rf); for (i = 1; i name, na);p-cputime = 0; p-needtime = time; p-count = 0; p-state = w1; p-rou nd = 2;if (ready != NULL)insert2(p);elsep-next = ready; ready = p; tail = p;printf(H諭出佇息n“);printff”*拿拿拿拿*拿*拿*$*nH);Prt(alg); run = ready; ready = ready-next;run-state = R;void priority(char alg)while (run != NULL)run-cputime = run-cputime + 1; run-needtime = runneedtime 1; run-prio = run-prio - 8; if (run-needtime = 0)runn ext = fin ish; finish = run; run-state = F; run = NULL; if (ready != NULL) firstin();if (ready !=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省大慶市肇源縣東部五校(五四制)2024-2025學(xué)年八年級上學(xué)期10月月考化學(xué)試卷(含答案)
- 第23單元 旋轉(zhuǎn)-單元測試卷(4)-2024-2025學(xué)年數(shù)學(xué)人教版9年級上冊(含答案解析)
- 數(shù)據(jù)中心能源管理方案
- 贛南師范大學(xué)《行政管理學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《教師專業(yè)發(fā)展》2022-2023學(xué)年第一學(xué)期期末試卷
- 阜陽師范大學(xué)《幼兒園游戲》2023-2024學(xué)年第一學(xué)期期末試卷
- 粵教版一年級下冊-科學(xué)-教學(xué)設(shè)計
- 徐州市2024-2025學(xué)年四年級上學(xué)期11月期中調(diào)研數(shù)學(xué)試卷一(有答案)
- 福建師范大學(xué)協(xié)和學(xué)院《視覺設(shè)計基礎(chǔ)》2022-2023學(xué)年第一學(xué)期期末試卷
- 福建師范大學(xué)《人力資源管理(雙語)》2022-2023學(xué)年第一學(xué)期期末試卷
- 交流充電樁使用說明書
- FMEA分析表 模板
- 正比例函數(shù)的圖像與性質(zhì)教學(xué)反思
- 學(xué)校家委會換屆方案
- 第二節(jié)裝配式鋼筋混凝土T形梁橋PPT課件
- Yonyou U9 條碼操作手冊
- 公司領(lǐng)導(dǎo)干部調(diào)查研究制度
- 海水淡化反滲透裝置檢修維護(hù)說明書
- 連續(xù)梁合攏方案
- 異辛酸鈉合成工藝及建設(shè)項目
- DB42∕T 1124-2015 城市園林綠化養(yǎng)護(hù)管理質(zhì)量標(biāo)準(zhǔn)
評論
0/150
提交評論