資源描述:
《0第3章進(jìn)程管理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第3章進(jìn)程管理3.1進(jìn)程的概念3.2進(jìn)程的描述3.3進(jìn)程狀態(tài)及其轉(zhuǎn)換3.4進(jìn)程控制3.5進(jìn)程互斥3.6進(jìn)程同步3.7進(jìn)程通信3.8死鎖問題3.9線程本章小結(jié)習(xí)題3.1進(jìn)程的概念現(xiàn)代操作系統(tǒng)的重要特點(diǎn)是程序的并發(fā)執(zhí)行,及系統(tǒng)所擁有的資源被共享和系統(tǒng)的用戶隨機(jī)地使用。這三個(gè)特點(diǎn)是互相聯(lián)系和互相依賴的。通常,操作系統(tǒng)的重要任務(wù)之一是使用戶充分、有效地利用系統(tǒng)資源。采用一個(gè)什么樣的概念,來描述計(jì)算機(jī)程序的執(zhí)行過程和作為資源分配的基本單位才能充分反映操作系統(tǒng)的執(zhí)行并發(fā)、資源共享及用戶隨機(jī)的特點(diǎn)呢?這個(gè)概念就是進(jìn)程。3.1.1程序的并發(fā)執(zhí)行1.程序的順序執(zhí)行程
2、序是一個(gè)在時(shí)間上按嚴(yán)格次序前后相繼的操作序列,是一個(gè)靜態(tài)的概念。程序體現(xiàn)了編程人員要求計(jì)算機(jī)完成所要求功能時(shí)所應(yīng)該采取的順序步驟。一般用戶在編寫程序時(shí)不考慮在自己的程序執(zhí)行過程中還有其他用戶程序存在這一事實(shí)。其執(zhí)行過程可以描述為:RepeatIR←M[pc]pc←pc+1〈Execute(instructioninIR)〉UntilCPUhalt這里IR為指令寄存器,pc為程序計(jì)數(shù)器,M為存儲(chǔ)器。程序的順序執(zhí)行具有如下特點(diǎn):(1)順序性程序順序執(zhí)行時(shí),其執(zhí)行過程可看作一系列嚴(yán)格按程序規(guī)定的狀態(tài)轉(zhuǎn)移過程。(2)封閉性程序執(zhí)行得到的最終結(jié)果由給定的初始
3、條件決定,不受外界因素的影響。(3)可再現(xiàn)性只要輸入的初始條件相同,則無論何時(shí)重復(fù)執(zhí)行該程序都會(huì)得到相同的結(jié)果。2.多道程序系統(tǒng)中程序執(zhí)行環(huán)境的變化在許多情況下,需要計(jì)算機(jī)能夠同時(shí)處理多個(gè)具有獨(dú)立功能的程序。這樣的執(zhí)行環(huán)境具有下述三個(gè)特點(diǎn):(1)獨(dú)立性每道程序都是邏輯上獨(dú)立的,它們之間不存在邏輯上的制約關(guān)系。(2)隨機(jī)性在多道程序環(huán)境下,特別是在多用戶環(huán)境下,程序和數(shù)據(jù)的輸入與執(zhí)行開始時(shí)間都是隨機(jī)的。(3)資源共享資源共享將導(dǎo)致對(duì)進(jìn)程執(zhí)行速度的制約。3.程序的并發(fā)執(zhí)行(1)什么是程序的并發(fā)執(zhí)行程序的并發(fā)執(zhí)行分為兩種:第一種是程序之間的并行。盡管多道
4、程序的并發(fā)執(zhí)行在宏觀上是同時(shí)進(jìn)行的,但在微觀上仍是順序執(zhí)行的;第二種是在程序內(nèi)的幾個(gè)程序段之間的并行,包含著一部分可以同時(shí)執(zhí)行或順序顛倒執(zhí)行的代碼。例如語句:read(a);read(b);它們既可以同時(shí)執(zhí)行,也可顛倒次序執(zhí)行。對(duì)于這樣的語句,同時(shí)執(zhí)行不會(huì)改變順序程序所具有的邏輯性質(zhì)??梢圆捎貌l(fā)執(zhí)行來充分利用系統(tǒng)資源以提高計(jì)算機(jī)的處理能力。程序的并發(fā)執(zhí)行可總結(jié)為:一組在邏輯上互相獨(dú)立的程序或程序段在執(zhí)行過程中,其執(zhí)行時(shí)間在客觀上互相重疊,即一個(gè)程序段的執(zhí)行尚未結(jié)束,另一個(gè)程序段的執(zhí)行已經(jīng)開始的這種執(zhí)行方式。可以將并發(fā)執(zhí)行過程描述為:S0Cobeg
5、inP1;P2;...PnCoendSn1966年Bernstein提出了兩相鄰語句S1,S2可以并發(fā)執(zhí)行的條件:將程序中任一語句Si劃分為兩個(gè)變量的集合R(Si)和W(Si)。其中R(Si)={a1a2…am},aj是語句Si在執(zhí)行期間進(jìn)行讀的變量;W(Si)={b1b2…bn},bj是語句Si在執(zhí)行期間進(jìn)行修改的變量;如果對(duì)于語句S1和S2,有①R(S1)∩W(S2)={∮},②W(S1)∩R(S2)={∮},③W(S1)∩W(S2)={∮}同時(shí)成立,則語句S1和S2是可以并發(fā)執(zhí)行的。(2)程序的并發(fā)執(zhí)行所帶來的影響如果并發(fā)執(zhí)行的各程序段中語句
6、或指令滿足上述Bernstein的三個(gè)條件,則認(rèn)為并發(fā)執(zhí)行不會(huì)對(duì)執(zhí)行結(jié)果的封閉性和可再現(xiàn)性產(chǎn)生影響(證明略)。但在一般情況下,系統(tǒng)要判定并發(fā)執(zhí)行的各程序段是否滿足Bernstein條件是相當(dāng)困難的。從而,如果并發(fā)執(zhí)行的程序段不按照特定的規(guī)則和方法進(jìn)行資源共享和競爭,則其執(zhí)行結(jié)果將不可避免地失去封閉性和可再現(xiàn)性。下面的例子說明了這一點(diǎn)。圖3.1堆棧的取數(shù)和存數(shù)過程例:設(shè)有堆棧S,棧指針top,棧中存放內(nèi)存中相應(yīng)數(shù)據(jù)塊地址(如圖3.1(a))設(shè)有兩個(gè)程序段其中g(shù)etaddr(top)從給定的top所指棧中取出相應(yīng)的內(nèi)存數(shù)據(jù)塊地址reladdr(blk)
7、則將內(nèi)存數(shù)據(jù)塊地址blk放入堆棧S中。proceduregetaddr(top)beginlocalrr←(top)top←top-1return(r)endprocedurereladdr(blk)begintop←top+1(top)←blkend顯然,如果getaddr和reladdr程序段進(jìn)行順序執(zhí)行,其執(zhí)行結(jié)果具有封閉性和可再現(xiàn)性。但如果對(duì)這兩個(gè)程序段采用并發(fā)執(zhí)行,則在單CPU系統(tǒng)中,將有可能出現(xiàn)下述情況:程序段reladdr開始執(zhí)行,當(dāng)reladdr執(zhí)行到top←top+1語句時(shí)(如圖3.1(b)),程序段getaddr也開始執(zhí)行且搶占
8、了處理機(jī)。由于reladdr程序段的執(zhí)行將指針top升高了一格且未放進(jìn)適當(dāng)?shù)臄?shù)據(jù),getaddr的執(zhí)行結(jié)果是失敗的(如圖3