




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
進程的互斥
——你要,我也要
1、多道程序設計帶來的問題
并發執行的多個進程可能產生互斥或同步的相互制約關系,不采取措施,可能導致結果的不可再現性。影響系統效率,而且還可以導致系統崩潰。3.4.1互斥的定義
1、進程互斥
指的是對某個系統資源,一個進程正在使用它,另外一個想用它的進程就必須等待,而不能同時使用。3.4.1互斥的定義
2、進程互斥是一種間接制約關系多道程序系統中進程間存在的一種源于資源共享的制約關系,主要是由被共享資源的獨占使用性質所決定的。并發進程之間()彼此無關A必須同步B必須互斥C提交可能需要同步或互斥D單選題1分3、臨界資源限定進程只能互斥地訪問的資源(指一次僅允許一個進程使用的資源,不允許并發訪問)。4、臨界資源不能搶占,不可剝奪
在搶占式操作系統中,優先級別高的進程不能中途從低優先級進程手中把臨界資源搶來使用。一、互斥的定義在下面的敘述中,正確的是()。臨界資源是非共享資源A臨界資源是任意共享資源B臨界資源是互斥共享資源C臨界資源是同時共享資源D提交單選題1分下列資源中,()是臨界資源。打印機A非共享的資源B共享變量C共享緩沖區D提交多選題1分5、臨界資源與非臨界資源舉例(1)臨界資源
打印機、共享變量(2)可剝奪性使用的資源CPU、內存和磁盤等。一、互斥的定義下面列出的選項中,不屬于可剝奪性資源的有()。CPUA內存B磁盤C磁帶機D提交單選題1分一、互斥的定義6、臨界區
進程中訪問臨界資源的那段程序代碼稱為臨界區或臨界段。7、同類臨界區(相關臨界區)使用同一臨界資源的不同進程中的臨界區。一、互斥的定義8、臨界區互斥訪問臨界資源使用同一臨界資源的進程應互斥地進入各自的臨界區。9、臨界區的使用原則
空則讓進,忙則等待,等則有限,等則讓權一、互斥的定義3.4.2、互斥機制1、操作系統實現進程的互斥、同步的機制形式(1)上鎖與開鎖原語(2)信號燈機制(重點)(3)管程機制2、上鎖與開鎖機制(1)特點
最簡單的進程互斥機制(2)互斥實現機制使用鎖變量W來表示某種臨界資源的狀態。
W=0表示資源空閑可用
W=1表示資源正被使用
3.4.2、互斥機制(3)上鎖原語:LOCK(W)
算法思想L1:如果W=1那么轉向L1;否則W=1返回1.考察鎖位的值;2.如果原來的值為0,將鎖位置1;3.如果為1,則返回第一步再次考察2、上鎖與開鎖機制3.4.2、互斥機制算法偽代碼voidlock(鎖變量w){test:if(w為1)gototestelsew=1;/*上鎖*/}/*lock(w)*/(3)上鎖原語:LOCK(W)
2、上鎖與開鎖機制3.4.2、互斥機制W=0;返回voidunlock(鎖變量w){w=0;/*開鎖*/}/*unlock(w)*/當進程使用完資源后,它必須將鎖位置成“0”,稱為開鎖操作。(3)開鎖原語:UNLOCK(W)
2、上鎖與開鎖機制3.4.2、互斥機制3、上鎖與開鎖原語實現進程互斥機制方法(1)欲進入臨界區的進程,必須先執行上鎖原語;(2)若上鎖原語順利通過,則進程可進入臨界區;(3)當完成對臨界區資源的訪問后再執行開鎖原語,以釋放該臨界資源。3.4.2、互斥機制例如,甲、乙兩進程要訪問同一類臨界資源甲進程:其他代碼;
LOCK(W);甲進程的臨界區;
UNLOCK(W);其他代碼;乙進程:其他代碼;
LOCK(W);乙進程的臨界區;
UNLOCK(W);其他代碼;3.4.2、互斥機制4、上鎖原語和開鎖原語實現互斥優缺點優點:簡單缺點:處理機效率不高
因為上鎖原語中的條件測試操作可能引起CPU“忙等”。3.4.2、互斥機制3.5信號量機制
荷蘭著名科學家,后來的計算機圖靈獎獲得者,E.W.Dijkstra于1965年提出了用作進程同步工具的信號量(semaphore)機制,這是一種卓有成效的進程互斥同步工具,已被廣泛應用于現代計算機系統中。信號量機制的基本原理兩個或多個進程可以利用彼此間收發的簡單的信號來實現“正確的”并發執行,一個進程在收到一個指定信號前,會被迫在一個確定的或者需要的地方停下來,從而保持同步或互斥。3.5信號量機制
3.5.1信號量的概念1、信號量,也叫信號燈,一般是由兩個成員組成的結構體,是一個確定的二元組(S,Q)
(1)S是個具有非負初值的整型變量,表示該信號量的值,且S的值只能由定義在信號量上的P操作原語和V操作原語來改變;(2)Q是個初始狀態為空的隊列。2、信號量類型是個復合類型,其一個分量是個整型分量S,另一個分量是個等待隊列指針Q(一個是指向PCB的指針,當多個進程都等待同一信號量時,它們就排成一個隊列,由信號量的指針項指出該隊列的頭。)3.5.1信號量的概念
3、信號量通常可以簡單反映出相應資源的使用情況,它與P,V操作原語一起使用可實現進程的同步和互斥。3.5.1信號量的概念4、信號量的整型分量S的值的物理含義
(1)當S≥0時,表示某類可用資源的數目,或者說表示可以執行P操作而不會被阻塞的進程的數目;3.5.1信號量的概念(2)當S<0時,其絕對值表示因等待信號量S被阻塞在阻塞隊列中的進程數,即系統中因請求該類資源而被阻塞的進程的數目(3)S的值只能由P、V操作來改變。
注意:S值負數值和非負數值代表含義不同。4、信號量的整型分量S的值的物理含義
3.5.1信號量的概念3.5.2
P、V操作原語1、P、V原語意思(1)P代表荷蘭語的proberen,意為“測試”;(2)V代表荷蘭語的verhogen,意為“增加”。現在很多國外的文獻都使用wait和signal操作(或者down和up操作)代替P、V操作。C++中的P、V操作就用wait和signal操作。2、P(S)原語操作的算法描述(1)S減1;(2)若S≥0,則調用P(S)的進程返回,繼續執行;(3)若S<0,調用者進程調用阻塞原語Block(Q),把自己插入到信號量S的阻塞隊列Q中(把相應的PCB連入等待該信號量隊列的末尾,并放棄處理機,進入等待)。
3.5.2
P、V操作原語設兩個進程共用一個臨界資源的互斥信號量mutex,當mutex=-1時表示()。一個進程進入了臨界區,另一個進程等待A沒有一個進程進入臨界區B兩個進程都進入了臨界區C兩個進程都在等待D提交單選題1分()操作不是P操作可完成的。為進程分配處理機A使信號量的值變小B可用于進程的同步C使進程進入阻塞狀態D提交單選題1分P(s)入口S-1=>SS≥0Block(Q)
返回YN2P(S)操作的算法流程圖描述3.5.2
P、V操作原語當一進程因在記錄型信號量S上執行P原語操作而被阻塞后,S的值為()。>0A<0B≥0C≤0D提交單選題1分3.V(S)原語操作的算法描述(1)S加1;(2)若S>0,則調用V(S)的進程繼續執行,返回;(說明沒有等待該信號量的進程)(3)若S<=0,調用者進程調用喚醒原語Wakeup(Q),把等待信號量S的阻塞隊列Q中的隊首進程移出并喚醒進入就緒隊列,返回。
3.5.2
P、V操作原語V(s)入口S+1=>SS>0Wakeup(Q)
返回YN3.V(S)原語操作的算法描述3.5.2
P、V操作原語4P(S)操作和V(S)操作的物理含義
(1)P(S)操作表示“等信號”,即測試一個要等的信號是否到達;(2)V(S)操作表示“發信號”。這個信號在實現同步時就是“合作者的伙伴進程已完成前趨任務”,在實現互斥時就是“臨界資源可用”。3.5.2
P、V操作原語當一進程因在記錄型信號量S上執行V()操作而導致喚醒另一進程后,S的值為()。>0A<0B≥0C≤0D提交單選題1分5、P(S)操作和V(S)操作的物理含義
在互斥問題中,每執行一次P(S)操作的含義,也可理解為進程請求一個單位的S類資源;每執行一次V(S)操作的含義,也可理解為進程釋放一個單位的S類資源。3.5.2
P、V操作原語如果信號量的當前值為-4,則表示系統中在該信號量上有()個進程等待。4A3B5C0D提交單選題1分3.5.3用P、V操作原語實現進程的互斥1、在相關進程的臨界區的前后分別施以P操作和V操作即可。這里所用信號量的初值一般為1,表示臨界資源未被占用,且其可用數目為1。如果有三個進程共享同一互斥段,而且每次最多允許兩個進程進入該互斥段,則信號量的初值應設置為()。3A1B2C0D提交單選題1分2、優勢
用P、V操作原語實現進程互斥的效率更高,因為P操作中引入了阻塞機制,互斥進程之間有互相通信機制,所以消除了上鎖原語中的CPU忙等現象。3.5.3用P、V操作原語實現進程的互斥P(S)V(S)P(S)V(S)P(S)V(S)P1P2P3互斥區3.5.3用P、V操作原語實現進程的互斥課堂練習1、多個進程對信號量S進行了5次P操作,2次V操作后,現在信號量的值是
-3,與信號量S相關的處于阻塞狀態的進程有幾個?信號量的初值是多少?2、有m個進程共享同一臨界資源,若使用信號量機制實現對一臨界資源的互斥訪問,則信號量的變化范圍是(
)。
例題
一個簡化的異地售票程序,假設幾乎同時兩地有兩個乘客要購買同一班次的車票各一張。
以上案例如果不加控制,會導致什么問題?
3.5.3用P、V操作原語實現進程的互斥例3.1試用P、V操作實現火車聯網訂票系統中北京、天津兩地的兩個終端售票進程發售同一班次車票的過程。
3.5.3用P、V操作原語實現進程的互斥用P、V原語控制進程互斥與同步的主要步驟:(1)分析清楚題目涉及的進程間的制約關系。(2)設置信號量(包括信號量的個數和初值,對于同步問題還要寫出信號量的物理含義)。(3)給出進程相應程序的算法描述或流程控制,并把P、V操作加到程序的適當處。3.5.3用P、V操作原語實現進程的互斥北京售票終端進程:
①根據顧客訂票要求找到公共數據單元PK;②P(S);③把PK的值讀到工作寄存器R1中;④根據顧客訂票數修改R1;⑤將R1的值回寫到PK中;⑥V(S);⑦售出顧客所訂的票,返回;
天津售票終端進程
①根據顧客訂票要求找到公共數據單元PK;②P(S);③把PK的值讀到工作寄存器R2中;④根據顧客訂票數修改R2;⑤將R1的值回寫到PK中;⑥V(S);⑦售出顧客所訂的票,返回;3.6進程的同步(synchronism)
——你等我,我也等你
多道程序系統中,許多進程之間可能存在以下兩種制約關系:源于資源共享的間接制約關系(互斥)
源于合作相互的直接制約關系(同步)
——你等我,我也等你
1、進程互斥與同步的關系
進程同步是指多個合作進程在獨自并發執行過程中的某些確定的時序點上“你等我,我也等你”的同步約束,進程互斥可視為進程同步的特例。3.6進程的同步(synchronism)3.6.1同步的定義
1、定義
指的是兩個或多個進程為了合作完成同一個任務,在執行速度或某些個確定的時序點上必須相互協調。
當一個進程到達了某一確定點而沒有得到合作伙伴發來的“已完成某些操作”的消息時必須等待,直到該消息到達被喚醒后,才能繼續向前推進。(1)單向同步關系
進程之間同步關系有時也被形象地稱為“生產者與消費者”之間的關系,“產品”(即生產者進程的輸出,亦即消費者進程的輸入)是它們的紐帶,它們在執行過程中的某個或某些確定的時序點上有著固定的前趨后繼的同步約束,即先“生產”后“消費”,這是一種“你等我”的關系。2進程同步關系分析3.6.1同步的定義(2)雙向同步關系(互為生產者與消費者)在稍微復雜一點的進程同步問題里,合作進程間的“生產者與消費者”的關系或身份是可以經常轉換的,因此,這些合作進程在執行過程中就會出現時而你等我,時而我等你的現象。
不管是單向或雙向同步關系,產品都是信號量。
2進程同步關系分析3.6.1同步的定義(3)相似處
進程的互斥實際上是進程同步的一種特殊情況;進程的互斥和同步可以都統稱為進程同步。2進程同步關系分析3.6.1同步的定義(4)進程同步與互斥區別進程互斥是進程間競爭互斥資源的使用權,這種競爭沒有固定的必然聯系,哪個進程競爭到使用權就歸那個進程使用,直到不需要使用時再歸還;進程同步是指多個進程為了合作完成同一個任務,在執行速度或某些個確定的時序點上必須相互協調,后面進程的執行需要前面運行進程的輸出。2進程同步關系分析3.6.1同步的定義在操作系統中,有一組進程,進程之間具有直接相互制約性。這組并發進程之間()。必定無關A必定相關B可能相關C相關程度相同D提交單選題1分1、P、V操作配對出現對同一個信號量的P、V操作不能同時出現在同一個進程的程序里,而是分別出現在一個生產者進程和它的合作伙伴—消費者進程的代碼中。
生產者生產產品之后執行V操作,而消費者在消費產品之前用P操作。
3.6.2用P、V操作原語實現進程的同步2、P、V操作的出現位置在各個合作進程中確定的時序點上。
生產者進程在完成了前趨的生產任務后,應立即給消費者進程發送一條“已完成前趨生產任務”的消息,執行V操作;
后繼的消費者進程在消費前,應該執行對同一個信號量的P操作,以測試其合作伙伴——生產者進程“已完成前趨生產任務”的消息是否到來,如果到來就開始消費,否則就阻塞自己。3.6.2用P、V操作原語實現進程的同步3、解決進程同步問題的主要步驟
(1)分析題目涉及的進程間的制約關系;(2)設置信號量(包括信號量的個數和初值及其物理含義),合作進程間需要收發幾條消息相應就設置幾個信號量;(3)給出進程相應程序的算法描述或流程控制,并把P、V操作加到程序的適當處。3.6.2用P、V操作原語實現進程的同步=》例3.2生產者——消費者問題
公用緩沖池,有n個緩沖區一組生產者生產產品一組消費者取走產品3.6.2用P、V操作原語實現進程的同步4、生產者-消費者問題是相互合作進程關系的一種抽象
輸入——計算——打印生產者消費者生產者消費者系統中使用資源的進程——消費者系統中釋放同類資源的進程——生產者3.6.2用P、V操作原語實現進程的同步5、生產者與消費者進程關系分析(1)生產者—消費者之間的同步關系表現為:一旦緩沖池中所有緩沖區均裝滿產品時,生產者必須等待消費者提供空緩沖區;一旦緩沖池中所有緩沖區全為空時,消費者必須等待生產者提供滿緩沖區。
3.6.2用P、V操作原語實現進程的同步(2)生產者—消費者之間還有互斥關系:由于緩沖池是臨界資源,所以任何進程在對緩沖區進行存取操作時都必須和其他進程互斥進行。5、生產者與消費者進程關系分析3.6.2用P、V操作原語實現進程的同步6、生產者與消費者進程同步與互斥實現(1)信號量設置
Ⅰ)同步信號量empty,初值為n,表示消費者已把緩沖池中全部產品取走,有n個空緩沖區可用。
Ⅱ)同步信號量full,初值為0,表示生產者尚未把產品放入緩沖池,有0個滿緩沖區可用。
Ⅲ)互斥信號量mutex,初值為1,以保證同時只有一個進程能夠進入臨界區,訪問緩沖池。3.6.2用P、V操作原語實現進程的同步生產者i
消費者j生產出一產品;P(full);P(empty);P(mutex);P(mutex);從緩沖區取出一產品;將該產品放入緩沖區;V(mutex);V(mutex);V(empty);V(full);消費該產品;
6、生產者與消費者進程同步與互斥實現3.6.2用P、V操作原語實現進程的同步如果將生產者的兩個P操作對調?生產者i消費者j生產出一產品;P(full);P(mutex);P(mutex);P(empty);從緩沖區取出一產品;將該產品放入緩沖區;V(mutex);V(mutex);V(empty);V(full);消費該產品;多個P操作的順序問題?如果將消費者的兩個P操作對調?生產者i
消費者j生產出一產品;P(mutex);P(empty);P(full);P(mutex);從緩沖區取出一產品;將該產品放入緩沖區;V(mutex);V(mutex);V(empty);V(full);消費該產品;分析P操作的順序(1)P操作的順序很重要,順序不當會產生死鎖。Consumer:Producer:P(empty);P(mutex);oneunit-->buf;V(mutex);V(full);P(full);P(mutex);//進入區oneunit<--buf;V(mutex);V(empty);//退出區分析P操作的順序(1)P操作的順序很重要,順序不當會產生死鎖。當full=0,mutex=1時,執行順序:
Consumer.P(mutex);Consumer.P(full);//C阻塞,等待Producer發出的full信號
Producer.P(empty);Producer.P(mutex);//P阻塞,等待Consumer發出的mutex信號死鎖,還有其他的執行序列可以產生死鎖嗎?如果一個進程中有同步與互斥的P操作,通常將P(同步信號量)放在前面,而P(互斥信號量)放在后面。分析P操作的順序如果將兩個V操作對調?生產者i
消費者j生產出一產品;P(full);P(mutex);P(mutex);P(empty);從緩沖區取出一產品;將該產品放入緩沖區;V(mutex);V(full);V(empty);V(mutex);消費該產品;V操作如果有同步和互斥信號量時,順序可以隨意。
例3.3讀者——寫者問題1、問題描述:(1)一組讀者與一組寫者循環訪問共享的同一個數據對象。(2)讀者:指能對共享數據對象讀的進程,寫者:指對共享數據對象只要求寫的進程。(3)規定:多個讀者可以同時讀這個數據對象,但決不允許多個寫者同時對這個數據對象進行寫操作,也不允許讀者、寫者同時訪問這個數據對象。2問題分析
讀者—寫者問題是共享數據對象的非合作進程關系的一種抽象。(1)如文件管理模塊中讀文件、寫文件等許多操作進程之間(2)讀者—寫者問題是指保證一個寫者進程必須與其他寫者或讀者進程互斥地訪問一個共享數據對象的同步問題。
例3.3讀者——寫者問題3進程互斥模型分析(1)讀者—寫者之間的互斥關系
寫者與寫者的互斥、寫者與讀者的互斥,設一個公用的初值為1的互斥信號量RW_mutex。
但是為了實現了讀者與讀者的共享資源,需引入一個讀者計數器變量RC,用于記錄讀者是否進入資源,如沒有進去,則需要互斥進入資源,否則,可以隨意進入,只需增加RC的值即可。
例3.3讀者——寫者問題(2)讀者—讀者之間的互斥關系
再設一個讀者公用的初值為1的互斥信號量R_mutex實現各個讀者間互斥的訪問RC。3進程互斥模型分析
例3.3讀者——寫者問題4讀者寫者互斥模型的原語實現(1)所用信號量和其他變量設置如下:互斥信號量RW_mutex,初值為1,用于實現寫者與其他寫者或讀者互斥地訪問共享的數據對象。互斥信號量R_mutex,初值為1,用于實現諸讀者互斥地訪問讀者計數器變量。整型變量RC,初值為0,用于對讀者進行記數。3.6.2用P、V操作原語實現進程的同步(2)用信號量機制解決讀者—寫者問題的算法描述如下:
讀者
寫者P(R_mutex);
P(RW_mutex);若RC=0則P(RW_mutex);對數據對象進行寫操作;RC加1;
V(RW_mutex);V(R_mutex);讀數據對象;P(R_mutex);RC減1;若RC=0則V(RW_mutex);
V(R_mutex);4讀者寫者互斥模型的原語實現例3.4試用用信號量機制描述兩人下象棋的過程1、問題描述
兩人下象棋的過程可以概括為:一開始只能是“紅先黑后”,以后兩人要循環輪流走子,直至某一方獲勝或雙方和棋為止。這是個只有一個生產者和一個消費者的生產者——消費者問題,是個典型的“你等我,我也等你”的問題。紅方是總的前趨任務——生產者進程,黑方是總的后繼任務——消費者進程,但由于下棋過程必須輪流走子,所以紅黑雙方的生產者消費者身份會輪流改變。棋盤則是生產者與消費者共享的緩沖。
2、二人對弈過程是的同步過程的原語實現(1)信號量設置如下同步信號量hong
,初值為1,表示黑方已走子,開始時可使紅方先行不受阻。
同步信號量hei
,初值為0,表示紅方尚未走子,開始時可使黑方先行受阻。3.6.2用P、V操作原語實現進程的同步進程之間存在哪幾種相互制約關系?各是什么原因引起的?下列活動分別屬于哪種制約關系?(1)若干同學去圖書館借書。(2)兩隊舉行籃球比賽。(3)流水線生產的各道工序。(4)商品生產和消費。作答正常使用主觀題需2.0以上版本雨課堂可為此題添加文本、圖片、公式等解析,且需將內容全部放在本區域內。正常使用需3.0以上版本進程間存在著兩種相互制約的關系:直接制約關系(即同步問題)和間接制約關系(即互斥問題)。同步問題是存在邏輯關系的進程之間相互等待產生的制約關系,互斥問題是相互無邏輯關系的進程間競爭使用相同的資源所發生的制約關系。
(1)屬于互斥關系,因為書的個數是有限的,一本書只能借給一個同學。
(2)屬于互斥關系,籃球只有一個,兩隊都要爭奪。
(3)屬于同步關系,各道工序的開始都依賴前道工序的完成。
(4)屬于同步關系,商品沒生產出來,消費無法進行,商品未消費完,生產也無需進行。答案解析答案解析主觀題10分(2)用信號量機制描述的二人下象棋過程如下黑方:P(hei);
若被紅方將死,則投子認負,結束;若同意與紅方作和,則結束;否則,根據棋局思考后走一子;V(hong);紅方:P(hong);
若被黑方將死,則投子認負,結束;若同意與黑方作和,則結束;否則,根據棋局思考后走一子;V(hei);2、二人對弈過程是的同步過程的原語實現例3.5某小型超級市場,可容納50人同時購物。入口處有籃子,每個購物者可拿一只籃子入內購物。出口處結帳,并歸還籃子(出、入口禁止多人同時通過)。試用信號量和P、V操作寫出購物者的同步算法。這是個典型的進程互斥問題互斥經典模型—超市模型P、V原語實現步驟1、所用信號量設置如下:(1)互斥信號量S,初值為50,用以保證最多可以有50個購物者同時進入超市。(2)互斥信號量mutex,初值為1,用以保證同時只能有一個購物者進程進入出入口拿起籃子或者結帳后放下籃子。3.6.2用P、V操作原語實現進程的同步購物者i進程(解法一)P(S);
P(mutex);
從入口處進超市,并取一只籃子;V(mutex);進超市內選購商品;P(mutex)到出口結帳,并歸還籃子;V(mutex)從出口離開超市;V(S);
↓結束.2、用購物過程的算法描述如下購物者i進程(解法二)P(S);
P(mutex1);
從入口處進超市,并取一只籃子;V(mutex1);進超市內選購商品;P(mutex2)到出口結帳,并歸還籃子;V(mutex2)從出口離開超市;V(S);
↓結束.2、用購物過程的算法描述如下經典模型—生產者與消費者變形模型例3.6問題描述:
桌上有個只能盛得下一個水果的空盤子。爸爸可向盤中放蘋果或桔子,兒子專等吃盤中的桔子,女兒專等吃盤中的蘋果。規定:當盤子空時,一次只能放入一個水果供吃者取用。試用信號量和P、V操作實現爸爸、兒子和女兒這三個循環進程之間的同步。本題屬于生產者——消費者問題模型的變形,相當于一個能生產兩種產品的生產者(爸爸)向兩個消費者(兒子和女兒)提供產品的同步問題。因此,可參考生產者與消費者問題的解法。
2、問題分析經典模型—生產者與消費者變形模型3用P、V原語實現同步(1)所用信號量設置如下
同步信號量empty,初值為1,表示盤子是空的,即兒子或女兒已把盤中的水果取走。
同步信號量orange,初值為0,表示爸爸尚未把桔子放入盤中同步信號量apple,初值為0,表示爸爸尚未把蘋果放入盤中
經典模型—生產者與消費者變形模型(2)使用信號量機制的三個進程的同步描述如下
爸爸進程(P):兒子進程(C1):
女兒進程(C2):P(empty);
P(orange);
P(apple);將水果放入盤中;
從盤中取出桔子;
從盤中取出蘋果;若放入的是桔子,
V(empty);
V(empty);則V(orange);吃桔子;
吃蘋果;否則,V(apple);3用P、V原語實現同步經典模型—生產者與消費者變形模型經典模型-獨木橋模型(單向雙工)例3.7設A、B兩點之間是一段東西向的單行車道,現在要設計一個AB路段自動管理系統,管理規則如下:當AB間有車輛在行駛時同方向的車可以同時駛入AB段,但另一方向的車必須在AB段外等待;當AB段之間無車輛行駛時,到達AB段的任一方向的車都可進入AB段,但不能從兩個方向同時駛入,即只能有一個方向的車駛入;當某方向在AB段行駛的車輛駛出了AB段且暫無車輛進入AB段時,應讓另一方向等待的車輛進入AB段行駛。試用信號量和P、V操作管理AB路段車輛的行駛。
1、原語互斥實現步驟(1)所用信號量和其他變量設置如下Ⅰ)整型變量Car_A,初值為0,用于對從A點(東)駛入AB段的車輛進行記數。Ⅱ)整型變量Car_B,初值為0,用于對從B點(西)駛入AB段的車輛進行記數。Ⅲ)互斥信號量mutex,初值為1,
用于實現不同方向的第一輛車互斥駛入AB路段。經典模型-獨木橋模型(單向雙工)(1)所用信號量和其他變量設置如下Ⅳ)互斥信號量ma,初值為1,用于實現東西向的車互斥地訪問計數器變量Car_A。Ⅴ)互斥信號量mb,初值為1,用于實現西東向的車互斥地訪問計數器變量Car_B。2、原語互斥實現步驟經典模型-獨木橋模型(單向雙工)通過AB路段向西行駛的車輛iP(ma);
若Car_A=0則
P(mutex);
Car_A加1;
V(ma);
車輛從A點通過AB路段到達B點;P(ma);
Car_A減1;
Car_A=0則
V(mutex);V(ma);(2)算法描述通過AB路段向東行駛的車輛jP(mb);若Car_B=0則
P(mutex);Car_B加1;V(mb);車輛從B點通過AB路段到達A點P(mb);Car_B減1;
Car_B=0則V(mutex);V(mb);3.8哲學家進餐問題(信號量聯合問題)(1)問題描述五個哲學家一生都在思考和進餐中度過,他們圍坐在一個圓桌周圍,每人面前放了一份美味的餐點,兩份相鄰的餐盤中間都放了一根筷子,哲學家需要把自己左右兩側的兩個筷子分別拿起才能進餐。哲學家的行為模式就是平時思考,餓了就分別拿起兩側的筷子,若兩次都能成功,即獲得了兩根筷子時,該哲學家就可以進餐了。當他吃飽后,為了不讓其他人挨餓,需要馬上將兩根筷子分別放下,注意,這里并沒有對拿起和放下筷子的次序做強制規定。例3.8哲學家進餐問題2、問題分析(1)一種最直接的解法是強制每個哲學家都先拿起左邊的筷子,成功后再去拿起右邊的筷子。(2)缺點是可能會產生嚴重的“饑餓”現象。若五個哲學家同時拿起左筷子,此時桌子上沒有一根未用的筷子,每個哲學家都在等待其右邊的鄰居進餐完畢后釋放筷子給自己。那么所有的哲學家將僵持并永久等待下去,導致長期饑餓。例3.9理發師問題1、問題描述:在理發店中有一位理發師、一把理發椅和n把供顧客等待的等待位。若沒有顧客,理發師便在理發椅上睡覺。當第一個顧客到來時,他必須先叫醒理發師為其服務。當理發師正在為顧客服務時,新到來的顧客將查看是否有空閑的等待位,若有就坐下等待,若無就離開理發店。理發師在為當前顧客服務完時要查看是否有等待的顧客,若有就繼續服務,若無就馬上睡去。2、問題分析與解決(1)設置三個信號量customers,用來記錄等待理發的顧客數(不包括正在理發的顧客);barbers,記錄正在等候顧客的理發師數,其值應為0或1,如果有多個理發師,則值可設為n;3.9理發師問題2、問題分析與解決(1)設置三個信號量此外還應設置一個變量waiting,它也是記錄等待的顧客數,是customers的一個副本。設置waiting的原因是customers是一個信號量,無法修改其自己的當前值。當一個顧客進入理發店后,首先做的就是檢查等候的顧客數量waiting,若該數量少于等待位數,顧客坐下等待,否則離開;mutex,用于理發師和顧客互斥訪問waiting值。3.9理發師問題3.9理發師問題P、V原語實現進程同步與互斥的實質實現進程的同步互斥實際就是給進程的并發執行增加一定的限制,以保證被訪問的共享數據的完整性和進程執行結果的可再現性。1、用信號量機制解進程同步與互斥的三個步驟(1)分析進程間的制約關系(2)設置信號量(3)實施P、V操作。
第一步是基礎、關鍵,第三步是核心。P、V原語實現進程同步與互斥的實現總結三個進程P1、P2、P3互斥使用一個包含N(N>0)個單元的緩沖區。P1每次用produce()生成一個正整數并用put()送入緩沖區某一空單元中;P2每次用getodd()從該緩沖區中取出一個奇數并用countodd()統計奇數個數;P3每次用geteven()從該緩沖區中取出一個偶數并用counteven()統計偶數個數。請用信號量機制實現這三個進程的同步與互斥活動,并說明所定義的信號量的含義。要求用偽代碼描述。
作答正常使用主觀題需2.0以上版本雨課堂可為此題添加文本、圖片、公式等解析,且需將內容全部放在本區域內。正常使用需3.0以上版本定義資源信號量empty、even、odd,用于控制生產者與消費者之間的同步,其中,empty表示空緩沖區的數目,even表示緩沖區中偶數的個數,odd表示緩沖區中奇數的個數;
定義互斥信號量mutex,用于實現進程對緩沖區的互斥訪問。semahporeempty=N,even=0,odd=0,mutex=1;答案解析答案解析主觀題10分(1)相同點:P、V操作總是配對出現的。(2)不同點P、V在互斥問題中總是出現在同一個進程的代碼中,且緊緊夾著臨界區;在同步問題中,卻是分別出現在兩個合作進程的代碼中,需要等消息的一方用P操作,相應的對同一信號量的V操作則在發出此消息的另一方中。2、進程同步與互斥在P、V形式上的異同P、V原語實現進程同步與互斥的實現總結互斥與同步習題和解決1、有兩個用戶進程A和B,在運行過程中都要使用系統中的一臺打印機輸出計算結果。試說明A、B兩進程之間存在什么樣的制約關系?為保證這兩個進程能正確地打印出各自的結果,請用信號量和P、V操作寫出各自的有關申請、使用打印機的代碼。要求給出信號量的含義和初值。解:
(1)A、B兩進程之間存在互斥的制約關系。因為打印機屬于臨界資源,必須一個進程使用完之后另一個進程才能使用。互斥與同步習題和解決(2)mutex:用于互斥的信號量,初值為1。進程A
進程B...
…P(mutex)
P(mutex)
申請打印機
申請打印機使用打印機
使用打印機
V(mutex)
V(mutex)
…
…
互斥與同步習題和解決2、有一個閱覽室,共有100個座位,讀者進入時必須先在一張登記表上登記,該表為每一座位列一表目,包括座號和讀者姓名等,讀者離開時要消掉登記的信息,試問:
(1)為描述讀者的動作,應編寫幾個程序,設置幾個進程?
(2)試用PV操作描述讀者進程之間的同步關系。互斥與同步例題讀者的動作都是一樣的:登記進入閱覽室,閱讀,撤消登記離開閱覽室,因此可寫一個程序,設n(n≥100)個進程。分析讀者共享的資源有閱覽室的座位和登記表,因此諸個讀者進程之間有兩種互斥制約關系,需設2個信號量來實現:seat:用于實現諸讀者對閱覽室的空閑座位的互斥競爭,初值為100;mutex:用于實現諸讀者對登記表的互斥訪問,初值為1。
分析解:(1)可寫一個程序,設n(n≥100)個進程
(2)讀者進程readeri(i=1,2,3,……)描述如下:P(seat);
/*申請空座位*/
P(mutex);
/*申請登記*/
登記;
V(mutex)
/*允許其他讀者登記*/
閱讀;
P(mutex);
/*申請撤消登記*/
撤消登記;
V(mutex);
/*允許其他讀者撤消登記*/V(seat);
/*釋放座位,允許他人進入*/互斥與同步例題有一個倉庫可以存放A、B兩種物品,每次只能存入一件物品(A或B)。存儲空間足夠大,只是要求–n<(A的件數–B的件數)<m,其中n和m是正整數。試用存入A、存入B和P、V操作,描述物品A和物品B的入庫過程。作答正常使用主觀題需2.0以上版本雨課堂主觀題10分今有三個并發進程R,M,P,它們共享了一個可循環使用的緩沖區B,緩沖區B共有N個單元。進程R負責從輸入設備讀信息,每讀一個字符后,把它存放在緩沖區B的一個單元中;進程M負責處理讀入的字符,若發現讀入的字符中有空格符,則把它改成“,”;進程P負責把處理后的字符取出并打印輸出。當緩沖區單元中的字符被進程P取出后,則又可用來存放下一次讀入的字符。請用PV操作為同步機制寫出它們能正確并發執行的程序。作答正常使用主觀題需2.0以上版本雨課堂主觀題10分[課堂作業]1、用P.V操作解決司機與售票員的問題2、用P.V操作解決下圖之同步問題:getcopyputfstg思考與作業3、寫出下列進程趨勢圖中各進程之間同步關系S1S4S2S3S5S6
3.7進程通信(communication)3.7.1進程通信方式3.7.2消息緩沖機制3.7.3郵箱通信3.7.4進程通信實例-管道1、簡介(1)進程之間的信息交換稱為進程通信。(2)合作進程間所交換的信息量,少則是一個狀態或數據,多則成千上萬字節的。(3)按通信所交換的數據量多少進程通信分為低級和高級兩種方式。
3.7.1進程通信方式低級通信高級通信2、通信方式劃分(1)按照通信量大小劃分
3.7.1進程通信方式低級通信:在進程間交換數據量少的進程通信方式。一般只傳送一個和幾個字節的信息,達到控制進程執行速度的作用(例如進程的同步與互斥)。信號量機制就是一種低級通信方式,它作為同步工具是卓有成效的,但作為通信工具則不夠理想。2、通信方式劃分(1)按照通信量大小劃分
3.7.1進程通信方式低級通信:在進程間交換數據量少的進程通信方式。缺點:傳輸效率低;通信對用戶不透明2、通信方式劃分(1)按照通信量大小劃分
3.7.1進程通信方式高級通信
用戶可以直接利用操作系統所提供的一組通信命令,高效地傳送大量數據的一種通信方式。優點:傳輸效率高。通信過程對用戶是透明的2、通信方式劃分(1)按照通信量大小劃分
3.7.1進程通信方式=>共享存儲器系統包括共享內存變量(如信號量機制)和共享內存區兩種通信方式。=>消息傳遞系統包括消息緩沖和信箱兩種通信方式。=>管道通信方式2、通信方式劃分(2)根據通信實施的方式和數據存取的方式
3.7.1進程通信方式3.7.2高級通信方式主從式會話式消息或郵箱機制共享存儲區方式1、主從式通信方式(1)特點:主進程可以自由使用從進程資源或數據從進程的動作受到主進程的控制主進程和從進程的關系固定(2)典型例子:終端控制進程和終端進程3.7.2高級通信方式2、會話式通信方式定義:通信進程雙方成為使用進程和服務進程,使用進程調用服務進程提供的服務兩進程在通信時有固定連接關系典型案例用戶進程和磁盤管理進程通信3.7.2高級通信方式3、消息或郵箱機制(1)消息:表示通信進程之間大信息量的交換(2)消息組成:發送進程名、接受進程名、數據和有關數據操作圖3.16消息的組成3.7.2高級通信方式(3)通信特點只要存在空緩沖區或郵箱,發送進程就可以通信發送進程與接收進程沒有直接連接關系,接收進程可以接受多個發送進程消息3、消息或郵箱機制3.7.2高級通信方式(3)通信特點發送和接收進程之間存在緩沖區或郵箱用來存放被傳送消息圖3.17緩沖區或郵箱通信結構3、消息或郵箱機制3.7.2高級通信方式4、共享存儲區通信(1)特點通信進程之間交互信息時通過對同一共享數據區的操作達到通信目的,共享區屬于每一進程在通信中不需要移動數據。3.7.2高級通信方式3.7.3消息緩沖機制1、發送進程:在自己內存空間設置發送緩沖區,把欲發送消息填入其中,最后使用發送進程將消息發送出去2、接收進程:在自己的內存中設置相應的接收區,再調用接受進程接受消息3、特點:(1)發送進程和接收進程使用不同的緩沖區用來存放和發送消息(2)發送進程建立消息存儲區,接收進程建立消息接收區3.7.3消息緩沖機制3、特點:(3)發送進程與接收進程不用共享數據緩沖區,因此不存在互斥問題,只要各自緩沖區有資源即可(4)發送進程必須告訴接受進程消息已經發出,所以兩者之間存在同步關系3.7.3消息緩沖機制4、消息緩沖機制正常通信條件在發送進程把消息寫入緩沖區和把緩沖區掛入消息隊列時,應禁止其他進程對該緩沖區消息隊列的訪問;同理,接收進程正從消息隊列中取消息時,也應禁止其他進程對該隊列的訪問;接收緩沖區消息隊列無消息時,接收進程不能接受任何消息3.7.3消息緩沖機制PCB......Send(R,M)......SIZE:消息長度TEXT:消息正文......消息鏈指針............Receive(pid,N)......SIZE:消息長度TEXT:消息正文......M:N:接受進程R發送進程S消息消息消息......5消息緩沖通信模型3.7.4郵箱通信1定義:發送進程申請建立一與接收進程鏈接的郵箱2特點發送進程將消息發送給郵箱,接收進程取出郵箱中消息郵箱作為發送進程和接收進程共有的私有數據結構,在互斥的條件下可以實現通信問題:如何實現發送進程與接受進程的制約關系?3.7.4郵箱通信3進程之間正常通信應滿足條件:發送進程發送消息時,郵箱中至少有一個空格能存放消息接收進程接收消息時,郵箱中至少有一個消息存在3.7.4郵箱通信4郵箱通信結構圖圖3.18郵箱通信結構3.7.4郵箱通信3.7.4郵箱通信3.7.5管道(pipe)1、管道是一條在進程間以字節流方式傳送的通信通道。2、它由OS核心的緩沖區(通常幾十KB)來實現,是單向的;常用于命令行所指定的輸入輸出重定向和管道命令。(先進先出的,一個進程寫,一個進程讀)3、在使用管道前要建立相應的管道,然后才可使用。4、管道機制中的同步與互斥管道機制必須提供三方面的協調努力:互斥:當一個進程正在對PIPE進行讀寫時,另一個必須等待(一次只有一個進程可以訪問)同步:當寫進程把一定量的數據(如4KB)寫入PIPE后(創建后,大小是固定字節的),便睡眠等待,直到讀進程取走數據后再喚醒它;當讀進程讀一個空PIPE時,也應睡眠等待,直到寫進程將消息寫入管道為止,才將它喚醒。3.7.5管道(pipe)4、管道機制中的同步與互斥管道機制必須提供三方面的協調努力:對方是否存在。只有已確定對方存在時,方能進行通信。3.7.5管道(pipe)5.UNIX管道(1)通過pipe系統調用創建無名管道,得到兩個文件描述符,分別用于寫和讀。intpipe(intfildes[2]);文件描述符fildes[0]為讀端,fildes[1]為寫端;通過系統調用write和read進行管道的寫和讀;3.7.5管道(pipe)5.UNIX管道通過pipe系統調用創建無名管道,得到兩個文件描述符,分別用于寫和讀。進程間雙向通信,通常需要兩個管道;只適用于父子進程之間或父進程安排的各個子進程之間(只有相關進程可以共享無名管道);3.7.5管道(pipe)命名管道服務器支持多客戶:為每個管道實例建立單獨線程或進程。(1)CreateNamedPipe在服務器端創建并返回一個命名管道句柄;(2)ConnectNamedPipe在服務器端等待客戶進程的請求;6.Windows管道3.7.5管道(pipe)(3)CallNamedPipe從管道客戶進程建立與服務器的管道連接;(4)ReadFile、WriteFile(用于阻塞方式)、ReadFileEx、WriteFileEx(用于非阻塞方式)用于命名管道的讀寫;6.Windows管道3.7.5管道(pipe)圖3.21管道通信7.UNIX管道編程3.7.5管道(pipe)例1:用c語言編寫一個程序,建立一個管道pipe,同時父進程生成一個子進程,子進程向pipe中寫入一個字符串,父進程從pipe中讀取該字符串7.UNIX管道編程7.UNIX管道編程例2:編寫一程序,建立一個管道。同時,父進程生成子進程P1,P2,這兩個子進程分別向管道寫入各自的字符串,父進程讀出他們。圖3.22父進程和子進程P1,P2通信例子7.UNIX管道編程3.8死鎖問題——你不讓,我也不讓
在多道程序系統中,多個進程并發運行,共享資源,從而提高了資源的利用率。但是若對資源的管理和使用不當,在一定條件下會導致系統發生一種隨機性故障――死鎖。在一些系統中,比如實時控制系統,系統一旦發生死鎖將導致災難性的后果。死鎖問題是E.W.Dijkstra在1965年研究銀行家算法時首次提出的,以后又由Havender、Lyach等人研究并發展。3.8.1.死鎖的定義1、相關概念
(1)死鎖(Deadlock):是指兩個或兩個以上的進程在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。稱此時系統處于死鎖狀態或系統產生了死鎖。3.8.1.死鎖的定義1、概念(2)死鎖進程
這些永遠在互相等待的進程為死鎖進程。(3)死鎖后果
所占用的資源或者需要它們進行某種合作的其它進程就會相繼陷入死鎖,最終可能導致整個系統處于癱瘓狀態。
2、死鎖原因計算機系統中,如果系統的資源分配策略不當,或者更常見的是程序員寫的程序有錯誤等,則會導致進程因競爭資源不當(往往與進程的推進速度有關)而產生死鎖的現象。
3.8.1死鎖的定義3、死鎖案例(1)文件打印
將一個大文件由磁帶拷貝至打印機,進程需要同時訪問磁帶驅動器和打印機,并且不允許其他進程這時訪問它們。在只有一個進程的系統中,該進程可以要求任何它所需要的資源,然后進行工作。但是,在一個多道程序系統中,就有可能出現嚴重的問題。3.8.1死鎖的定義A、B兩個進程準備打印一個大的磁帶文件ABR1R2打印機磁帶機3、死鎖案例(1)文件打印3.8.1死鎖的定義(2)哲學家就餐問題有5個哲學家,圍坐在圓桌旁,他們的生活方式是交替地進行思考和進餐;圓桌上間隔地擺放著5把叉子和5個裝有通心粉的盤子,規定第i號哲學家固定坐在第i把椅子上(i=0,1,2,3,4),且每個哲學家必須兩手分別拿起他左右兩旁的那兩把叉子,才能吃通心粉;假定通心粉的數量足夠5個哲學家用的。3、死鎖案例
假設這5把叉子與椅子相應也按逆時針方向從0開始連續編號,即第i號哲學家左邊擺著第i號叉子,右邊擺著第((i+1)mod5)號叉子,這里的mod代表模運算,即整除取余。顯然,在這個問題中叉子是哲學家進餐競爭的臨界資源,5把叉子應分別用一個初值為1的信號量表示,這5個信號量構成一個信號量數組S。(2)哲學家就餐問題3、死鎖案例則第i號哲學家的進餐過程描述如下哲學家(i=0,1,2,3,4)思考;P(S[i]);拿起左邊的叉子;P(S[(i+1)mod5]);拿起右邊的叉子;吃通心粉;放下左邊的叉子;V(S[i]);放下右邊的叉子;V(S[(i+1)mod5]);(該算法可能會死鎖)
死鎖經典案例—哲學家就餐問題
解決死鎖方法1:使用互斥信號量哲學家(i=0,1,2,3,4)思考;P(mutex);P(S[i]);拿起左邊的叉子;P(S[i+1]mod5);拿起右邊的叉子;吃通心粉;放下左邊的叉子;V(S[i]);放下右邊的叉子;V(S[i+1]mod5);V(mutex)死鎖經典案例—哲學家就餐問題有何缺點解決死鎖方法2:AND型信號量機制AND同步機制的基本思想是:將進程在整個運行過程中需要的所有資源,一次性全部地分配給進程,等到進程使用完畢后再一起釋放。也就是說,對若干個臨界資源的分配,采取原子操作的方式:要么全部分配給進程,要么一個也不分配。由死鎖理論可知,這樣就可避免上述死鎖情況的發生。聯合型信號量機制就是采用臨界資源的靜態分配用于解決死鎖問題。哲學家(i=0,1,2,3,4)思考;P(S[i]andS[i+1]mod5);拿起左邊的叉子;拿起右邊的叉子;吃通心粉;放下左邊的叉子;V(S[i]);放下右邊的叉子;V(S[i+1]mod5);//臨界資源的全部分配解決死鎖方法2:AND型信號量機制(1)競爭臨界資源當系統中供多個進程共享的臨界資源(如打印機、公用隊列等)的數目不能滿足諸進程的需要時,會引起諸進程對資源的競爭而產生死鎖。這個問題在多道程序系統中是無法避免的。3.8.2產生死鎖的原因(2)進程推進順序不當
進程在運行過程中,請求和釋放臨界資源的順序不當,也同樣會導致死鎖的產生。這個問題在多道程序系統中是可以解決的。(解決死鎖主要圍繞該問題展開)3.8.2產生死鎖的原因造成死鎖的原因是()。內存容量太小A系統進程數量太多,系統資源分配不當BCPU速度太慢C進程推進順序不合適D外存容量太小E提交多選題1分兩個進程爭奪同一個資源()。一定死鎖A不一定死鎖B不死鎖C以上說法都不對D提交單選題1分一、競爭資源引起死鎖
1.資源的分類:可剝奪和非剝奪性資源
可剝奪性資源:CPU和主存
不可剝奪性資源:磁帶機、打印機等當系統把這類資源分配給某進程后,再不能強行收回,只能在進程用完后自動釋放。2.競爭非剝奪性資源
兩個進程分別準備打印一個非常大的磁帶文件(雙方都擁有部分資源,同時在請求對方已占有的資源。)打印機R1磁帶機R2P1P2一、競爭資源引起死鎖
二、進程推進順序不當引起死鎖
資源少也未必一定產生死鎖。如兩個人過獨木橋,如果兩個人都要先過,在獨木橋上僵持不肯后退,必然會因競爭資源產生死鎖;但是,如果兩個人上橋前先看一看有無對方的人在橋上,當無對方的人在橋上時自己才上橋,那么問題就解決了。所以,如果程序設計得不合理,造成進程推進的順序不當,也會出現死鎖。思考題1、一個OS有20個進程,競爭使用65個同類資源,申請方式是逐個進行的,一旦某個進程獲得它所需要的全部資源,則立即歸還所有資源。每個進程最多使用三個資源。若僅考慮這類資源,該系統有無可能產生死鎖,為什么?思考題:答:不可能。因為死鎖產生的原因有兩點:系統資源不足或推進順序不當,在本題中,進程所需的最大資源數為60,而系統共有該類資源65個,其資源數已足夠系統內各進程使用。1.互斥條件多個并發進程只能互斥訪問臨界資源。為了保證并發執行的封閉性和正確性,互斥條件必須保持。
2.占有并請求條件(部分分配)已分配到了一些臨界資源的進程可以申請新的資源。
3.8.3產生死鎖的必要條件3.不可剝奪條件進程所獲得的資源在未使用完畢之前,資源申請者不能強行地從資源占有者手中奪取資源,而只能由該資源的占有者進程自行釋放。
4.循環等待條件鏈中的每一個進程都在等待相鄰進程所占用的資源。3.8.3產生死鎖的必要條件如果發現系統有()的進程隊列就說明系統有可能發生死鎖了。互斥A可剝奪B循環等待C同步D提交單選題1分3.8.4死鎖的解決辦法1、死鎖的預防(靜態)2、死鎖的避免(動態)
3、
死鎖的檢測和恢復
4、
鴕鳥算法
這種辦法是在系統運行之前就采取措施,即在系統設計時確定資源分配算法,消除發生死鎖的任何可能性。該方法雖然比較保守、資源利用率低,但因簡單明了并且安全可靠,仍被廣泛采用。一、死鎖的預防(防止)(靜態法)3.8.4死鎖的解決辦法
產生死鎖的四個必要條件中,互斥條件由臨界資源的互斥特性所決定的,不僅不能改變,相反還應加以保證,因此實際上只有三種方法。一、死鎖的預防(防止)(靜態法)1.靜態資源分配法(摒棄“占有并請求條件”)系統規定每一個進程在開始運行前,都必須一次性地申請其在整個運行過程所需的全部資源。此時,若系統有足夠的資源,便把進程想要的全部資源一次性地分配給它;若不能全部滿足進程的資源請求,則一個資源也不分給它。這樣,進程在運行過程中就不會再提出資源請求,從而破壞了占有與請求條件。一、死鎖的預防(防止)(靜態法)靜態資源分配法的優缺點:
優點:簡單、安全、易實現。缺點:(1)資源被嚴重浪費(2)進程延遲運行。一、死鎖的預防(防止)(靜態法)2.摒棄“不可剝奪條件”進程在需要資源時必須得到滿足,否則就放棄已經占有的資源。即:一個已經保持了某些資源的進程,當它再提出新的資源要求而不能立即得到滿足時,必須釋放它已經保持的所有資源,待以后再需要時再重新申請。一、死鎖的預防(防止)(靜態法)2.摒棄“不可剝奪條件”實現起來比較復雜,且要付出很大的代價。進程的周轉時間較長,系統開銷大。一、死鎖的預防(防止)(靜態法)3.有序資源使用法(摒棄“循環等待條件”)
系統中的所有資源按類都被賦予一個唯一的編號,每個進程只能按編號的升序申請資源。即對同一個進程而言,它一旦申請了一個編號為i的資源,就不允許再申請編號比i小的資源了,因此,破壞了循環等待條件。一、死鎖的預防(防止)(靜態法)3.有序資源使用法(摒棄“循環等待條件”)
(1)優點:安全且資源利用率比靜態資源分配法有所提高,因為它實際是一種半動態的資源分配法。(2)缺點:實現較困難,因為難給出合適的資源編號,不便于系統增添新設備,不便于用戶編程,且仍有一定的資源浪費現象。一、死鎖的預
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店翻新墊資裝修合同范本
- 2025家居定制裝修合同示范文本
- 2025物業綠化委托的合同書
- 2025房屋租賃合同主體變更協議書
- 潛水船租賃合同
- 遺產放棄繼承合同范本
- 工程項目測繪合同協議書范本
- 土地臨時租賃合同
- 2025年簽訂租賃合同的步驟詳解
- 2025委托合同范本標準咨詢服務的委托合同
- 2025年內蒙古中考一模英語試題(原卷版+解析版)
- 銀行案件防控課件
- 2025年江蘇省安全員B證考試題庫附答案
- 科級試用期滿工作總結(4篇)
- 歷史-安徽省蚌埠市2025屆高三年級第二次教學質量檢查考試(蚌埠二模)試題和答案
- 2025年從大模型、智能體到復雜AI應用系統的構建報告-以產業大腦為例-浙江大學(肖俊)
- 2025年浙江省金華市中考一模數學模擬試題(含答案)
- 外研版(2025新版)七年級下冊英語期中復習:Unit 1~3+期中共4套學情調研測試卷(含答案)
- 基于高中思想政治學科核心素養的教學研究與實踐PPT課件
- 礦山及其他工程破損山體植被恢復技術(DOC25頁)
- 鋁合金門窗、百葉施工組織設計
評論
0/150
提交評論