




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗二 單處理器系統(tǒng)的進(jìn)程調(diào)度(附實驗報告)1實驗?zāi)康募由顚M(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別;深入了解系統(tǒng)如何組織進(jìn)程、創(chuàng)建進(jìn)程;進(jìn)一步認(rèn)識如何實現(xiàn)處理器調(diào)度。2實驗預(yù)備知識進(jìn)程的概念;進(jìn)程的組織方式;進(jìn)程的創(chuàng)建;進(jìn)程的調(diào)度。3實驗內(nèi)容編寫程序完成單處理機(jī)系統(tǒng)中的進(jìn)程調(diào)度,要求采用時間片輪轉(zhuǎn)調(diào)度算法。實驗具體包括:首先確定進(jìn)程控制塊的內(nèi)容,進(jìn)程控制塊的組成方式; 然后完成進(jìn)程創(chuàng)建原語和進(jìn)程調(diào)度原語;最后編寫主函數(shù)對所作工作進(jìn)程測試。4提示與講解這個實驗主要要考慮三個問題:如何組織進(jìn)程、如何創(chuàng)建進(jìn)程和如何實現(xiàn)處理器調(diào)度。考慮如何組織進(jìn)程,首先就要設(shè)定進(jìn)程控制塊的內(nèi)容。進(jìn)程控制塊PCB記錄各個
2、進(jìn)程執(zhí)行時的情況。不同的操作系統(tǒng),進(jìn)程控制塊記錄的信息內(nèi)容不一樣。操作系統(tǒng)功能越強(qiáng),軟件也越龐大,進(jìn)程控制塊記錄的內(nèi)容也就越多。這里的實驗只使用了必不可少的信息。一般操作系統(tǒng)中,無論進(jìn)程控制塊中信息量多少,信息都可以大致分為以下四類:標(biāo)識信息每個進(jìn)程都要有一個惟一的標(biāo)識符,用來標(biāo)識進(jìn)程的存在和區(qū)別于其他進(jìn)程。這個標(biāo)識符是必不可少的,可以用符號或編號實現(xiàn),它必須是操作系統(tǒng)分配的。在后面給出的參考程序中,采用編號方式,也就是為每個進(jìn)程依次分配一個不相同的正整數(shù)。說明信息用于記錄進(jìn)程的基本情況,例如進(jìn)程的狀態(tài)、等待原因、進(jìn)程程序存放位置、進(jìn)程數(shù)據(jù)存放位置等等。實驗中,因為進(jìn)程沒有數(shù)據(jù)和程序,僅使用進(jìn)
3、程控制塊模擬進(jìn)程,所以這部分內(nèi)容僅包括進(jìn)程狀態(tài)。現(xiàn)場信息現(xiàn)場信息記錄各個寄存器的內(nèi)容。當(dāng)進(jìn)程由于某種原因讓出處理器時,需要將現(xiàn)場信息記錄在進(jìn)程控制塊中,當(dāng)進(jìn)行進(jìn)程調(diào)度時,從選中進(jìn)程的進(jìn)程控制塊中讀取現(xiàn)場信息進(jìn)行現(xiàn)場恢復(fù)。現(xiàn)場信息就是處理器的相關(guān)寄存器內(nèi)容,包括通用寄存器、程序計數(shù)器和程序狀態(tài)字寄存器等。在實驗中,可選取幾個寄存器作為代表。用大寫的全局變量AX 、 BX、CX、DX模擬通用寄存器、大寫的全局變量PC模擬程序計數(shù)器、大寫的全局變量PSW模擬程序狀態(tài)字寄存器。管理信息管理信息記錄進(jìn)程管理和調(diào)度的信息。例如進(jìn)程優(yōu)先數(shù)、進(jìn)程隊列指針等。實驗中,僅包括隊列指針。因此可將進(jìn)程控制塊結(jié)構(gòu)定義如
4、下:structpcbint name;int status;int ax, bx, cx,dx;int pc;intpsw;int next;確定進(jìn)程控制塊內(nèi)容后,要考慮的就是如何將進(jìn)程控制塊組織在一起。多道程序設(shè)計系統(tǒng)中,往往同時創(chuàng)建多個進(jìn)程。在單處理器的情況下,每次只能有一個進(jìn)程處于運(yùn)行態(tài),其他的進(jìn)程處于就緒狀態(tài)或等待狀態(tài)。為了便于管理,通常把處于相同狀態(tài)的進(jìn)程的進(jìn)程控制塊鏈接在一起。單處理器系統(tǒng)中,正在運(yùn)行的進(jìn)程只有一個。因此,單處理器系統(tǒng)中進(jìn)程控制塊分成一個正在運(yùn)行進(jìn)程的進(jìn)程控制塊、就緒進(jìn)程的進(jìn)程控制塊組織成的就緒隊列和等待進(jìn)程的進(jìn)程控制塊組成的等待隊列。由于實驗?zāi)M的是進(jìn)程調(diào)度,沒
5、有對等待隊列的操作,所以實驗中只有一個指向正在運(yùn)行進(jìn)程的進(jìn)程控制塊指針和一個就緒進(jìn)程的進(jìn)程控制塊隊列指針。 操作系統(tǒng)的實現(xiàn)中,系統(tǒng)往往在主存中劃分出一個連續(xù)的專門區(qū)域存放系統(tǒng)的進(jìn)程控制塊,實驗中應(yīng)該用數(shù)組模擬這個專門的進(jìn)程控制塊區(qū)域,定義如下:#define n 10structpcb pcbarean;這樣, 進(jìn)程控制塊的鏈表實際上是數(shù)據(jù)結(jié)構(gòu)中使用的靜態(tài)鏈表。進(jìn)程控制塊的鏈接方式可以采用單向和雙向鏈表,實驗中,進(jìn)程控制塊隊列采用單向不循環(huán)靜態(tài)鏈表。為了管理空閑進(jìn)程控制塊,還應(yīng)該將空閑控 制塊鏈接成一個隊列。實驗中采用時間片輪轉(zhuǎn)調(diào)度算法,這種算法是將進(jìn)程控制塊按照進(jìn)入就緒隊列的先后次序排成隊列
6、。關(guān)于就緒隊列的操作就是從隊頭摘下一個進(jìn)程控制塊和從隊尾掛入一個進(jìn)程控制塊。因此為就緒隊列定義兩個指針,一個頭指針,指向就緒隊列的第一個進(jìn)程控制塊;一個尾指針,指向就緒隊列的最后一個進(jìn)程控制塊。實驗中指向運(yùn)行進(jìn)程的進(jìn)程控制塊指針、就緒隊列指針和空閑進(jìn)程控制塊隊列指針定義如下:int run;structint head;int tail;ready;int pfree;以上是如何組織進(jìn)程,下面考慮如何創(chuàng)建進(jìn)程。進(jìn)程創(chuàng)建是一個原語,因此在實驗中應(yīng)該用一個函數(shù)實現(xiàn),進(jìn)程創(chuàng)建的過程應(yīng)該包括:申請進(jìn)程控制塊:進(jìn)程控制塊的數(shù)量是有限的,如果沒有空閑進(jìn)程控制塊,則進(jìn)程不能創(chuàng)建,如果申請成功才可以執(zhí)行第步;
7、申請資源:除了進(jìn)程控制塊外,還需要有必要的資源才能創(chuàng)建進(jìn)程,如果申請資源不成功,則不能創(chuàng)建進(jìn)程,并且歸還已申請的進(jìn)程控制塊;如果申請成功,則執(zhí)行第三步,實驗無法申請資源,所以模擬程序忽略了申請資源這一步;填寫進(jìn)程控制塊:將該進(jìn)程信息寫入進(jìn)程控制塊內(nèi),實驗中只有進(jìn)程標(biāo)識符、 進(jìn)程狀態(tài)可以填寫,每個進(jìn)程現(xiàn)場信息中的寄存器內(nèi)容由于沒有具體數(shù)據(jù)而使用進(jìn)程(模擬進(jìn)程創(chuàng)建時,需輸入進(jìn)程標(biāo)識符字,進(jìn)程標(biāo)識符本應(yīng)系統(tǒng)建立,并且是惟一的,輸入時注意不要沖突),剛剛創(chuàng)建的進(jìn)程應(yīng)該為就緒態(tài),然后轉(zhuǎn)去執(zhí)行第四步;掛入就緒隊列:如果原來就緒隊列不為空,則將該進(jìn)程控制塊掛入就緒隊列尾部,并修改就緒隊列尾部指針;如果原來就
8、緒隊列為空,則將就緒隊列的頭指針、尾指針均指向該進(jìn)程控制塊,進(jìn)程創(chuàng)建完成。進(jìn)程創(chuàng)建流程圖如圖2.2所示。多道程序設(shè)計的系統(tǒng)中,處于就緒態(tài)的進(jìn)程往往是多個,它們都要求占用處理器,可是單處理器系統(tǒng)的處理器只有一個,進(jìn)程調(diào)度就是解決這個處理器競爭問題的。進(jìn)程調(diào)度的任務(wù)就是按照某種算法從就緒進(jìn)程隊列中選擇一個進(jìn)程,讓它占有處理器。因此進(jìn)程調(diào)度程序就應(yīng)該包括兩部分,一部分是在進(jìn)程就緒隊列中選擇一個進(jìn)程,并將其進(jìn)程控制塊從進(jìn)程就緒隊列中摘下來,另一部分工作就是分配處理器給選中的進(jìn)程, 也就是將指向正在運(yùn)行進(jìn)程的進(jìn)程控制塊指針指向該進(jìn)程的進(jìn)程控制 塊,并將該進(jìn)程的進(jìn)程控制塊信息寫入處理器的各個寄存器中。&l
9、t;w>取空閑進(jìn)程控制塊隊冽的需一個產(chǎn)pfte已結(jié)束圖2.2進(jìn)程創(chuàng)建流程圖實驗中采用時間片輪轉(zhuǎn)調(diào)度算法。時間片輪轉(zhuǎn)調(diào)度算法讓就緒進(jìn)程按就緒的先后次序排成隊列,每次總是選擇就緒隊列中的第一個進(jìn)程占有處理器,但是規(guī)定只能使用一個“時間片 ”。時間片就是規(guī)定進(jìn)程一次使用處理器的最長時間。實驗中采用每個進(jìn)程都使用相同的不變的時間片。采用時間片輪轉(zhuǎn)調(diào)度算法的進(jìn)程調(diào)度流程圖如圖2.3 所示。完成上述功能后,編寫主函數(shù)進(jìn)行測試:首先建立一個就緒隊列,手工輸入信息建立幾個進(jìn)程;然后進(jìn)行進(jìn)程調(diào)度;最后將指向正在運(yùn)行進(jìn)程的指針指向的進(jìn)程控制塊的內(nèi)容輸出,察看結(jié)果。5.課外題圖2.3進(jìn)程調(diào)度流程圖編程實現(xiàn)采用
10、優(yōu)先數(shù)調(diào)度算法的進(jìn)程調(diào)度。我的實現(xiàn)代碼(C 語言):#include <stdio.h>#define N 10/系統(tǒng)中所允許的最大進(jìn)程數(shù)量#define SLOT 5/時間片大小/進(jìn)程狀態(tài)枚舉typedefenumRunning,/運(yùn)行狀態(tài)Aready,/就緒狀態(tài)Blocking/阻塞狀態(tài) ProStatus;/進(jìn)程控制塊typedefstructint name;/進(jìn)程標(biāo)識符ProStatus status;/進(jìn)程狀態(tài)intax,bx,cx,dx; /通用寄存器int pc;/程序計數(shù)器寄存器intpsw;/程序狀態(tài)字寄存器int next;/指向下一個進(jìn)程的指針 PCB;/就
11、緒隊列指針typedefstructint head;/頭指針int tail;/尾指針 Ready;/模擬寄存器int PSW,AX,BX,CX,DX,PC,TIME;/PCB 的靜態(tài)鏈表PCB pcbAreaN;/模擬PCB 區(qū)域的數(shù)組int run;/運(yùn)行狀態(tài)程序的指針Ready ready; /就緒隊列指針intpfree;/空閑隊列的指針/初始化運(yùn)行狀態(tài)進(jìn)程指針void InitRun()run=-1;/初始化就緒狀態(tài)隊列void InitReady()ready.head=ready.tail=-1;/初始化空閑隊列void InitFree()int temp;for(temp=
12、0;temp<N-1;temp+)pcbAreatemp.next=temp+1;pcbAreatemp.next=-1;pfree=0;/就緒隊列出隊intPopReady()/返回結(jié)點(diǎn)在PCB 區(qū)域數(shù)組的編號int temp;if(ready.head=-1)printf(" 就緒隊列為空,不能出隊。n");return -1;temp=ready.head;ready.head=pcbAreatemp.next;if(ready.head=-1)ready.tail=-1;pcbAreatemp.next=-1;return temp;/空閑隊列出隊intPop
13、Free()/返回結(jié)點(diǎn)在PCB 區(qū)域數(shù)組的編號int temp;if(pfree=-1)n");printf(" 空閑隊列為空,不能出隊。return -1;temp=pfree;pfree=pcbAreatemp.next;pcbAreatemp.next=-1;return temp;/就緒隊列入隊void PushReady(int x) /x 為入隊結(jié)點(diǎn)的編號int temp;if(ready.head=-1)ready.head=x;ready.tail=x;elsetemp=ready.tail;ready.tail=x;pcbAreaready.tail.ne
14、xt=-1;/創(chuàng)建PCBvoid CreatePCB(intx,PCBpcb) /x 為要創(chuàng)建PCB 在 PCB 區(qū)域數(shù)組的編號pcbAreax.ax=pcb.ax;pcbAreax.bx=pcb.bx;pcbAreax.cx=pcb.cx;pcbAreax.dx=pcb.dx;pcbA=;pcbAreax.next=-1;pcbAreax.pc=pcb.pc;pcbAreax.psw=pcb.psw;pcbAreax.status=pcb.status;/創(chuàng)建進(jìn)程函數(shù)void Create(PCB pcb)int temp;if(pfree=-1)print
15、f(" 空閑隊列為空,不能創(chuàng)建進(jìn)程。n");return;temp=PopFree();pcb.status=Aready;CreatePCB(temp,pcb);PushReady(temp);/進(jìn)程調(diào)度函數(shù)void Schedule()int temp;if(ready.head=-1)printf(" 系統(tǒng)內(nèi)沒有進(jìn)程可以調(diào)度。");return;temp=PopReady();TIME=SLOT;/恢復(fù)CPU 現(xiàn)場AX=pcbAreatemp.ax;BX=pcbAreatemp.bx;CX=pcbAreatemp.cx;DX=pcbAreatemp
16、.dx;PC=pcbAreatemp.pc;PSW=pcbAreatemp.psw;run=temp;/將選中的進(jìn)程賦給運(yùn)行指針printf(" 當(dāng)前運(yùn)行的程序:n");/輸出調(diào)度結(jié)果printf(" 進(jìn)程號:%dn",pcbA);printf(" 進(jìn)程狀態(tài):%dn",pcbArearun.status);printf(" 寄存器內(nèi)容:nAXtBXtCXtDXtPCtPSWn");printf("%dt%dt%dt%dt%dt%dn",pcbArearun.ax,pcbArearun.bx,pcbArearun.cx,pcbArearun.dx,pcbArearun.pc,pcbArearu n.psw);void main()int temp;PCB tmp_pcb;printf(" 請輸入進(jìn)程號,以負(fù)數(shù)為結(jié)束(進(jìn)程號應(yīng)保持唯一)。nn 按任意鍵進(jìn)入輸入模式:");getchar();InitRun();InitReady();InitF
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《團(tuán)隊新風(fēng)采》課件
- 《腎上腺罕見病變的影像學(xué)診斷》課件
- 高等數(shù)學(xué)之導(dǎo)數(shù)與微分:課件精講
- 《零售促銷策略》課件
- 陜西高考英語高頻詞匯單選題100道及答案
- 《建筑智能化系統(tǒng)集成》課件
- 《試井解釋原理》課件
- 西樵鎮(zhèn)第一次模擬考試物理試卷
- 文檔面試技巧
- 與商會合作協(xié)議
- 2025天津東疆綜合保稅區(qū)管理委員會招聘10人筆試參考題庫附帶答案詳解
- 法院書記員招聘2023年筆試考試必做題有答案
- 2024年北京大興國際機(jī)場臨空經(jīng)濟(jì)區(qū)幼兒園招聘教師考試真題
- 雅禮新苗杯試題及答案
- 2025神農(nóng)科技集團(tuán)有限公司第一批校園招聘17人(山西)筆試參考題庫附帶答案詳解
- 醫(yī)院地震安全培訓(xùn)
- 2025-2030中國低壓電器行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025上海海事大學(xué)輔導(dǎo)員考試題庫
- 食堂7s管理標(biāo)準(zhǔn)
- 中國現(xiàn)代文學(xué)思潮知到課后答案智慧樹章節(jié)測試答案2025年春杭州師范大學(xué)
- 學(xué)生社區(qū)實習(xí)評語
評論
0/150
提交評論