資源描述:
《實(shí)驗(yàn)二 單處理器系統(tǒng)的進(jìn)程調(diào)度》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、實(shí)驗(yàn)二?單處理器系統(tǒng)的進(jìn)程調(diào)度(附實(shí)驗(yàn)報(bào)告)?1.實(shí)驗(yàn)?zāi)康募由顚M(jìn)程概念的理解,明確進(jìn)程和程序的區(qū)別;深入了解系統(tǒng)如何組織進(jìn)程、創(chuàng)建進(jìn)程;進(jìn)一步認(rèn)識如何實(shí)現(xiàn)處理器調(diào)度。?2.實(shí)驗(yàn)預(yù)備知識進(jìn)程的概念;進(jìn)程的組織方式;進(jìn)程的創(chuàng)建;進(jìn)程的調(diào)度。?3.實(shí)驗(yàn)內(nèi)容編寫程序完成單處理機(jī)系統(tǒng)中的進(jìn)程調(diào)度,要求采用時(shí)間片輪轉(zhuǎn)調(diào)度算法。實(shí)驗(yàn)具體包括:首先確定進(jìn)程控制塊的內(nèi)容,進(jìn)程控制塊的組成方式;然后完成進(jìn)程創(chuàng)建原語和進(jìn)程調(diào)度原語;最后編寫主函數(shù)對所作工作進(jìn)程測試。?4.提示與講解這個(gè)實(shí)驗(yàn)主要要考慮三個(gè)問題:如何組織
2、進(jìn)程、如何創(chuàng)建進(jìn)程和如何實(shí)現(xiàn)處理器調(diào)度。考慮如何組織進(jìn)程,首先就要設(shè)定進(jìn)程控制塊的內(nèi)容。進(jìn)程控制塊PCB記錄各個(gè)進(jìn)程執(zhí)行時(shí)的情況。不同的操作系統(tǒng),進(jìn)程控制塊記錄的信息內(nèi)容不一樣。操作系統(tǒng)功能越強(qiáng),軟件也越龐大,進(jìn)程控制塊記錄的內(nèi)容也就越多。這里的實(shí)驗(yàn)只使用了必不可少的信息。一般操作系統(tǒng)中,無論進(jìn)程控制塊中信息量多少,信息都可以大致分為以下四類:???①標(biāo)識信息每個(gè)進(jìn)程都要有一個(gè)惟一的標(biāo)識符,用來標(biāo)識進(jìn)程的存在和區(qū)別于其他進(jìn)程。這個(gè)標(biāo)識符是必不可少的,可以用符號或編號實(shí)現(xiàn),它必須是操作系統(tǒng)分配的。在
3、后面給出的參考程序中,采用編號方式,也就是為每個(gè)進(jìn)程依次分配一個(gè)不相同的正整數(shù)。②說明信息用于記錄進(jìn)程的基本情況,例如進(jìn)程的狀態(tài)、等待原因、進(jìn)程程序存放位置、進(jìn)程數(shù)據(jù)存放位置等等。實(shí)驗(yàn)中,因?yàn)檫M(jìn)程沒有數(shù)據(jù)和程序,僅使用進(jìn)程控制塊模擬進(jìn)程,所以這部分內(nèi)容僅包括進(jìn)程狀態(tài)。③現(xiàn)場信息現(xiàn)場信息記錄各個(gè)寄存器的內(nèi)容。當(dāng)進(jìn)程由于某種原因讓出處理器時(shí),需要將現(xiàn)場信息記錄在進(jìn)程控制塊中,當(dāng)進(jìn)行進(jìn)程調(diào)度時(shí),從選中進(jìn)程的進(jìn)程控制塊中讀取現(xiàn)場信息進(jìn)行現(xiàn)場恢復(fù)。現(xiàn)場信息就是處理器的相關(guān)寄存器內(nèi)容,包括通用寄存器、程序計(jì)數(shù)
4、器和程序狀態(tài)字寄存器等。在實(shí)驗(yàn)中,可選取幾個(gè)寄存器作為代表。用大寫的全局變量AX、BX、CX、DX模擬通用寄存器、大寫的全局變量PC模擬程序計(jì)數(shù)器、大寫的全局變量PSW模擬程序狀態(tài)字寄存器。④管理信息管理信息記錄進(jìn)程管理和調(diào)度的信息。例如進(jìn)程優(yōu)先數(shù)、進(jìn)程隊(duì)列指針等。實(shí)驗(yàn)中,僅包括隊(duì)列指針。因此可將進(jìn)程控制塊結(jié)構(gòu)定義如下:structpcb{intname;??????????????????intstatus;?????????????????intax,bx,cx,dx;????????????
5、??intpc;????????????????intpsw;??????????????intnext;??????????????}確定進(jìn)程控制塊內(nèi)容后,要考慮的就是如何將進(jìn)程控制塊組織在一起。多道程序設(shè)計(jì)系統(tǒng)中,往往同時(shí)創(chuàng)建多個(gè)進(jìn)程。在單處理器的情況下,每次只能有一個(gè)進(jìn)程處于運(yùn)行態(tài),其他的進(jìn)程處于就緒狀態(tài)或等待狀態(tài)。為了便于管理,通常把處于相同狀態(tài)的進(jìn)程的進(jìn)程控制塊鏈接在一起。單處理器系統(tǒng)中,正在運(yùn)行的進(jìn)程只有一個(gè)。因此,單處理器系統(tǒng)中進(jìn)程控制塊分成一個(gè)正在運(yùn)行進(jìn)程的進(jìn)程控制塊、就緒進(jìn)程的進(jìn)
6、程控制塊組織成的就緒隊(duì)列和等待進(jìn)程的進(jìn)程控制塊組成的等待隊(duì)列。由于實(shí)驗(yàn)?zāi)M的是進(jìn)程調(diào)度,沒有對等待隊(duì)列的操作,所以實(shí)驗(yàn)中只有一個(gè)指向正在運(yùn)行進(jìn)程的進(jìn)程控制塊指針和一個(gè)就緒進(jìn)程的進(jìn)程控制塊隊(duì)列指針。操作系統(tǒng)的實(shí)現(xiàn)中,系統(tǒng)往往在主存中劃分出一個(gè)連續(xù)的專門區(qū)域存放系統(tǒng)的進(jìn)程控制塊,實(shí)驗(yàn)中應(yīng)該用數(shù)組模擬這個(gè)專門的進(jìn)程控制塊區(qū)域,定義如下:#define?n??10??????????structpcb?pcbarea[n];???????這樣,進(jìn)程控制塊的鏈表實(shí)際上是數(shù)據(jù)結(jié)構(gòu)中使用的靜態(tài)鏈表。進(jìn)程控制塊的
7、鏈接方式可以采用單向和雙向鏈表,實(shí)驗(yàn)中,進(jìn)程控制塊隊(duì)列采用單向不循環(huán)靜態(tài)鏈表。為了管理空閑進(jìn)程控制塊,還應(yīng)該將空閑控制塊鏈接成一個(gè)隊(duì)列。實(shí)驗(yàn)中采用時(shí)間片輪轉(zhuǎn)調(diào)度算法,這種算法是將進(jìn)程控制塊按照進(jìn)入就緒隊(duì)列的先后次序排成隊(duì)列。關(guān)于就緒隊(duì)列的操作就是從隊(duì)頭摘下一個(gè)進(jìn)程控制塊和從隊(duì)尾掛入一個(gè)進(jìn)程控制塊。因此為就緒隊(duì)列定義兩個(gè)指針,一個(gè)頭指針,指向就緒隊(duì)列的第一個(gè)進(jìn)程控制塊;一個(gè)尾指針,指向就緒隊(duì)列的最后一個(gè)進(jìn)程控制塊。實(shí)驗(yàn)中指向運(yùn)行進(jìn)程的進(jìn)程控制塊指針、就緒隊(duì)列指針和空閑進(jìn)程控制塊隊(duì)列指針定義如下:in
8、t?run;??????????struct{int?head;?int?tail;}ready;????????????int?pfree;????????以上是如何組織進(jìn)程,下面考慮如何創(chuàng)建進(jìn)程。進(jìn)程創(chuàng)建是一個(gè)原語,因此在實(shí)驗(yàn)中應(yīng)該用一個(gè)函數(shù)實(shí)現(xiàn),進(jìn)程創(chuàng)建的過程應(yīng)該包括:①申請進(jìn)程控制塊:進(jìn)程控制塊的數(shù)量是有限的,如果沒有空閑進(jìn)程控制塊,則進(jìn)程不能創(chuàng)建,如果申請成功才可以執(zhí)行第②步;②申請資源:除了進(jìn)程控制塊外,還需要有必要的資源才能創(chuàng)建進(jìn)程,如果申請資源不成功,則不能創(chuàng)建進(jìn)程