版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
進(jìn)程和進(jìn)程控制線程進(jìn)程互斥和同步死鎖問(wèn)題進(jìn)程間通信處理器調(diào)度
第三章處理機(jī)管理(中)進(jìn)程互斥和同步問(wèn)題的提出互斥算法信號(hào)量(semaphore)經(jīng)典進(jìn)程同步問(wèn)題管程(monitor)Windows的進(jìn)程互斥和同步進(jìn)程互斥和同步進(jìn)程間臨界資源訪問(wèn)沖突共享變量的修改沖突操作順序沖突臨界資源:計(jì)算機(jī)系統(tǒng)中的硬件或軟件〔如外設(shè)、共享代碼段、共享數(shù)據(jù)結(jié)構(gòu)〕資源,各個(gè)進(jìn)程在對(duì)其進(jìn)行訪問(wèn)時(shí)〔關(guān)鍵是進(jìn)行寫入或修改〕,必須互斥地進(jìn)行并非所有共享資源都是臨界資源,如只讀數(shù)據(jù)可以同時(shí)訪問(wèn)在多道程序環(huán)境中,進(jìn)程之間存在相互制約的關(guān)系,這種制約關(guān)系主要是由對(duì)共享資源的競(jìng)爭(zhēng)使用而引起的。進(jìn)程互斥和同步問(wèn)題的提出共享變量的修改沖突進(jìn)程互斥和同步臨界資源問(wèn)題的提出一個(gè)飛機(jī)訂票系統(tǒng),兩個(gè)終端,運(yùn)行T1、T2進(jìn)程T1:T2:......Read(x);Read(x);ifx>=1thenifx>=1thenx:=x-1;x:=x-1;write(x);write(x);......3個(gè)進(jìn)程:get,process和print進(jìn)程互斥和同步操作順序沖突臨界資源getprocessprint問(wèn)題的提出Buf1Buf2磁帶打印機(jī)臨界資源的訪問(wèn)過(guò)程進(jìn)程互斥和同步為了保證臨界資源的正確訪問(wèn),必須采取一定的協(xié)調(diào)措施臨界區(qū)(criticalsection):進(jìn)程中訪問(wèn)臨界資源的一段代碼。進(jìn)入?yún)^(qū)(entrysection):在進(jìn)入臨界區(qū)之前,檢查可否進(jìn)入臨界區(qū)的一段代碼。如果可以進(jìn)入臨界區(qū),通常設(shè)置相應(yīng)“正在訪問(wèn)臨界區(qū)”標(biāo)志。退出區(qū)(exitsection):用于將"正在訪問(wèn)臨界區(qū)"標(biāo)志去除。剩余區(qū)(remaindersection):代碼中的其余局部。問(wèn)題的提出同步機(jī)制應(yīng)遵循的準(zhǔn)那么①空閑那么入:當(dāng)沒(méi)有進(jìn)程處于臨界區(qū)時(shí),假設(shè)有一個(gè)進(jìn)程要求進(jìn)入臨界區(qū),那么應(yīng)該允許;②無(wú)空等待:已有進(jìn)程處于其臨界區(qū),其他要求進(jìn)入臨界區(qū)的進(jìn)程必須;③有限等待:等待進(jìn)入臨界區(qū)的進(jìn)程應(yīng)該在有限的時(shí)間內(nèi)得到滿足;④讓權(quán)等待:不能進(jìn)入臨界區(qū)的進(jìn)程,應(yīng)釋放CPU〔如轉(zhuǎn)換到阻塞狀態(tài)〕進(jìn)程互斥和同步目的:防止死鎖和饑餓死鎖指多個(gè)進(jìn)程互不相讓,都得不到足夠的資源;饑餓指某一個(gè)進(jìn)程一直得不到資源問(wèn)題的提出進(jìn)程互斥和同步互斥算法
——基于進(jìn)程間平等協(xié)商的互斥算法解決進(jìn)程互斥的方法:基于進(jìn)程間平等協(xié)商的互斥方法軟件方法硬件方法由操作系統(tǒng)協(xié)調(diào)互斥問(wèn)題的方法進(jìn)程互斥的軟件方法有兩個(gè)進(jìn)程Pi,Pj,其中的Pi算法1:?jiǎn)螛?biāo)志設(shè)立一個(gè)公用整型變量turn:描述允許進(jìn)入臨界區(qū)的進(jìn)程標(biāo)識(shí)在進(jìn)入?yún)^(qū)循環(huán)檢查是否允許本進(jìn)程進(jìn)入:turn為i時(shí),進(jìn)程Pi可進(jìn)入;在退出區(qū)修改允許進(jìn)入進(jìn)程標(biāo)識(shí):進(jìn)程Pi退出時(shí),改turn為進(jìn)程Pj的標(biāo)識(shí)j;缺點(diǎn):強(qiáng)制輪流進(jìn)入臨界區(qū),沒(méi)有考慮進(jìn)程的實(shí)際需要。容易造成資源利用不充分:在Pi出讓臨界區(qū)之后,Pj使用臨界區(qū)之前,Pi不可能再次使用臨界區(qū);進(jìn)程互斥和同步互斥算法算法2:雙標(biāo)志、先檢查設(shè)立一個(gè)標(biāo)志數(shù)組flag[]:描述進(jìn)程是否在臨界區(qū),初值均為FALSE。先檢查,后修改:在進(jìn)入?yún)^(qū)檢查另一個(gè)進(jìn)程是否在臨界區(qū),不在時(shí)修改本進(jìn)程在臨界區(qū)的標(biāo)志;在退出區(qū)修改本進(jìn)程在臨界區(qū)的標(biāo)志;優(yōu)點(diǎn):不用交替進(jìn)入,可連續(xù)使用;缺點(diǎn):Pi和Pj可能同時(shí)進(jìn)入臨界區(qū)。進(jìn)程互斥和同步進(jìn)程互斥的軟件方法互斥算法算法3:雙標(biāo)志、后檢查類似于算法2,與互斥算法2的區(qū)別在于先修改后檢查??煞乐箖蓚€(gè)進(jìn)程同時(shí)進(jìn)入臨界區(qū)。缺點(diǎn):Pi和Pj可能都進(jìn)入不了臨界區(qū)。進(jìn)程互斥和同步進(jìn)程互斥的軟件方法互斥算法算法4:先修改、后檢查、后修改者等待結(jié)合算法1和算法3,滿足空閑那么入和無(wú)空等待要求turn=j;描述可進(jìn)入的進(jìn)程〔同時(shí)修改標(biāo)志時(shí)〕在進(jìn)入?yún)^(qū)先修改后檢查,并檢查并發(fā)修改的先后:檢查對(duì)方flag,如果不在臨界區(qū)那么自己進(jìn)入--空閑那么入否那么再檢查turn:保存的是較晚的一次賦值,那么較晚的進(jìn)程等待,較早的進(jìn)程進(jìn)入--先到先入,后到等待進(jìn)程互斥和同步進(jìn)程互斥的軟件方法互斥算法信號(hào)量(semaphore)信號(hào)量和P、V原語(yǔ)信號(hào)量集前面的互斥算法是進(jìn)程間的一種平等協(xié)商機(jī)制,不能滿足進(jìn)程同步機(jī)制準(zhǔn)那么的全部要求。另一種進(jìn)程互斥的解決方法是引如一個(gè)地位高于進(jìn)程的管理者來(lái)解決臨界資源的使用問(wèn)題。操作系統(tǒng)可從進(jìn)程管理者的角度來(lái)處理互斥的問(wèn)題,信號(hào)量就是OS提供的管理臨界資源的有效手段。信號(hào)量代表可用資源實(shí)體的數(shù)量。進(jìn)程互斥和同步信號(hào)量和P、V原語(yǔ)1965年,由荷蘭學(xué)者Dijkstra提出〔P、V分別是荷蘭語(yǔ)的proberen=test和verhogen=increment的首字母〕,是一種卓有成效的進(jìn)程同步機(jī)制。每個(gè)信號(hào)量s包含一個(gè)整數(shù)值s.count〔計(jì)數(shù)〕和一個(gè)進(jìn)程等待隊(duì)列s.queue,其中是阻塞在該信號(hào)量的各個(gè)進(jìn)程的標(biāo)識(shí)信號(hào)量只能通過(guò)初始化和兩個(gè)標(biāo)準(zhǔn)的原語(yǔ)來(lái)訪問(wèn)——作為OS核心代碼執(zhí)行,不受進(jìn)程調(diào)度的打斷初始化指定一個(gè)非負(fù)整數(shù)值,表示空閑資源總數(shù)〔又稱為“資源信號(hào)量”〕——假設(shè)為非負(fù)值表示當(dāng)前的空閑資源數(shù),假設(shè)為負(fù)值其絕對(duì)值表示當(dāng)前等待臨界區(qū)的進(jìn)程數(shù)進(jìn)程互斥和同步信號(hào)量P原語(yǔ)P(s){ --s.count; //表示申請(qǐng)一個(gè)資源; if(s.count<0) //表示沒(méi)有空閑資源; {
調(diào)用進(jìn)程進(jìn)入等待隊(duì)列s.queue;
阻塞調(diào)用進(jìn)程; }}進(jìn)程互斥和同步信號(hào)量V原語(yǔ)V(s){ ++s.count; //表示釋放一個(gè)資源;
if(s.count<=0) //表示有進(jìn)程處于阻塞狀態(tài);
{
從等待隊(duì)列s.queue中取出一個(gè)進(jìn)程P;
進(jìn)程P進(jìn)入就緒隊(duì)列; }}進(jìn)程互斥和同步信號(hào)量利用信號(hào)量實(shí)現(xiàn)互斥為臨界資源設(shè)置一個(gè)互斥信號(hào)量mutex(MUTualExclusion),其初值為1;在每個(gè)進(jìn)程中將臨界區(qū)代碼置于P(mutex)和V(mutex)原語(yǔ)之間必須成對(duì)使用P和V原語(yǔ):遺漏P原語(yǔ)那么不能保證互斥訪問(wèn),遺漏V原語(yǔ)那么不能在使用臨界資源之后將其釋放〔給其他等待的進(jìn)程〕;P、V原語(yǔ)不能次序錯(cuò)誤、重復(fù)或遺漏進(jìn)程互斥和同步信號(hào)量利用信號(hào)量可以實(shí)現(xiàn)進(jìn)程間的同步前趨關(guān)系:并發(fā)執(zhí)行的進(jìn)程P1和P2中,分別有代碼C1和C2,要求C1在C2開(kāi)始前完成;為每個(gè)前趨關(guān)系設(shè)置一個(gè)互斥信號(hào)量S12,其初值為0進(jìn)程互斥和同步信號(hào)量經(jīng)典進(jìn)程同步問(wèn)題1.生產(chǎn)者-消費(fèi)者問(wèn)題(theproducer-consumerproblem)問(wèn)題描述:假設(shè)干進(jìn)程通過(guò)有限的共享緩沖區(qū)交換數(shù)據(jù)。其中,生產(chǎn)者進(jìn)程不斷寫入,而消費(fèi)者進(jìn)程不斷讀出;共享緩沖區(qū)共有n個(gè);任何時(shí)刻只能有一個(gè)進(jìn)程可對(duì)共享緩沖區(qū)進(jìn)行操作。進(jìn)程互斥和同步采用信號(hào)量機(jī)制:full是“滿”數(shù)目,初值為0,empty是“空”數(shù)目,初值為n。full和empty存在關(guān)系:full+empty==nmutex用于訪問(wèn)緩沖區(qū)時(shí)的互斥,初值是1每個(gè)進(jìn)程中各個(gè)P操作的次序是重要的:先檢查資源數(shù)目,再檢查是否互斥――否那么可能死鎖(為什么?)進(jìn)程互斥和同步經(jīng)典進(jìn)程同步問(wèn)題1.生產(chǎn)者-消費(fèi)者問(wèn)題(theproducer-consumerproblem)2.讀者-寫者問(wèn)題(thereaders-writersproblem)問(wèn)題描述:對(duì)共享資源的讀寫操作,任一時(shí)刻“寫者”最多只允許一個(gè),而“讀者”那么允許多個(gè)“讀-寫”互斥,“寫-寫”互斥,"讀-讀"允許進(jìn)程互斥和同步經(jīng)典進(jìn)程同步問(wèn)題采用信號(hào)量機(jī)制:Wmutex表示"允許寫",初值是1。公共變量Rcount表示“正在讀”的進(jìn)程數(shù),初值是0;Rmutex表示對(duì)Rcount的互斥操作,初值是1。進(jìn)程互斥和同步2.讀者-寫者問(wèn)題經(jīng)典進(jìn)程同步問(wèn)題P(Rmutex);if(Rcount==0)P(Wmutex);++Rcount;V(Rmutex);read;P(Rmutex);--Rcount;if(Rcount==0)V(Wmutex);V(Rmutex);ReaderP(Wmutex);write;V(Wmutex);Writer信號(hào)量同步的缺點(diǎn)同步操作分散:信號(hào)量機(jī)制中,同步操作分散在各個(gè)進(jìn)程中,使用不當(dāng)就可能導(dǎo)致各進(jìn)程死鎖〔如P、V操作的次序錯(cuò)誤、重復(fù)或遺漏〕易讀性差:要了解對(duì)于一組共享變量及信號(hào)量的操作是否正確,必須通讀整個(gè)系統(tǒng)中并發(fā)執(zhí)行的各個(gè)程序;不利于修改和維護(hù):各模塊的獨(dú)立性差,任一組變量或一段代碼的修改都可能影響全局;正確性難以保證:操作系統(tǒng)或并發(fā)程序通常很大,很難保證這樣一個(gè)復(fù)雜的系統(tǒng)沒(méi)有邏輯錯(cuò)誤;進(jìn)程互斥和同步管程用信號(hào)量可實(shí)現(xiàn)進(jìn)程間的同步,但由于信號(hào)量的控制分布在整個(gè)程序中,其正確性分析很困難。管程的引入1973年,由Hoare和Hanson提出管程的根本思想是把信號(hào)量及其操作原語(yǔ)封裝在一個(gè)對(duì)象內(nèi)部。即:將共享變量以及對(duì)共享變量能夠進(jìn)行的所有操作集中在一個(gè)模塊中。管程的定義:管程是關(guān)于共享資源的數(shù)據(jù)結(jié)構(gòu)及一組針對(duì)該資源的操作過(guò)程所構(gòu)成的軟件模塊。引入管程可提高代碼的可讀性,便于修改和維護(hù),正確性易于保證。進(jìn)程互斥和同步管程管程的主要特性模塊化:一個(gè)管程是一個(gè)根本程序單位,可以單獨(dú)編譯;抽象數(shù)據(jù)類型:管程是一種特殊的數(shù)據(jù)類型,其中不僅有數(shù)據(jù),而且有對(duì)數(shù)據(jù)進(jìn)行操作的代碼信息封裝:管程是半透明的,進(jìn)程可調(diào)用管程中實(shí)現(xiàn)了某些功能〔函數(shù)〕,至于這些功能是怎樣實(shí)現(xiàn)的,在其外部那么是不可見(jiàn)的;進(jìn)程互斥和同步管程管程作為一個(gè)模塊,它的結(jié)構(gòu)定義如下:
monitor_name=MONITOR;
共享變量說(shuō)明;
define本管程內(nèi)部定義、外部可調(diào)用的函數(shù)名表;
use本管程外部定義、內(nèi)部可調(diào)用的函數(shù)名表;
內(nèi)部定義的函數(shù)說(shuō)明和函數(shù)體
{
共享變量初始化語(yǔ)句;
}
進(jìn)程互斥和同步管程進(jìn)程互斥和同步管程bulletin=MONITOR;
r,w:condition;//r控制讀者使用黑板,w控制寫者;
writing:boolean;//當(dāng)前是否寫者使用黑板
read_account:integer;
definestart_read,end_read,start_write,end_write;
usemonitor.wait,monitor.signal;
procedurestart_read();
{
if(writing)monitor.wait(r);
read_account++;
monitor.signal(r);
}
procedureend_read();
{
read_account--;
if(read_account=0)monitor.signal(w);
}
假設(shè)已實(shí)現(xiàn)一根本管程monitor,提供signal,wait等操作
procedurestart_write();
{
if((read_account<>0)orwriting)monitor.wait(w);
writing=true;
}
procedureend_write();
{
writing=false;
if(r<>NULL)monitor.signal(r);
elsemonitor.signal(w);
}
進(jìn)程互斥和同步管程reader():
{
while(true)
{
bulletin.start_read();
read();
bulletin.end_read();
}
}
writer()
{
while(true)
{
bulletin.start_write();
write();
bulletin.end_write();
}
}
讀者進(jìn)程寫者進(jìn)程Mutex對(duì)象:互斥對(duì)象,相當(dāng)于互斥信號(hào)量,在一個(gè)時(shí)刻只能被一個(gè)線程使用。有關(guān)的API:CreateMutex創(chuàng)立或翻開(kāi)一個(gè)互斥對(duì)象,返回對(duì)象句柄;OpenMutex返回一個(gè)已存在的互斥對(duì)象的句柄,用于后續(xù)訪問(wèn);ReleaseMutex釋放對(duì)互斥對(duì)象的占用,使之成為可用;Windows支持三種同步對(duì)象對(duì)象名稱是由用戶給出的字符串。不同進(jìn)程中用同樣的名稱來(lái)創(chuàng)立或翻開(kāi)對(duì)象,從而獲得該對(duì)象在本進(jìn)程的句柄。Windows的進(jìn)程互斥和同步——互斥對(duì)象、信號(hào)量對(duì)象和事件對(duì)象進(jìn)程互斥和同步HANDLECreateMutex(LPSECURITY_ATTRIBUTESlpMutexAttributes,//SDBOOLbInitialOwner,//initialownerLPCTSTRlpName//objectname);Semaphore對(duì)象:相當(dāng)于資源信號(hào)量,取值在0到指定最大值之間,用于限制并發(fā)訪問(wèn)的線程數(shù)。有關(guān)的API:CreateSemaphore創(chuàng)立一個(gè)信號(hào)量對(duì)象,指定最大值和初值,返回對(duì)象句柄;OpenSemaphore返回一個(gè)已存在的信號(hào)量對(duì)象的句柄,用于后續(xù)訪問(wèn);ReleaseSemaphore釋放對(duì)信號(hào)量對(duì)象的占用;進(jìn)程互斥和同步Windows支持的三種同步對(duì)象Windows的進(jìn)程互斥和同步HANDLECreateSemaphore( LPSECURITY_ATTRIBUTESlpSemaphoreAttributes,//SD LONGlInitialCount,//initialcount LONGlMaximumCount,//maximumcount LPCTSTRlpName//objectname);Event對(duì)象:事件對(duì)象,相當(dāng)于"觸發(fā)器",可通知一個(gè)或多個(gè)線程某事件的出現(xiàn)。有關(guān)的API:CreateEvent創(chuàng)立一個(gè)事件對(duì)象,返回對(duì)象句柄;OpenEvent返回一個(gè)已存在的事件對(duì)象的句柄,用于后續(xù)訪問(wèn);SetEvent和PulseEvent設(shè)置指定事件對(duì)象為有信號(hào)狀態(tài);ResetEvent設(shè)置指定事件對(duì)象為無(wú)信號(hào)狀態(tài)〔nonsignaled〕進(jìn)程互斥和同步Windows支持的三種同步對(duì)象Windows的進(jìn)程互斥和同步同步對(duì)象等待(1)WaitForSingleObject在指定的時(shí)間內(nèi)等待指定對(duì)象為有信號(hào)狀態(tài)(signaledstate);
DWORDWaitForSingleObject( HANDLEhHandle,//handleofobjecttowaitfor DWORDdwMilliseconds//time-outintervalinmilliseconds);進(jìn)程互斥和同步Windows的進(jìn)程互斥和同步(2)WaitForMultipleObjects在指定的時(shí)間內(nèi)等待多個(gè)對(duì)象為有信號(hào)狀態(tài);
DWORDWaitForMultipleObjects( DWORDnCount,//對(duì)象句柄數(shù)組中的句柄數(shù);
CONSTHANDLE*lpHandles,//指向?qū)ο缶浔鷶?shù)組的指針,數(shù)組中 //可包括多種對(duì)象句柄;
BOOLbWaitAll, //等待標(biāo)志:TRUE表示所有對(duì)象同時(shí)可用 //FALSE表示至少一個(gè)對(duì)象可用;
DWORDdwMilliseconds//等待超時(shí)時(shí)限;
);同步對(duì)象等待Windows的進(jìn)程互斥和同步其他同步方法CriticalSection對(duì)象:只能在同一進(jìn)程內(nèi)使用的臨界區(qū),同一進(jìn)程內(nèi)各線程對(duì)它的訪問(wèn)是互斥進(jìn)行的。把變量說(shuō)明為CRITICAL_SECTION類型,就可作為臨界區(qū)使用。有關(guān)的API:InitializeCriticalSection對(duì)臨界區(qū)對(duì)象進(jìn)行初始化;EnterCriticalSection等待占用臨界區(qū)的使用權(quán),得到使用權(quán)時(shí)返回;TryEnterCriticalSection非等待方式申請(qǐng)臨界區(qū)的使用權(quán);申請(qǐng)失敗時(shí),返回0;LeaveCriticalSection釋放臨界區(qū)的使用權(quán);DeleteCriticalSection釋放與臨界區(qū)對(duì)象相關(guān)的所有系統(tǒng)資源;進(jìn)程互斥和同步Windows的進(jìn)程互斥和同步互鎖變量訪問(wèn)相當(dāng)于硬件指令,對(duì)一個(gè)整數(shù)〔進(jìn)程內(nèi)的變量或進(jìn)程間的共享變量〕進(jìn)行操作。其目的是防止線程間切換的影響。有關(guān)的API:InterlockedExchange進(jìn)行32位數(shù)據(jù)的先讀后寫原子操作;InterlockedCompareExchange依據(jù)比較結(jié)果進(jìn)行賦值的原子操作;InterlockedExchangeAdd先加后存結(jié)果的原子操作;InterlockedDecrement先減1后存結(jié)果的原子操作;InterlockedIncrement先加1后存結(jié)果的原子操作;進(jìn)程互斥和同步Windows的進(jìn)程互斥和同步死鎖問(wèn)題(DEADLOCK)概述死鎖的預(yù)防死鎖的檢測(cè)死鎖的防止解決死鎖問(wèn)題的綜合方法概述可重用資源(reusableresource):每個(gè)時(shí)刻只有一個(gè)進(jìn)程使用,但不會(huì)耗盡,在宏觀上各個(gè)進(jìn)程輪流使用。如CPU、主存和輔存、I/O通道、外設(shè)、數(shù)據(jù)結(jié)構(gòu)如文件、數(shù)據(jù)庫(kù)和信號(hào)量。死鎖是指系統(tǒng)中多個(gè)進(jìn)程無(wú)限制地等待永遠(yuǎn)不會(huì)發(fā)生的條件;死鎖發(fā)生原因?qū)コ赓Y源的共享;并發(fā)執(zhí)行的順序不當(dāng)死鎖問(wèn)題進(jìn)程使用的資源分為可重用資源和可消耗資源兩類:可重用資源死鎖死鎖發(fā)生:雙方都擁有局部資源,同時(shí)在請(qǐng)求對(duì)方已占有的資源。如次序:P1<a>P2<a>P1<b>P2<b>概述死鎖問(wèn)題可消耗資源(consumableresource):可以動(dòng)態(tài)生成和消耗,一般不限制數(shù)量。如硬件中斷、信號(hào)、消息、緩沖區(qū)內(nèi)的數(shù)據(jù)。死鎖發(fā)生:雙方都等待對(duì)方去生成資源,如次序:P1<a>P2<a>概述死鎖問(wèn)題死鎖發(fā)生條件:互斥:任一時(shí)刻只允許一個(gè)進(jìn)程使用資源請(qǐng)求和保持:進(jìn)程在請(qǐng)求其余資源時(shí),不主動(dòng)釋放已經(jīng)占用的資源非剝奪:進(jìn)程已經(jīng)占用的資源,不會(huì)被強(qiáng)制剝奪環(huán)路等待:環(huán)路中的每一條邊是進(jìn)程在請(qǐng)求另一進(jìn)程已經(jīng)占有的資源。只有4個(gè)條件都滿足時(shí),才會(huì)出現(xiàn)死鎖。死鎖問(wèn)題概述處理死鎖問(wèn)題的根本方法:預(yù)防、檢測(cè)、防止死鎖的預(yù)防預(yù)防死鎖的兩種策略:預(yù)先靜態(tài)分配法:進(jìn)程開(kāi)始運(yùn)行前一次分配所需全部資源,假設(shè)系統(tǒng)不能滿足,那么進(jìn)程阻塞,直到系統(tǒng)滿足其要求——保證進(jìn)程運(yùn)行過(guò)程中不會(huì)再提出新的資源請(qǐng)求;降低了對(duì)資源的利用率,降低進(jìn)程的并發(fā)程度;有可能無(wú)法預(yù)先知道所需資源;有序資源使用法:把資源分類按順序排列,保證對(duì)資源的請(qǐng)求不形成環(huán)路;限制進(jìn)程對(duì)資源的請(qǐng)求順序;資源的排序占用系統(tǒng)開(kāi)銷;預(yù)防是采用某種策略,限制并發(fā)進(jìn)程對(duì)資源的請(qǐng)求,使系統(tǒng)在任何時(shí)刻都不滿足死鎖的必要條件。死鎖問(wèn)題死鎖的檢測(cè)保存資源的請(qǐng)求和分配信息,利用某種算法對(duì)這些信息加以檢查,以判斷是否存在死鎖。死鎖檢測(cè)算法主要是檢查是否有循環(huán)等待。死鎖問(wèn)題資源分配圖算法將進(jìn)程和資源間的請(qǐng)求和分配關(guān)系用一個(gè)有向圖描述,通過(guò)檢查有向圖中是否存在循環(huán)判斷是否存在死鎖死鎖的防止在分配資源時(shí)判斷是否會(huì)出現(xiàn)死鎖,如
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)付款資產(chǎn)轉(zhuǎn)讓
- 質(zhì)量問(wèn)題先行賠付
- 混凝土供應(yīng)協(xié)議
- 財(cái)務(wù)咨詢服務(wù)協(xié)議樣本
- 服務(wù)改進(jìn)方案合同
- 校園印刷購(gòu)銷合同
- 鴨毛購(gòu)銷合同
- 誠(chéng)信為本杜絕曠工
- 嚴(yán)守校規(guī)我的承諾
- 井位建設(shè)合同范本
- 智能電能表應(yīng)用配套安裝投標(biāo)方案(技術(shù)方案)
- 《科研誠(chéng)信與學(xué)術(shù)規(guī)范》學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年平面設(shè)計(jì)師技能及理論知識(shí)考試題庫(kù)(附含答案)
- TSHJX 061-2024 上海市域鐵路工程施工監(jiān)測(cè)技術(shù)規(guī)范
- 2024年井下采煤工技能競(jìng)賽理論考試題庫(kù)(含答案)
- 天津市河北區(qū)2023-2024學(xué)年高一上學(xué)期1月期末化學(xué)試題(原卷版)
- 國(guó)家開(kāi)放大學(xué)2024年(202401-202407)《2667績(jī)效與薪酬實(shí)務(wù)》期末考試真題
- 醫(yī)院事業(yè)單位招錄100題真題真解(結(jié)構(gòu)化面試)
- 培訓(xùn)機(jī)構(gòu)學(xué)校:教師管理手冊(cè)
- 39 《出師表》對(duì)比閱讀-2024-2025中考語(yǔ)文文言文閱讀專項(xiàng)訓(xùn)練(含答案)
- YB-T+4190-2018工程用機(jī)編鋼絲網(wǎng)及組合體
評(píng)論
0/150
提交評(píng)論