freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

湯第02章進程管理-資料下載頁

2025-01-22 00:07本頁面
  

【正文】 。signal(mutex)。remaindersection}}process2:{while(true){wait(mutex)。criticalsectionsignal(mutex)。remaindersection}}coend}利用信號量實現(xiàn)進程互斥131wait(mutex)和 signal(mutex)必須成對出現(xiàn)。缺少 wait將會導致系統(tǒng)混亂,不能保證對臨界資源的互斥訪問;缺少 signal將會使臨界資源永遠不被釋放,從而使因等待該資源而阻塞的進程不再被喚醒。分析132利用信號量來描述的前趨關(guān)系 S1S2 S3S4 S5S6Vara,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0,0。{cobegin{S1。signal(a)。signal(b)。}。{wait(a)。S2。signal(c)signal(d)。}。{wait(b)。S3。signal(e)。}。{wait(c)。S4。signal(f)。}。{wait(d)。S5。signal(g)。}。{wait(e)。wait(f)。wait(g)。S6。}。coend}F一個結(jié)點對應一個進程;F一條邊對應一個信號量;F可以少用幾個信號量 133學生自己設計的實例Vara,b,c,d,e,f,g,j,k,l:semaphore:=0,0,0,0,0,0,0,0,0。{cobegin{S1。signal(a)。signal(b)。signal(c)。}。{wait(a)。S2。signal(d)。signal(e)。}。{wait(b)。S3。signal(f)。}。{wait(c)。S4。signal(g)。}。{wait(d)。S5。signal(j)。}。{wait(d)。S6。signal(k)。}。{wait(f)。wait(k)。S7。signal(l)。}。{wait(j)。wait(k)。wait(l)。S8。}。coend}S1S2 S3 S4S5 S6S8S7134 管程機制? 信號量機制的優(yōu)點– 一種既方便又有效的進程同步機制? 信號量機制的缺點– 每個要訪問臨界資源的進程都必須 自備 同步操作 wait(s)和 signal(s)。– 使大量的同步操作分散在各個進程中。– 不僅給系統(tǒng)的管理帶來麻煩,而且還會因同步操作的使用不當而導致系統(tǒng) 死鎖 。? 在解決上述問題的過程中,便產(chǎn)生了一種新的進程同步工具 —— 管程 (Monitors)。135? 系統(tǒng)中的各種硬件資源和軟件資源,均可用數(shù)據(jù)結(jié)構(gòu)加以抽象的描述,即用少量信息和對該資源所執(zhí)行的操作來表征該資源,而忽略了它們的內(nèi)部結(jié)構(gòu)和實現(xiàn)細節(jié)。– 電傳機(硬件資源):可用于分配該資源有關(guān)的狀態(tài)信息( busy或 free)和對它進行請求或釋放的操作,以及等待該資源的進程隊列來描述。– FIFO隊列(軟件資源):可用其隊長、隊首和隊尾以及在該隊列上所執(zhí)行的一組操作來描述。管程的定義136? 利用共享數(shù)據(jù)結(jié)構(gòu)抽象地表示系統(tǒng)中的共享資源,而把對該共享數(shù)據(jù)結(jié)構(gòu)實施的操作定義為一組過程,如資源的請求和釋放過程 request和 release。? 進程對共享資源的申請、釋放和其他操作,都是通過這組過程對共享數(shù)據(jù)結(jié)構(gòu)的操作來實現(xiàn)的,這組過程還可以根據(jù)資源的情況,或接受或阻塞進程的訪問,確保每次僅有一個進程使用共享資源,這樣就可以統(tǒng)一管理對共享資源的所有訪問,實現(xiàn)進程互斥。? 代表共享資源的 數(shù)據(jù)結(jié)構(gòu) ,以及由對該共享數(shù)據(jù)結(jié)構(gòu)實施操作的一組 過程 所組成的資源管理程序,共同構(gòu)成了一個OS的資源管理模塊,我們稱之為管程。管程被請求和釋放資源的進程所調(diào)用。管程的定義137? 管程 :一個管程定義了一個數(shù)據(jù)結(jié)構(gòu)和能為并發(fā)進程所執(zhí)行(在該數(shù)據(jù)結(jié)構(gòu)上)的一組操作,這組操作能同步進程和改變管程中的數(shù)據(jù)。? 管程的組成部分:– 管程的名稱– 局部于管程內(nèi)部的共享數(shù)據(jù)結(jié)構(gòu)說明– 對該數(shù)據(jù)結(jié)構(gòu)進行操作的一組過程– 對局部于管程內(nèi)部的共享數(shù)據(jù)設置初始值的語句管程的定義138管程的示意圖初始化代碼條件(不忙)隊列進入隊列共享數(shù)據(jù)…一組操作過程139管程的結(jié)構(gòu)condition c1wait(c1)…condition wait()urgent queue signal局部數(shù)據(jù)條件變量過程 1過程 k出口初始化代碼入口管程等待調(diào)用的進程隊列管程等待區(qū)域…管程語法 typemonitorname=MONITOR。共享 變 量 說 明 。define(能被其他模 塊 引用的 )過 程名列表 。use(要 調(diào) 用的本模 塊 外定 義 的 )過 程名列表 。procedure過 程名 (形式參數(shù)表 )。begin…end?!璮unction函數(shù)名 (形式參數(shù)表 ):值類 型 。begin…end?!璪egin管程的局部數(shù)據(jù)初始化 語 句序列 。end 141說明u 局部于管程的數(shù)據(jù)結(jié)構(gòu),僅能被局部于管程的過程所訪問,任何管程外的過程都不能訪問它;u 局部于管程的過程也僅能訪問管程內(nèi)的數(shù)據(jù)結(jié)構(gòu);u 管程被請求和釋放資源的進程所調(diào)用;u 管程把共享變量和對它進行的若干過程圍了起來,所有進程要訪問臨界資源時,都必須經(jīng)過管程才能進入,而管程每次只準許一個進程進入,從而既便于系統(tǒng)管理共享資源,又能保證進程互斥。142管程特點p 管程是一種程序設計語言結(jié)構(gòu)成分,它和信號量有同等的表達能力,從語言的角度看,管程主要有以下特性:? 模塊化。管程是一個基本程序單位,可以單獨編譯。? 抽象數(shù)據(jù)類型。管程中不僅有數(shù)據(jù),而且有對數(shù)據(jù)的操作。? 信息掩蔽。管程中的數(shù)據(jù)結(jié)構(gòu)只能被管程中的過程訪問,這些過程也是在管程內(nèi)部定義的,供管程外的進程調(diào)用,而管程中的數(shù)據(jù)結(jié)構(gòu)以及過程(函數(shù))的具體實現(xiàn)外部不可見。143管程與進程的不同點( 1)管程所定義的是公用數(shù)據(jù)結(jié)構(gòu),如消息隊列等,進程所定 義的是私有數(shù)據(jù)結(jié)構(gòu) PCB;( 2)管程把共享變量上的同步操作集中起來統(tǒng)一管理,而 PV同步中的 PV操作分散在每個進程中。( 3)管程是為解決進程共享資源的互斥而建立的,而進程是為占有系統(tǒng)資源和實現(xiàn)系統(tǒng)并發(fā)性而引入的。( 4)管程被欲使用共享資源的所有進程所調(diào)用,管程和調(diào)用它的進程不能并發(fā)執(zhí)行;而進程之間能夠并發(fā)工作,并發(fā)性是其固有特性。( 5)管程可作為語言或 OS成分,不必創(chuàng)建或撤銷;而進 程具 有生命周期,由創(chuàng)建而 產(chǎn) 生 , 由撤銷而 消 亡。144v 在利用管程實現(xiàn)進程同步時,必須設置兩個同步操作原語wait和 signal。當某進程通過管程請求臨界資源而未能滿足時,管程便調(diào)用 wait原語使該進程等待,并將它排在等待隊列上。僅當另一進程訪問完并釋放之后,管程又調(diào)用signal原語,喚醒等待隊列中的隊首進程。v 通常,等待的原因可有多個,為了區(qū)別它們,又引入了條件變量 condition。管程中對每個條件變量,都需予以說明,其形式為: varx,y:condition。該變量應置于 wait和signal之前,即可表示為 。例如,由于共享數(shù)據(jù)被占用而使調(diào)用進程等待,該條件變量的形式為nonbusy:condition。此時, wait原語應改為 ,相應地, signal應改為 。條件變量145v :重新啟動一個被阻塞的進程, 但如果沒有被阻塞的進程,則 操作不產(chǎn)生任何后果 ,這與信號量機制中的signal操作不同。因為,后者總是要執(zhí)行s++操作,因而總會改變信號量的狀態(tài)。如果有進程 Q處于阻塞狀態(tài),當進程 P執(zhí)行了,怎樣決定由哪個進程執(zhí)行,哪個進程等待,可采用下述兩種方式處理:167。 P等待,直至 Q離開管程,或 Q等待另一條件。167。 Q等待,直至 P離開管程,或 P等待另一條件。條件變量146 經(jīng)典進程的同步問題生產(chǎn)者 — 消費者問題利用記錄型信號量解決生產(chǎn)者 — 消費者問題利用 AND信號量解決生產(chǎn)者 — 消費者問題利用管程解決生產(chǎn)者 — 消費者問題哲學家進餐問題利用記錄型信號量解決哲學家進餐問題利用 AND信號量機制解決哲學家進餐問題讀者 — 寫者問題利用記錄型信號量解決讀者 — 寫者問題利用信號量集機制解決讀者 —— 寫者問題147 生產(chǎn)者 — 消費者問題利用記錄型信號量解決生產(chǎn)者 — 消費者問題利用 AND信號量解決生產(chǎn)者 — 消費者問題利用管程解決生產(chǎn)者 — 消費者問題148利用記錄型信號量解決生產(chǎn)者— 消費者問題? 假定,在生產(chǎn)者和消費者之間的公用緩沖池中,具有 n個緩沖區(qū),可利用互斥信號量 mutex使諸進程實現(xiàn)對緩沖池的互斥使用;? 利用資源信號量 empty和 full分別表示緩沖池中空緩沖區(qū)和滿緩沖區(qū)的數(shù)量。? 又假定這些生產(chǎn)者和消費者相互等效,只要緩沖池未滿,生產(chǎn)者便可將消息送入緩沖池;只要緩沖池未空,消費者便可從緩沖池中取走一個消息。149Semaphoremutex=1,empty=n,full=0。itembuffer[n]。intin=0,out=0。{cobeginproducer:{ while(true){…… produceaniteminnextp。…… wait(empty)。wait(mutex)。//前 2句顛倒則死鎖buffer(in)=nextp。 in=(in+1)%n。 signal(mutex)。signal(full)。}}consumer:{while(true){wait(full)。wait(mutex)。nextc=buffer(out)。out=(out+1)%n。signal(mutex)。
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1