版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2023/9/13太湖學(xué)院信機系12.1.1程序的順序執(zhí)行及特征一、程序執(zhí)行有固定的時序。(P34,圖2-1)二、特征:順序性、封閉性、可再現(xiàn)性2.1進程的基本概念I(lǐng)1C1P1I2C2P2程序段的順序執(zhí)行2023/8/3太湖學(xué)院信機系12.1.1程序的順序執(zhí)行2023/9/13太湖學(xué)院信機系2程序段中語句的順序執(zhí)行S1:a:=x+y;S2:b:=a-5;S3:c:=b+1;S1S2S32023/8/3太湖學(xué)院信機系2程序段中語句的順序執(zhí)行S1:2023/9/13太湖學(xué)院信機系32.1.2前趨圖定義有向無循環(huán)圖表示方式: (1)p1p2(2)={(p1,p2)|p1必須在p2開始前完成},前趨關(guān)系(圖2-2P35)節(jié)點表示:一條語句,一個程序段,一個進程。P1P2P3P4S1S2S32023/8/3太湖學(xué)院信機系32.1.2前趨圖定義有向無循2023/9/13太湖學(xué)院信機系4試畫出下面幾條語句的前趨圖:S1:a=5-x;S2:b=a*x;S3:c=4*x;S4:d=b+c;S5:e=d+3。2023/8/3太湖學(xué)院信機系4試畫出下面幾條語句的前趨圖:2023/9/13太湖學(xué)院信機系52.1.3程序的并發(fā)執(zhí)行一、多個程序的并發(fā)執(zhí)行(可行性分析)I1I2I3I4C1C2C3C4P1P2P3P4t思考:①哪些程序段的執(zhí)行必須是順序的?為什么?②哪些程序段的執(zhí)行是可并行的?為什么?2023/8/3太湖學(xué)院信機系52.1.3程序的并發(fā)執(zhí)行2023/9/13太湖學(xué)院信機系6程序的并發(fā)執(zhí)行(2)二、特征間斷性失去封閉性:主要由共享資源引起不可再現(xiàn)性:P37例,設(shè)N的初值為n。有2個循環(huán)程序A和B,它們共享一個變量N,程序A每執(zhí)行一次時,都要做N:=N+1;B則每次要執(zhí)行Print(N),然后再做N:=0.若程序A,B以不同的速度運行有以下三種不同的結(jié)果:N:=N+1在print(N)和N:=0之前,則N值分別為n+1,n+1,0.N:=N+1在print(N)和N:=0之后,則N值分別為n,0,1.N:=N+1在print(N)和N:=0之間,則N值分別為n,n+1,0.2023/8/3太湖學(xué)院信機系6程序的并發(fā)執(zhí)行(2)二、特征2023/9/13太湖學(xué)院信機系72.1.4進程的特征和狀態(tài)1.進程的特征和定義一、定義:1978年,全國操作系統(tǒng)會議:進程是一個具有一定獨立功能的程序(關(guān)于某個數(shù)據(jù)集合的一次運行活動)對某個數(shù)據(jù)集在處理機上的執(zhí)行過程和分配資源的基本單位。進程是進程實體的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。(P38)系統(tǒng)中能獨立運行并作為資源分配和調(diào)度的基本單位。(P15)*程序是指一組操作序列*數(shù)據(jù)集則是指接受程序規(guī)定操作的一組存儲單元的內(nèi)容2023/8/3太湖學(xué)院信機系72.1.4進程的特征和狀態(tài)12023/9/13太湖學(xué)院信機系82.1.4進程的特征和狀態(tài)(2)二、特征:1.結(jié)構(gòu)特征進程:由程序段、數(shù)據(jù)段及進程控制塊三部分構(gòu)成,總稱“進程映像”。2.動態(tài)性由“創(chuàng)建”而產(chǎn)生,由“調(diào)度”而執(zhí)行;由得不到資源而阻塞(或等待);由撤消而消亡。(而程序是靜態(tài)的)。3.并發(fā)性只有建立了進程,才能并發(fā)執(zhí)行。4.獨立性獨立運行,獨立獲得資源,獨立接受調(diào)度5.異步性(斷斷續(xù)續(xù)向前推進)2023/8/3太湖學(xué)院信機系82.1.4進程的特征和狀態(tài)(2023/9/13太湖學(xué)院信機系9進程與程序的區(qū)別進程程序動態(tài)靜態(tài)暫時永久并發(fā)串行PCB---------多個一個一個多個2023/8/3太湖學(xué)院信機系9進程與程序的區(qū)別進程程序動態(tài)2023/9/13太湖學(xué)院信機系10例題:設(shè)有2個程序,程序P打印工資報表的程序,程序C是計算1000以內(nèi)所有素數(shù)并顯示最后結(jié)果的程序。(1)在不支持進程運行環(huán)境的操作系統(tǒng)下運行。(2)在支持進程運行的操作系統(tǒng)環(huán)境下運行。運行過程如下:①在不支持進程運行的環(huán)境下:依次運行程序P、程序C??梢钥吹较仁谴蛴C不停地打印工資報表,打完后,接著運行程序C,不停地計算,最后顯示計算結(jié)果。②在支持進程運行的環(huán)境下:創(chuàng)建進程P和C,由于兩個進程分別是I/O量較大和計算量較大的進程,故在系統(tǒng)進程調(diào)度的控制下,兩個進程并發(fā)執(zhí)行??梢钥吹酱蛴C不斷地打印工資報表,而處理機不停地計算,最后屏幕顯示計算的結(jié)果。2023/8/3太湖學(xué)院信機系10例題:設(shè)有2個程序,程序P2023/9/13太湖學(xué)院信機系112.1.4進程的特征和狀態(tài)(3)為了描述和控制進程的運行,系統(tǒng)為每一個進程定義了一個數(shù)據(jù)結(jié)構(gòu),即進程控制塊PCB(ProcessControlBlock),系統(tǒng)根據(jù)PCB,感知該進程的存在,故稱PCB是進程存在的標志。通常在一個實際系統(tǒng)中,PCB的總數(shù)時固定的,該數(shù)目規(guī)定了系統(tǒng)所允許擁有的進程數(shù)目,同時將所有的PCB形成一個結(jié)構(gòu)數(shù)組(或稱PCB表),存放在系統(tǒng)的數(shù)據(jù)區(qū)里。一個進程的PCB機構(gòu)全部或部分常駐內(nèi)存。進程的靜態(tài)描述由三部分組成:PCB,有關(guān)程序段,數(shù)據(jù)集。2023/8/3太湖學(xué)院信機系112.1.4進程的特征和狀態(tài)2023/9/13太湖學(xué)院信機系122.1.4進程的特征和狀態(tài)(3)2.進程的三種基本狀態(tài)就緒狀態(tài)、執(zhí)行狀態(tài)、阻塞(等待)狀態(tài)就緒態(tài):等待系統(tǒng)分配處理機以便運行。即獲得了處理機以外的所有資源,一旦由調(diào)度選中得到處理機可以立即執(zhí)行的狀態(tài)。運行態(tài):占有處理機正在執(zhí)行。在單處理機的情況下,該狀態(tài)的進程只有一個。等待態(tài):等待某個事件的完成。進程因等待某事件而放棄處理機進入等待該事件的狀態(tài)。2023/8/3太湖學(xué)院信機系122.1.4進程的特征和狀態(tài)2023/9/13太湖學(xué)院信機系13就緒阻塞運行時間片完(剝奪處理機)進程調(diào)度發(fā)生等待事件等待事件結(jié)束圖2-5進程的三種基本狀態(tài)及其轉(zhuǎn)換創(chuàng)建2023/8/3太湖學(xué)院信機系13就緒阻塞運行時間片完(剝奪2023/9/13太湖學(xué)院信機系142143執(zhí)行態(tài)就緒態(tài)等待態(tài)1、某系統(tǒng)的進程狀態(tài)轉(zhuǎn)換圖如上圖所示,請回答:(1)引起各種狀態(tài)轉(zhuǎn)換的典型事件有哪些?(2)當我們觀察系統(tǒng)中某些進程時,能夠看到某一進程產(chǎn)生的一次狀態(tài)轉(zhuǎn)換能引起另一個進程作一次狀態(tài)轉(zhuǎn)換。在什么情況下,當一個進程發(fā)生轉(zhuǎn)換3時,能立即引起另一進程發(fā)生轉(zhuǎn)換1?試說明是否會發(fā)生這些因果轉(zhuǎn)換:2→1;3→2;4→1。
2023/8/3太湖學(xué)院信機系142143執(zhí)行態(tài)就緒態(tài)等待態(tài)2023/9/13太湖學(xué)院信機系152.1.4進程的特征和狀態(tài)(4)3.掛起狀態(tài)(被換出內(nèi)存的狀態(tài),它所要解決的問題就是某些進程不參與資源競爭,掛起就是靜止)引入原因:終端用戶請求父進程請求(考察、修改、協(xié)調(diào)子進程)負荷調(diào)節(jié)需要(符合過重,把暫時不要的進程掛起)操作系統(tǒng)需要(檢查資源使用情況)進程狀態(tài)的轉(zhuǎn)換活動就緒
靜止就緒活動阻塞
靜止阻塞靜止就緒
活動就緒靜止阻塞
活動阻塞2023/8/3太湖學(xué)院信機系152.1.4進程的特征和狀態(tài)2023/9/13太湖學(xué)院信機系16圖2-6具有掛起狀態(tài)的進程狀態(tài)圖運行活動就緒靜止就緒活動阻塞靜止阻塞激活掛起激活掛起喚醒喚醒掛起請求I/O2023/8/3太湖學(xué)院信機系16圖2-6具有掛起狀態(tài)的進2023/9/13太湖學(xué)院信機系172.1.5進程控制塊1.進程控制塊的作用是進程存在的唯一標志;記錄進程的信息PCB(processcontrolblock)常駐內(nèi)存2.進程控制塊中的信息標識(描述信息)、處理機狀態(tài)(CPU現(xiàn)場保護)、進程調(diào)度信息、進程控制信息進程標識符進程狀態(tài)現(xiàn)場優(yōu)先級阻塞原因程序地址同步機制資源清單家族關(guān)系鏈接指針2023/8/3太湖學(xué)院信機系172.1.5進程控制塊1.進2023/9/13太湖學(xué)院信機系18⑴描述信息(標識)進程名或進程標識符用戶名或用戶標識符(指示擁有該進程的用戶)家族關(guān)系(父進程和子進程的標識符)⑵調(diào)度信息進程的當前狀態(tài)優(yōu)先級調(diào)度所需的其他信息事件(執(zhí)行-等待)2023/8/3太湖學(xué)院信機系18⑴描述信息(標識)2023/9/13太湖學(xué)院信機系19⑶控制信息程序和數(shù)據(jù)的地址進程同步和通信機制資源清單鏈接指針(同一隊列的下一個PCB的首地址)⑷處理機狀態(tài)(CPU現(xiàn)場保護)通用RPC指令計數(shù)器程序狀態(tài)字PSW用戶棧指針2023/8/3太湖學(xué)院信機系19⑶控制信息2023/9/13太湖學(xué)院信機系20CPU現(xiàn)場保護信息(進程上下文)當處理機被中斷時,各種Register的內(nèi)容都必須保存在被中斷進程的PCB中,以便在改進程重新執(zhí)行時,能從斷點繼續(xù)執(zhí)行。(1)通用R(用戶可視寄存器)8-32個(在RISC結(jié)構(gòu)中,可超過100)(2)PC(next)(3)PSW:含狀態(tài)信息(條件碼的執(zhí)行方式,中斷屏蔽標志)(4)用戶棧指針:每個用戶進程有一個或若干個與之相關(guān)的系統(tǒng)棧,用戶存放過程和系統(tǒng)調(diào)用參數(shù)和調(diào)用地址。由于PCB中包含較多的信息(占幾百-幾千Byte),在有的系統(tǒng)中只含最常用部分(標識、進程狀態(tài)信息、用于調(diào)度的信息)常駐內(nèi)存,其它部分則存在于外存之中,待該進程將要執(zhí)行時,與其它數(shù)據(jù)一起裝入內(nèi)存。2023/8/3太湖學(xué)院信機系20CPU現(xiàn)場保護信息(進程上2023/9/13太湖學(xué)院信機系21進程上下文進程上下文實際上是進程執(zhí)行活動全過程的靜態(tài)描述。進程的上下文是其相應(yīng)的程序地址空間的內(nèi)容,硬件R的內(nèi)容以及與該進程有關(guān)的核心數(shù)據(jù)結(jié)構(gòu)組成的。具體包括:計算機系統(tǒng)中與該進程有關(guān)的各種R值,程序段經(jīng)過編譯,連接后形成的機器指令代碼段(text)數(shù)據(jù)段及各種堆棧的值和PCB塊。2023/8/3太湖學(xué)院信機系21進程上下文進程上下文實際上2023/9/13太湖學(xué)院信機系223.PCB的組織方式在一個系統(tǒng)中,通??蓳碛袛?shù)十個、數(shù)百個,乃至數(shù)千個PCB:為能對它們進行有效的管理,應(yīng)當用適當?shù)姆绞綄⑺鼈兘M織起來。目前常用的組織方式有兩種:鏈接方式,索引方式。系統(tǒng)中進程隊列分類:就緒隊列、等待隊列、運行隊列。就緒隊列:整個系統(tǒng)一個。等待隊列:每個等待事件一個。運行隊列:單機系統(tǒng)中整個系統(tǒng)一個。2023/8/3太湖學(xué)院信機系223.PCB的組織方式2023/9/13太湖學(xué)院信機系232.1.5進程控制塊(2)鏈接方式把具有相同狀態(tài)的PCB,用其中的鏈接字,鏈接成一個隊列。執(zhí)行指針就緒隊列指針阻塞隊列指針空閑隊列指針PCB14PCB23PCB30PCB48PCB5PCB67PCB79PCB80PCB911多個2023/8/3太湖學(xué)院信機系232.1.5進程控制塊(2)2023/9/13太湖學(xué)院信機系242.1.5進程控制塊(3)索引方式系統(tǒng)根據(jù)所有進程的狀態(tài),建立幾張索引表,例如,就緒索引表,阻塞索引表等,并把各索引表在內(nèi)存的首地址記錄于內(nèi)存中的一些專用庫文件中,在內(nèi)存索引表的表目中,記錄具有相應(yīng)狀態(tài)的PCB在PCB表中的地址。2023/8/3太湖學(xué)院信機系242.1.5進程控制塊(3)2023/9/13太湖學(xué)院信機系25PCB1PCB2PCB3PCB4PCB5PCB6PCB7執(zhí)行指針就緒表指針阻塞表指針就緒索引表阻塞索引表2023/8/3太湖學(xué)院信機系25PCB1PCB2PCB3P2023/9/13太湖學(xué)院信機系262.2進程控制為了防止操作系統(tǒng)及關(guān)鍵數(shù)據(jù)如PCB等,受到用戶程序有意或無意的破壞,通常將處理機的執(zhí)行狀態(tài)分成系統(tǒng)態(tài)和用戶態(tài)兩種:(1)系統(tǒng)態(tài),又稱核心態(tài)。它具有較高的特權(quán),能執(zhí)行一切指令,訪問所有寄存器和存儲區(qū)。(2)用戶態(tài),具有較低特權(quán)的執(zhí)行狀態(tài),它只能執(zhí)行規(guī)定的指令,訪問指定的寄存器和存儲區(qū)。OS內(nèi)核通常是運行在系統(tǒng)態(tài)的,而進程控制是由OS內(nèi)核實現(xiàn)的。OS內(nèi)核:運行在系統(tǒng)態(tài)的,包括對進程操作和控制的最基本的原語和數(shù)據(jù)結(jié)構(gòu)。2023/8/3太湖學(xué)院信機系262.2進程控制為了防止2023/9/13太湖學(xué)院信機系27概念進程控制:就是系統(tǒng)使用一些具有特定功能的程序段來創(chuàng)建、撤銷進程以及完成各進程狀態(tài)間的轉(zhuǎn)換,從而達到多進程高效率并發(fā)執(zhí)行和協(xié)調(diào),實現(xiàn)資源共享的目的。原語(AtomicOperation):系統(tǒng)態(tài)下執(zhí)行的某些具有特定功能的程序段稱為原語。機器指令級:不可分割,不允許初始化功能級:不允許并發(fā)執(zhí)行(原語本身由若干條指令組成,要么全做,要么全不做)在OS中,大都把進程控制用程序段做成原語。比如:創(chuàng)建原語、撤消原語、阻塞原語、喚醒原語、掛起原語、激活原語2023/8/3太湖學(xué)院信機系27概念進程控制:2023/9/13太湖學(xué)院信機系282.2.1進程的創(chuàng)建一、進程樹(圖):描述了進程的家族關(guān)系子進程可繼承父進程的資源,撤消時應(yīng)歸還給父進程,父進程在撤消時也應(yīng)該撤消全部子進程。(遞歸)ABEKDFGHMLJIC2023/8/3太湖學(xué)院信機系282.2.1進程的創(chuàng)建一2023/9/13太湖學(xué)院信機系29二、引起創(chuàng)建進程的事件:1.用戶登錄:為終端用戶建立一進程2.作業(yè)調(diào)度:(不是進程調(diào)度)為被調(diào)度的作業(yè)建立進程3.提供服務(wù):如要打印時建立打印進程4.應(yīng)用請求:由應(yīng)用程序建立多個進程2023/8/3太湖學(xué)院信機系292023/9/13太湖學(xué)院信機系302.2.1進程的創(chuàng)建(2)三、進程的創(chuàng)建:(creat原語)1.申請空白PCB(一個系統(tǒng)的PCB是有限的)2.為新進程分配資源(不同于一般的分配,PCB-LIST在一個特殊區(qū)域)3.初始化PCB4.將新進程插入就緒隊列。2023/8/3太湖學(xué)院信機系302.2.1進程的創(chuàng)建(2023/9/13太湖學(xué)院信機系31創(chuàng)建原語Procedurecreate(n,s0,P0,m0,R0,acc)begini:=getinternalname(n);獲得內(nèi)部名i.id:=n;填外部名i.priority:=P0;填優(yōu)先級表i.CPUstate:=s0;填CPU初始狀態(tài)i.mainstore:=m0;填寫主存區(qū)域i.resources:=R0;填寫資源清單i.status:=readys;填寫進程狀態(tài)j:=EP;獲取調(diào)用者內(nèi)部標識i.parent:=j;填入i進程的父進程jgeny:=φ;i的家族指針為空geny:=i;把i填入其父進程PCB的家族指針處i.state:=RQ;i所在狀態(tài)隊列首指針insert(RQ,i);把i進程插入RQ隊尾end2023/8/3太湖學(xué)院信機系31創(chuàng)建原語Procedure2023/9/13太湖學(xué)院信機系322.2.2進程的撤消(終止)(一)、引起進程撤消(終止)的事件1.正常結(jié)束:如Halt、logsoff2.異常結(jié)束:如Protecterror、overtime等3.外界干預(yù):a.系統(tǒng)或操作員kill進程;b.父進程終止;c.父進程請求。(二)、進程的終止過程(1)檢查進程狀態(tài);(2)運行態(tài)――>終止,且置調(diào)度標志為真。(3)有無子孫需終止。(4)歸還資源給其父進程或系統(tǒng)。(5)從PCB隊列中移出PCB。2023/8/3太湖學(xué)院信機系322.2.2進程的撤消(33撤消原語Proceduredestroy(n)beginsched:=false;i:=n;//獲取進程內(nèi)部名;
kill(i);
如果sched為真,則轉(zhuǎn)調(diào)度程序,否則繼續(xù);end33撤消原語Proceduredestroy(n)2023/9/13太湖學(xué)院信機系34Procedurekill(i)beginifi.status:=“Running”thenbeginstop(i);sched:=trueend;remove(i.state,i);將被撤消進程i從i.state所指示的隊列中移去foralls∈genydokill(s);forallr∈(i.mainstore∪i.resources)doifowend(r)theninsert(r.semaphore,r.data);屬于父進程資源歸還且插入父進程資源清單forallR∈createdresources(i)doremovedescriptor(R);撤消自己的清單資源歸還系統(tǒng)removeprocesscontrolblock;end2023/8/3太湖學(xué)院信機系34Procedurekil2023/9/13太湖學(xué)院信機系352.2.3進程的阻塞與喚醒(一)、引起進程阻塞和喚醒的事件1.請求系統(tǒng)服務(wù)而得不到滿足時,如問系統(tǒng)請求打印。2.啟動某種操作而需同步時:如該操作和請求該操作的進程需同步運行(即非異步操作)。3.新數(shù)據(jù)尚未到達:如進程A寫,進程B讀,則A未寫完B不能讀。4.無新工作可做。(二)、進程阻塞過程:是進程自身的一種主動行為a.調(diào)用block原語b.停止執(zhí)行,修改PCB入阻塞隊列(一個或多個),并轉(zhuǎn)調(diào)度。2023/8/3太湖學(xué)院信機系352.2.3進程的阻塞與2023/9/13太湖學(xué)院信機系36Procedureblockbegini:=EP;從執(zhí)行進程的指針EP獲得調(diào)用者內(nèi)部標識符i;stop(i);i.status:=“blocka”;i.state:=WQ(r);填寫阻塞隊列首指針insert(WQ(r),i);把i插入WQ隊尾;scheduler;轉(zhuǎn)調(diào)度程序end2023/8/3太湖學(xué)院信機系36Procedureblo2023/9/13太湖學(xué)院信機系372.2.3進程的阻塞與喚醒(2)(三)、喚醒過程其它相關(guān)進程完成。wakeup原語將目標進程移出等待隊列,修改PCB,移入就緒隊列可見,有block原語,在其它進程中就應(yīng)有wakeup原語。2023/8/3太湖學(xué)院信機系372.2.3進程的阻塞與2023/9/13太湖學(xué)院信機系38Procedurewakeup(n)begini:=獲取n進程的內(nèi)部名;remove(WQ(r),i);把i進程從等待r而受阻塞隊列中摘除;i.status:=“就緒”;置i進程為“就緒”狀態(tài)i.state:=RQ;把i進程插入就緒隊列;insert(RQ,i);continue;end2023/8/3太湖學(xué)院信機系38Procedurewak2023/9/13太湖學(xué)院信機系392.2.4進程的掛起與激活
一、進程的掛起過程由進程自己或其父進程調(diào)suspend原語完成,將該進程PCB移到指定區(qū)域,注意狀態(tài)的改變,有可能要重新調(diào)度。掛起方式:把掛起原語調(diào)用者本身掛起,即自己掛起自己掛起某個標識符的進程將某個指定標識符的進程及其全部或部分子孫掛起用意保存n進程的PCB副本的內(nèi)存區(qū),以備參考2023/8/3太湖學(xué)院信機系392.2.4進程的掛起與2023/9/13太湖學(xué)院信機系40Proceduresuspend(n,a)begini:=getinternalname(n);s:=i.status;ifs=“Running”thenstop(i);a:=copyPCB(i);i.status:=ifs=“blocka”then“blocks”else“readys”;ifs=“Running”thenschedulerelsecontinue;end2023/8/3太湖學(xué)院信機系40Proceduresu2023/9/13太湖學(xué)院信機系41二、進程的激活過程active原語(如在外存,調(diào)入內(nèi)存,改變狀態(tài),根據(jù)情況看是否調(diào)度,如搶先或非搶先)。阻塞、喚醒一般由OS實現(xiàn),而掛起與激活可由用戶干預(yù)。激活方式:激活指定標識符的Process激活某Process及其子孫當激活后的Process處于“readys”狀態(tài)時,將引起新調(diào)度,這種情況一般時當系統(tǒng)中無可調(diào)度的就緒進程時采用
2023/8/3太湖學(xué)院信機系41二、進程的激活過程2023/9/13太湖學(xué)院信機系42Procedureactivename(n)begini:=getinternalname(n);ifi.status=“readys”then“readya”else“blocka”;ifi.status=“readya”thenschedulerelsecontinue;end2023/8/3太湖學(xué)院信機系42Procedureact2023/9/13太湖學(xué)院信機系432.3進程間的相互作用進程的互斥進程的同步信號量及P、V操作。(解決進程同步互斥問題)2023/8/3太湖學(xué)院信機系432.3進程間的相互作用2023/9/13太湖學(xué)院信機系442.3.1進程間的聯(lián)系
相交進程:指多個并發(fā)進程在邏輯上的某種聯(lián)系無關(guān)進程:在邏輯上無任何聯(lián)系的進程直接作用和間接作用直接作用:進程間的相互聯(lián)系是有意識的安排的,進程間密切聯(lián)系。直接作用只發(fā)生在相交進程間間接作用:進程間要通過某種中介發(fā)生聯(lián)系,是無意識安排的,可發(fā)生在相交進程之間,也可以發(fā)生在無關(guān)進程之間。2023/8/3太湖學(xué)院信機系442.3.1進程間的聯(lián)系 相2023/9/13太湖學(xué)院信機系45進程間的關(guān)系表相互感知的程度交互關(guān)系一個進程對其他進程的影響相互不感知(完全不了解其他進程的存在)競爭(competition)一個進程的操作對其他進程的結(jié)果無影響間接感知(雙方都與第三方交互:如共享資源)通過共享進行協(xié)作一個進程的結(jié)果依賴于從其他進程獲得的信息直接感知(雙方直接交互:如通信)通過通信進行協(xié)作(大批量的數(shù)據(jù)傳遞)一個進程的結(jié)果依賴于從其他進程獲得的信息2023/8/3太湖學(xué)院信機系45進程間的關(guān)系表相互感知的程2023/9/13太湖學(xué)院信機系46進程同步(直接作用)進程的同步:synchronism指系統(tǒng)中多個進程中發(fā)生的事件存在某種時序關(guān)系,需要相互合作,共同完成一次任務(wù),具體說,一個進程執(zhí)行到某一點時,要求另一伙伴進程為它提供消息,在未獲得消息之前,該進程處于等待狀態(tài),獲得消息后被喚醒進入就緒狀態(tài)。2023/8/3太湖學(xué)院信機系46進程同步(直接作用)進程的2023/9/13太湖學(xué)院信機系47司機P1While(true){啟動汽車;正常行駛;到站停車}售票員P2While(true){關(guān)門;售票;開門;}2023/8/3太湖學(xué)院信機系47司機P1售票員P22023/9/13太湖學(xué)院信機系48進程的互斥(間接作用)進程的互斥:mutualexclusion由于各進程要求共享資源,而有些資源需要互斥使用,因此進程間競爭使用這些資源,進程的這種關(guān)系稱為進程的互斥。臨界資源:criticalresource系統(tǒng)中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源或互斥資源或共享變量。與時間有關(guān)的錯誤2023/8/3太湖學(xué)院信機系48進程的互斥(間接作用)進程2023/9/13太湖學(xué)院信機系49臨界區(qū)(互斥區(qū)):criticalsection一個程序片段的集合,這些程序片段分散在不同的進程中,對某個共享的數(shù)據(jù)結(jié)構(gòu)(共享資源)進行操作。在進程中,涉及到臨界資源的程序片段叫臨界區(qū),多個進程的臨界區(qū)稱為相關(guān)臨界區(qū)。2023/8/3太湖學(xué)院信機系49臨界區(qū)(互斥區(qū)):crit2023/9/13太湖學(xué)院信機系50進程的互斥作用(間接作用)2023/8/3太湖學(xué)院信機系50進程的互斥作用(間接作用)2023/9/13太湖學(xué)院信機系512023/8/3太湖學(xué)院信機系512023/9/13太湖學(xué)院信機系52使用臨界區(qū)的原則:有空讓進無空等待多中選一有限等待讓權(quán)等待2023/8/3太湖學(xué)院信機系52使用臨界區(qū)的原則:2023/9/13太湖學(xué)院信機系53前提:任何進程無權(quán)停止其它進程的運行進程之間相對運行速度無硬性規(guī)定進程互斥的解決有兩種做法:由競爭各方平等協(xié)商引入進程管理者由管理者來協(xié)調(diào)競爭各方對互斥資源的使用具體的實現(xiàn)方法:硬件(當一個進程進入臨界區(qū)就屏蔽所有中斷,成本高,并行程度會降低)軟件(用編程解決,但常常忙等待)2023/8/3太湖學(xué)院信機系53前提:任何進程無權(quán)停止其它2023/9/13太湖學(xué)院信機系54軟件方法1free:表示臨界區(qū)的標志
true:有進程在臨界區(qū)
false:無進程在臨界區(qū)(初值)
…while(free);free=true;
臨界區(qū)
free=false;2023/8/3太湖學(xué)院信機系54軟件方法1free:表示2023/9/13太湖學(xué)院信機系55軟件方法2turn:trueP進程進入臨界區(qū)
falseQ進程進入臨界區(qū)
…P:while(notturn);
turn=false;Q:while(turn);
turn=true;臨界區(qū)臨界區(qū)①交替使用②某進程失敗2023/8/3太湖學(xué)院信機系55軟件方法2turn:t2023/9/13太湖學(xué)院信機系56例:進程0…while(flag[1]);flag[0]:=true;flag[0]:=false;進程1…while(flag[0]);flag[1]:=true;flag[1]:=false;臨界區(qū)臨界區(qū)存在問題:可能有兩個進程同時進入臨界區(qū),達不到互斥的效果2023/8/3太湖學(xué)院信機系56例:進程02023/9/13太湖學(xué)院信機系57改進后:進程0…flag[0]:=true;while(flag[1]);flag[0]:=false;進程1…flag[1]:=true;while(flag[0]);flag[1]:=false;臨界區(qū)臨界區(qū)存在問題:造成謙讓,兩個進程同時處于等待狀態(tài)2023/8/3太湖學(xué)院信機系57改進后:進程02023/9/13太湖學(xué)院信機系58繼續(xù)改進:進程0…flag[0]:=true;while(flag[1])beginflag[0]:=false;
等會;
flag[0]:=true;endflag[0]:=false;進程1…flag[1]:=true;while(flag[0])beginflag[1]:=false;
等會;
flag[1]:=true;endflag[1]:=false;臨界區(qū)臨界區(qū)2023/8/3太湖學(xué)院信機系58繼續(xù)改進:進程02023/9/13太湖學(xué)院信機系59軟件方法3的形成:P進程pturn=true;while(qturn);pturn=false;…Q進程qturn=true;while(pturn);qturn=false;…pturn,qturn:初值為falseP進入臨界區(qū)的條件:pturn∧notqturnQ進入臨界區(qū)的條件:notpturn∧qturn臨界區(qū)臨界區(qū)存在問題:可能造成死鎖2023/8/3太湖學(xué)院信機系59軟件方法3的形成:P進程2023/9/13太湖學(xué)院信機系60軟件方法4(Dekker算法)進程P:pturn:=true;while(qturn){if(turn==2) { pturn:=false;while(turn==2); pturn:=true; }}
turn:=2;pturn:=false…進程Q:qturn:=true;while(pturn){if(turn==1) { qturn:=false;while(turn==1); qturn:=true; }}
turn:=1;qturn:=false…在方法3的基礎(chǔ)上引入turn枚舉類型,初值可以任意設(shè)置。在這里:turn==1(P進),turn==2(Q進)臨界區(qū)臨界區(qū)2023/8/3太湖學(xué)院信機系60軟件方法4(Dekker2023/9/13太湖學(xué)院信機系61軟件算法有其缺點:忙等待(用循環(huán)在不停地等待)實現(xiàn)過于復(fù)雜,需要較高的編程技巧2023/8/3太湖學(xué)院信機系61軟件算法有其缺點:忙等待(2023/9/13太湖學(xué)院信機系62改進的Dekker算法(Peterson算法)P:pturn:=true;turn:=2;while(qturn&&turn==2);
pturn:=false;Q:qturn:=true;turn:=1;while(pturn&&turn==1);
qturn:=false;臨界區(qū)臨界區(qū)2023/8/3太湖學(xué)院信機系62改進的Dekker算法2023/9/13太湖學(xué)院信機系632.3.2進程的同步機制信號量及P.V操作(解決進程同步)同步機制:信號量及P.V操作、管程;條件臨界域;路徑表達式等(用于集中式系統(tǒng)中)會合;通信順序進程;分布進程;遠程過程調(diào)用等;(適用于分布式系統(tǒng)中)2023/8/3太湖學(xué)院信機系632.3.2進程的同步機制信2023/9/13太湖學(xué)院信機系64同步機制滿足的基本要求:描述能力可以實現(xiàn)效率高使用方便2023/8/3太湖學(xué)院信機系64同步機制滿足的基本要求:2023/9/13太湖學(xué)院信機系65信號量:semaphore是一個數(shù)據(jù)結(jié)構(gòu)定義如下:structsemaphore{intvalue;pointer_PCBqueue;}信號量說明:semaphores;2023/8/3太湖學(xué)院信機系65信號量:semaphore2023/9/13太湖學(xué)院信機系66信號量機制的提出者:偉大的計算機科學(xué)家Dijkstra,主要貢獻:提出“goto有害論”;提出信號量和PV原語;解決了有趣的“哲學(xué)家聚餐”問題;最短路徑算法(SPF)的創(chuàng)造者;第一個Algol60編譯器的設(shè)計者和實現(xiàn)者;……與D.E.Knuth并稱為我們這個時代最偉大的計算機科學(xué)家的人
2023/8/3太湖學(xué)院信機系66信號量機制的提出者:偉大的2023/9/13太湖學(xué)院信機系672.3.3信號量機制1.整型信號量是一個整型量,通過2個原子操作wait(s)和signal(s)來訪問。Wait(s):whiles<=0dono-op;
s:=s-1;Signal(s): s:=s+1;P、V操作(兩個原語)2023/8/3太湖學(xué)院信機系672.3.3信號量機制12023/9/13太湖學(xué)院信機系68關(guān)于信號量的問題信號量:互斥:wait與signal在同一個進程中同步:wait與signal在不同的進程中信號量的物理意義:S>0:表示可用資源的個數(shù)S=0:表示無資源,無等待進程S<0:∣S∣表示等待隊列中進程個數(shù)2023/8/3太湖學(xué)院信機系68關(guān)于信號量的問題信號量:2023/9/13太湖學(xué)院信機系692.記錄型信號量wait(S){s.value=s.value--;if(s.value<0){該進程狀態(tài)置為等待狀態(tài)將該進程的PCB插入相應(yīng)的等待隊列末尾s.value}}2023/8/3太湖學(xué)院信機系692.記錄型信號量wait2023/9/13太湖學(xué)院信機系70signal(S){s.value=s.value++;if(s.value<=0){
喚醒相應(yīng)等待隊列s.value中等待的一個進程改變其狀態(tài)為就緒態(tài)并將其插入就緒隊列
}}2023/8/3太湖學(xué)院信機系70signal(S)2023/9/13太湖學(xué)院信機系71P.V操作為原語操作原語:primitiveoratomicaction是由若干多機器指令構(gòu)成的完成某種特定功能的一段程序,具有不可分割性;即原語的執(zhí)行必須是連續(xù)的,在執(zhí)行過程中不允許被中斷2023/8/3太湖學(xué)院信機系71P.V操作為原語操作原語:2023/9/13太湖學(xué)院信機系72信號量的使用必須置一次且只能置一次初值初值不能為負數(shù)只能執(zhí)行P.V操作2023/8/3太湖學(xué)院信機系72信號量的使用必須置一次且只2023/9/13太湖學(xué)院信機系73用P.V操作解決進程間的互斥問題wait(mutex)signal(mutex)互斥區(qū)P1P2P3wait(mutex)signal(mutex)互斥區(qū)wait(mutex)signal(mutex)互斥區(qū)2023/8/3太湖學(xué)院信機系73用P.V操作解決進程間的互2023/9/13太湖學(xué)院信機系74互斥問題進程A………Wait(s)打印Signal(s)……【例】設(shè)有一臺打印機初值s:=1進程B………Wait(s)打印Signal(s)……2023/8/3太湖學(xué)院信機系74互斥問題進程A【例】設(shè)有一2023/9/13太湖學(xué)院信機系75生產(chǎn)者-消費者問題Varn,integer;typeitem=…;varbuffer:array[0,1,…,n-1]ofitem;in,out:0,1,…,n-1;counter:0,1,…,n;2023/8/3太湖學(xué)院信機系75生產(chǎn)者-消費者問題Var2023/9/13太湖學(xué)院信機系76生產(chǎn)者-消費者問題producer:repeat… produceaniteminnextp;…whilecounter=ndono-op;buffer[in]:=nextp;in:=(in+1)modn;counter:=counter+1;untilfalse;consumer:repeatwhilecounter=0dono-op;nextc:=buffer[out];out:=(out+1)modn;counter:=counter-1;consumertheiteminnextc;untilfalse;2023/8/3太湖學(xué)院信機系76生產(chǎn)者-消費者問題prod2023/9/13太湖學(xué)院信機系77生產(chǎn)者-消費者問題(2)設(shè)counter的初值為5register1:=counter;register2:=counter;register1:=register1+1;register2:=register2-1;counter:=register1;counter:=register2;2023/8/3太湖學(xué)院信機系77生產(chǎn)者-消費者問題(2)設(shè)2023/9/13太湖學(xué)院信機系78register1:=counter; (register1:=5)register1:=register1+1; (register1:=6)register2:=counter; (register2:=5)register2:=register2-1; (register2:=4)counter:=register1; (counter:=6)counter:=register2; (counter:=4)解決方法:變量counter應(yīng)設(shè)置成臨界資源2023/8/3太湖學(xué)院信機系78register1:=co2023/9/13太湖學(xué)院信機系79同步問題【例】矩陣運算:A+B考慮問題:資源等待為其他資源著想2023/8/3太湖學(xué)院信機系79同步問題【例】矩陣運算:A2023/9/13太湖學(xué)院信機系80經(jīng)典的生產(chǎn)者消費者問題(關(guān)于同步的問題)倉庫生產(chǎn)者消費者一次只放一個產(chǎn)品同步問題:P進程不能往“滿”的緩沖區(qū)中放產(chǎn)品,設(shè)置信號量為s1,初值為1Q進程不能從“空”的緩沖區(qū)中取產(chǎn)品,設(shè)置信號量為s2,初值為02023/8/3太湖學(xué)院信機系80經(jīng)典的生產(chǎn)者消費者問題(關(guān)2023/9/13太湖學(xué)院信機系81P:生產(chǎn)者while(true){生產(chǎn)一個產(chǎn)品;Wait(s1);送產(chǎn)品到倉庫;Signal(s2)}Q:消費者while(true){Wait(s2);從倉庫中取產(chǎn)品;Signal(s1);消費產(chǎn)品}倉庫只能存放一個產(chǎn)品:2023/8/3太湖學(xué)院信機系81P:生產(chǎn)者Q:消費者倉庫只2023/9/13太湖學(xué)院信機系82擴充:多個緩沖區(qū)的生產(chǎn)者消費者問題P:i=0;while(true){生產(chǎn)產(chǎn)品;Wait(s1);往buffer[i]放產(chǎn)品;Signal(s2);i=(i+1)%n;}Q:j=0;while(true){Wait(s2);從buffer[j]取產(chǎn)品;Signal(s1);消費產(chǎn)品j=(j+1)%n;}初值:s1=n,s2=02023/8/3太湖學(xué)院信機系82擴充:多個緩沖區(qū)的生產(chǎn)者消2023/9/13太湖學(xué)院信機系83小結(jié):生產(chǎn)者消費者問題的分類:單一資源:s1=1,s2=0有限資源:s1=n,s2=0無限資源:2023/8/3太湖學(xué)院信機系83小結(jié):生產(chǎn)者消費者問題的分2023/9/13太湖學(xué)院信機系84∞緩沖區(qū)的生產(chǎn)者消費者問題P:i=0;while(true){生產(chǎn)產(chǎn)品;Wait(s1);往buffer[i]放產(chǎn)品;Signal(s2);i=(i+1)%n;}Q:j=0;while(true){Wait(s2);從buffer[j]取產(chǎn)品;Signal(s1);消費產(chǎn)品j=(j+1)%n;}初值:s2=02023/8/3太湖學(xué)院信機系84∞緩沖區(qū)的生產(chǎn)者消費者問題2023/9/13太湖學(xué)院信機系85n個緩沖區(qū),m個生產(chǎn)者和k個消費者(臨界資源的使用)P:i=0;while(true){生產(chǎn)產(chǎn)品;Wait(s1);Wait(mutex);往buffer[i]放產(chǎn)品;Signal(mutex);Signal(s2);i=(i+1)%n;}Q:j=0;while(true){Wait(s2);Wait(mutex)從buffer[j]取產(chǎn)品;Signal(mutex);Signal(s1);消費產(chǎn)品j=(j+1)%n;}信號量:s1=ns2=0mutex=12023/8/3太湖學(xué)院信機系85n個緩沖區(qū),m個生產(chǎn)者和k2023/9/13太湖學(xué)院信機系86若在Q中顛倒wait操作的順序P:i=0;while(true){生產(chǎn)產(chǎn)品;Wait(s1);Wait(mutex);往buffer[i]放產(chǎn)品;Signal(mutex);Signal(s2);i=(i+1)%n;}Q:j=0;while(true){Wait(mutex);Wait(s2);從buffer[j]取產(chǎn)品;Signal(mutex);Signal(s1);消費產(chǎn)品j=(j+1)%n;}信號量:S1=nS2=0mutex=12023/8/3太湖學(xué)院信機系86若在Q中顛倒wait操作的2023/9/13太湖學(xué)院信機系87(擴展)生產(chǎn)者與消費者應(yīng)針對不同的臨界區(qū)進行操作P:i=0;while(true){生產(chǎn)產(chǎn)品;Wait(s1);Wait(mutex1);往buffer[i]放產(chǎn)品;Signal(mutex1);Signal(s2);i=(i+1)%n;}Q:j=0;while(true){Wait(s2);Wait(mutex2)從buffer[j]取產(chǎn)品;Signal(mutex2);Signal(s1);消費產(chǎn)品j=(j+1)%n;}信號量:S1=nS2=0Mutex1=1Mutex2=12023/8/3太湖學(xué)院信機系87(擴展)生產(chǎn)者與消費者應(yīng)針2023/9/13太湖學(xué)院信機系88對PV操作的討論1)信號量的物理意義:S>0:表示可用資源的個數(shù)S=0:表示無資源,無等待進程S<0:∣S∣表示等待隊列中進程個數(shù)Wait(s):表示申請一個資源Signal(s):表示釋放一個資源信號量的初值應(yīng)該大于等于02023/8/3太湖學(xué)院信機系88對PV操作的討論1)信號量2023/9/13太湖學(xué)院信機系892)p、v操作必須成對出現(xiàn),有一個p操作就一定有一個v操作 當為互斥操作時,它們處于同一進程 當為同步操作時,則不在同一進程中出現(xiàn)wait(s1)和wait(s2)兩個操作在同進程中?
wait操作的順序至關(guān)重要,一個同步wait操作與一個互斥wait操作在一起時,同步wait操作在互斥wait操作之前,而兩個signal操作的順序沒有要求。2023/8/3太湖學(xué)院信機系892)p、v操作必須成對出現(xiàn)2023/9/13太湖學(xué)院信機系903)pv操作的優(yōu)缺點優(yōu)點:簡單,而且表達能力強(可以解決任何同步互斥問題)缺點:不夠安全,pv操作使用不當會出現(xiàn)死鎖,遇到復(fù)雜的同步互斥問題時實現(xiàn)復(fù)雜。2023/8/3太湖學(xué)院信機系903)pv操作的優(yōu)缺點2023/9/13太湖學(xué)院信機系91AND型信號量AND型信號量是指同時需要多種資源且每種占用一個的信號量操作AND型信號量的基本思想:在一個原語中申請整段代碼需要的多個臨界資源,要么全部分配給它,要么一個都不分配AND型信號量P原語為SwaitAND型信號量V原語為Ssignal2023/8/3太湖學(xué)院信機系91AND型信號量AND型信號2023/9/13太湖學(xué)院信機系92Swait(s1,s2,…,sn){while(true){if(s1>=1&&s2>=1&&…&&sn>=1){//滿足資源要求時的處理for(i=1;i<=n;i++)si=si-1;//注:與wait的處理不同這里在確信可滿足資源需求時才進行減1操作break;}else{//某些資源不夠時的處理調(diào)用進程進入第一個小于1信號量的等待隊列sj.queue;阻塞調(diào)用進程;}}}2023/8/3太湖學(xué)院信機系92Swait(s1,s2,…2023/9/13太湖學(xué)院信機系93Ssignal(s1,s2,…,sn){For(i=1;i<=n;i++){si=si+1;//釋放所有占用的資源For(在si.queue中等待的每一個進程p)//檢查每種資源的等待隊列的所有進程{從等待隊列si.queue中取出進程p;if(判斷進程p是否通過Swait中的測試)//這里要進行重新判斷{//通過檢查(資源夠用時)的處理;進程p進入就緒隊列}else{//未通過檢查(資源不夠用時)的處理;進程p進入等待隊列;}}}}2023/8/3太湖學(xué)院信機系93Ssignal(s1,s22023/9/13太湖學(xué)院信機系94信號量集信號量集是指同時需要多種資源,每種占用的數(shù)目不同且可分配的資源還存在一個臨界值時的信號量處理。信號量集的基本思路:在AND型信號量的基礎(chǔ)上進行擴充,在一次原語操作完成所有的資源申請。進程對信號量si的測試值為ti(表示信號量的判斷條件,要求si>=ti;即當資源數(shù)量低于ti時,便不予分配)占用值為di(表示資源的申請量,即si=si-di)對應(yīng)的pv原語格式為:Swait(s1,t1,d1;…;sn,tn,dn);Ssignal(s1,d1;…sn,dn);2023/8/3太湖學(xué)院信機系94信號量集信號量集是指同時需2023/9/13太湖學(xué)院信機系95信號量集可以用于各種情況的資源分配和回收,幾種特殊情況:Swait(s,d,d):表示每次申請d個資源,當少于d個時,便不分配Swait(s,1,1):s>1表示記錄型信號量,s=1表示互斥信號量Swait(s,1,0):可作為一個可控開關(guān)(當s>=1時,允許多個進程進入特殊區(qū)域;當s=0時,禁止任何進程進入臨界區(qū))不占用資源2023/8/3太湖學(xué)院信機系952023/9/13太湖學(xué)院信機系96第二類經(jīng)典問題:讀者寫者問題有兩組并發(fā)進程:讀者和寫者,共享一組數(shù)據(jù)區(qū)要求:允許多個讀者同時執(zhí)行讀操作不允許讀者、寫者同時操作(讀寫互斥)不允許多個寫者同時操作(只能一個寫)2023/8/3太湖學(xué)院信機系96第二類經(jīng)典問題:讀者寫者問2023/9/13太湖學(xué)院信機系97分析:第一類情況:讀者優(yōu)先如果讀者來:1)無讀者寫者,新讀者可以讀2)有寫者等,但有其他讀者正在讀,則新讀者也可以讀3)有寫者寫,新讀者等如果寫者來:1)無讀者,新寫者可以寫2)有讀者,新寫者等待3)有其他寫者,新寫者等待2023/8/3太湖學(xué)院信機系97分析:2023/9/13太湖學(xué)院信機系98第一類讀者寫者問題的解法讀者來:While(true){Wait(mutex);readcount++;if(readcount==1)
Wait(wr);Signal(mutex);讀Wait(mutex);readcount--;if(readcount==0)
Signal(wr);signal(mutex);}寫者來:While(true){Wait(wr);寫Signal(wr);}初值:wr=1;(讀-寫互斥,寫-寫互斥)mutex=1;(讀者統(tǒng)計數(shù)量互斥)readcount=0;2023/8/3太湖學(xué)院信機系98第一類讀者寫者問題的解法讀2023/9/13太湖學(xué)院信機系99用信號量集解決第一類讀者寫者問題寫者:Swait(wr,1,1);Swait(count,n,0);寫Ssignal(wr,1);讀者:Swait(count,1,1);Swait(wr,1,0);讀Ssignal(count,1);初值:wr:=1count:=n最多只能n個讀者同時讀(空位)2023/8/3太湖學(xué)院信機系99用信號量集解決第一類讀者寫2023/9/13太湖學(xué)院信機系1002.利用信號量來描述前趨關(guān)系(1)P1:S1;P2:S2;并發(fā)進程:P1和P2,各進程語句如下,要求:S1執(zhí)行結(jié)束才能執(zhí)行S2。如何設(shè)置P1與P2的關(guān)系?2023/8/3太湖學(xué)院信機系1002.利用信號量來描述前趨2023/9/13太湖學(xué)院信機系1012.利用信號量來描述前趨關(guān)系(2)S1S2S3S4S5S6abcdegf圖2-10前趨圖舉例2023/8/3太湖學(xué)院信機系1012.利用信號量來描述前趨2023/9/13太湖學(xué)院信機系102利用信號量來描述前趨關(guān)系(2)Vara,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0,0;Begin parbegin begin S1;signal(a);signal(b); end; begin wait(a);S2;signal(c);signal(d); end; begin wait(b);S3;signal(e); end; begin wait(c);S4;signal(f); end; begin wait(d);S1;signal(g); end; begin wait(e);wait(f);wait(g);S6; end; parendend2023/8/3太湖學(xué)院信機系102利用信號量來描述前趨關(guān)系2023/9/13太湖學(xué)院信機系1032.4.2哲學(xué)家進餐問題1.利用記錄型信號量解決哲學(xué)家進餐問題Varchopstick:array[0,…,4]ofsemaphore;Repeatwait(chopstick[i]);wait(chopstick[(i+1)mod5]);…eat;
…signal(chopstick[i]);signal(chopstick[(i+1)mod5]);…think;Untilfalse2023/8/3太湖學(xué)院信機系1032.4.2哲學(xué)家進餐問題2023/9/13太湖學(xué)院信機系1042.4.2哲學(xué)家進餐問題2.利用AND信號量解決哲學(xué)家進餐問題Varchopstick:array[0,…,4]ofsemaphore:=(1,1,1,1,1);processiRepeatthink;Sswait(chopstick[(i+1)mod5],chopstick[i]);eat;
Ssignal(chopstick[(i+1)mod5],chopstick[i]);Untilfalse2023/8/3太湖學(xué)院信機系1042.4.2哲學(xué)家進餐問題2023/9/13太湖學(xué)院信機系1052.5管程機制引入原因:為了避免凡要使用臨界資源的進程都自備同步操作wait(s)和signal(s).將同步操作的機制和臨界資源結(jié)合到一起,形成管程。
2023/8/3太湖學(xué)院信機系1052.5管程機制引入原因:2023/9/13太湖學(xué)院信機系1061、定義:一個數(shù)據(jù)結(jié)構(gòu)和能為并發(fā)進程所執(zhí)行的一組操作,該操作能同步進程和改變進程中的數(shù)據(jù)。(P55)由四部分組成:管程的名稱局部于管程的共享變量。
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度在線借款合同電子簽名法律適用研究3篇
- 二零二五年度某IT服務(wù)公司與企業(yè)客戶就IT運維服務(wù)合同2篇
- 二零二五年度加工承攬合同標的加工要求和質(zhì)量標準3篇
- 二零二五年度城市廣場草坪承包與公共藝術(shù)合同3篇
- 二零二五年度基樁檢測與監(jiān)測系統(tǒng)合同3篇
- 2025年度安徽省勞動合同解除與賠償合同范本3篇
- 二零二五年度新型房產(chǎn)租賃及轉(zhuǎn)售一體化服務(wù)合同2篇
- 豆包制作課程設(shè)計
- 二零二五年度供水企業(yè)安全生產(chǎn)培訓(xùn)合同3篇
- 路基路面沉井課程設(shè)計
- 2023年希望杯數(shù)學(xué)培訓(xùn)100題-六年級(含答案)
- 一年級科學(xué)人教版總結(jié)回顧2
- 個人住房貸款提前還款月供及節(jié)省利息EXCEL計算
- 第五單元《圓》教材解析-人教版數(shù)學(xué)六年級上冊
- 患者突發(fā)昏迷應(yīng)急預(yù)案演練腳本-
- 智能機器人技術(shù)導(dǎo)論PPT完整全套教學(xué)課件
- 危險性較大的分部分項工程清單 及安全管理措施
- 中職英語語文版(2023)基礎(chǔ)模塊1 Unit 1 The Joys of Vocational School 單元測試題(含答案)
- 最全-房屋市政工程安全生產(chǎn)標準化指導(dǎo)圖冊
- 聚合物的流變性詳解演示文稿
- 壓力彈簧力度計算器及計算公式
評論
0/150
提交評論