




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章進(jìn)程管理3.1進(jìn)程的引入3.2進(jìn)程的結(jié)構(gòu)3.3進(jìn)程控制3.4進(jìn)程的同步與互斥3.5進(jìn)程間通信3.6進(jìn)程調(diào)度3.7死鎖3.8線程3/8/2023第3章進(jìn)程管理3.1進(jìn)程的引入3.1.1順序程序與并發(fā)程序1.順序程序
是指嚴(yán)格按照寫入的順序執(zhí)行的程序。順序程序執(zhí)行時(shí)具有以下特征:順序性。封閉性。可再現(xiàn)性。3/8/2023第3章進(jìn)程管理2.并發(fā)程序
并發(fā)程序是指兩道或兩道以上程序同時(shí)裝入內(nèi)存中運(yùn)行,這些程序的執(zhí)行在時(shí)間上互相有重疊,即在一個(gè)程序執(zhí)行結(jié)束之前,另一個(gè)程序已經(jīng)開始執(zhí)行。并發(fā)程序具有以下與順序程序不同的特征:間斷性失去封閉性程序結(jié)果的不可再現(xiàn)性
3/8/2023第3章進(jìn)程管理綜上所述,可見在多道程序工作環(huán)境下,一個(gè)程序活動不再能獨(dú)占系統(tǒng)資源,因此也就不再能單獨(dú)決定這些資源的狀態(tài)。程序和計(jì)算機(jī)執(zhí)行程序的活動之間也不再有一一對應(yīng)關(guān)系??傊?,程序活動不再處于一個(gè)封閉的系統(tǒng)中,而是和其它程序活動之間存在著相互依賴和制約的關(guān)系,因而呈現(xiàn)出并發(fā)、動態(tài)以及相互制約這些新的特征。在這種情況下,程序這個(gè)靜態(tài)的概念已經(jīng)不能如實(shí)地反映多道系統(tǒng)中程序的并發(fā)活動,故引入了進(jìn)程的概念來描述系統(tǒng)和用戶的程序活動。
引入進(jìn)程原因總結(jié)3/8/2023第3章進(jìn)程管理3.1.2進(jìn)程的定義與特性1、定義:進(jìn)程是指可并發(fā)執(zhí)行的程序,在一個(gè)數(shù)據(jù)集合上的一次運(yùn)行過程。2、特征:動態(tài)性:進(jìn)程是程序執(zhí)行的過程。并發(fā)性:進(jìn)程使程序能并發(fā)執(zhí)行。異步性:進(jìn)程以各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)獨(dú)立性:進(jìn)程是獨(dú)立運(yùn)行的基本單位,也是系統(tǒng)資源分配與調(diào)度的獨(dú)立單位。結(jié)構(gòu)性:進(jìn)程包括可執(zhí)行的程序代碼、程序的數(shù)據(jù)和堆棧、程序計(jì)數(shù)器、堆棧指針、有關(guān)寄存器、以及所有運(yùn)行程序所必須的其它信息。3/8/2023第3章進(jìn)程管理3.1.3進(jìn)程的狀態(tài)及其轉(zhuǎn)換
就緒態(tài)。進(jìn)程已經(jīng)具備了運(yùn)行的所有條件,一旦分配到CPU就立即可以執(zhí)行,而這時(shí)CPU正被其他進(jìn)程占用,因此暫時(shí)不能執(zhí)行。系統(tǒng)中處于就緒狀態(tài)的進(jìn)程一般有多個(gè),通常將這些進(jìn)程組織成一個(gè)隊(duì)列,稱為就緒隊(duì)列。當(dāng)CPU空閑時(shí),從就緒隊(duì)列中選擇一個(gè)進(jìn)程執(zhí)行。運(yùn)行態(tài)。進(jìn)程已獲得CPU,正在執(zhí)行。在單處理機(jī)系統(tǒng)中,處于運(yùn)行狀態(tài)的進(jìn)程只有一個(gè),而在多處理機(jī)系統(tǒng)中,有多個(gè)進(jìn)程處于運(yùn)行狀態(tài)。阻塞態(tài)。也稱為等待狀態(tài)或睡眠狀態(tài),指正在執(zhí)行的進(jìn)程由于等待I/O或某個(gè)事件的完成,暫時(shí)不能運(yùn)行,這時(shí)便放棄CPU處于暫停狀態(tài)。系統(tǒng)根據(jù)進(jìn)程阻塞的不同原因,把進(jìn)程組織成多個(gè)隊(duì)列,稱為阻塞隊(duì)列。1、基本狀態(tài):3/8/2023第3章進(jìn)程管理2、狀態(tài)的轉(zhuǎn)換3/8/2023第3章進(jìn)程管理3.1.4進(jìn)程與程序的關(guān)系●動態(tài)性和靜態(tài)性。進(jìn)程是動態(tài)的,程序是靜態(tài)的?!衽R時(shí)性和永久性。進(jìn)程是臨時(shí)的,程序是永久的;進(jìn)程是一個(gè)狀態(tài)變化的過程,而程序可長久保存?!癫l(fā)性與順序性?!窠M成上的不同。進(jìn)程與程序的組成不同:進(jìn)程的組成包括程序、數(shù)據(jù)和進(jìn)程控制塊(PCB)?!穸鄬σ坏年P(guān)系。通過多次執(zhí)行,一個(gè)程序可對應(yīng)多個(gè)進(jìn)程;但一個(gè)進(jìn)程只能對應(yīng)一個(gè)程序。3/8/2023第3章進(jìn)程管理3.2進(jìn)程的結(jié)構(gòu)3.2.1進(jìn)程的實(shí)體在操作系統(tǒng)中,一個(gè)進(jìn)程是通過其物理實(shí)體被感知的,進(jìn)程的物理實(shí)體又稱為進(jìn)程的靜態(tài)描述。進(jìn)程的靜態(tài)描述由三部分組成:
●程序:描述了進(jìn)程所要完成的功能;
●數(shù)據(jù):進(jìn)程運(yùn)行所需要的數(shù)據(jù)和工作區(qū);
●進(jìn)程控制塊(PCB):它包含了進(jìn)程的描述信息、控制信息和資源信息,是進(jìn)程動態(tài)特性的集中反映,是進(jìn)程存在的唯一標(biāo)志;
3/8/2023第3章進(jìn)程管理3.2.2PCB的內(nèi)容1、進(jìn)程描述信息:進(jìn)程標(biāo)識符(processID),唯一,通常是一個(gè)整數(shù)進(jìn)程名,通常基于可執(zhí)行文件名(不唯一)用戶標(biāo)識符(userID);進(jìn)程組關(guān)系2、進(jìn)程控制信息:當(dāng)前狀態(tài)優(yōu)先級(priority)代碼執(zhí)行入口地址程序的外存地址運(yùn)行統(tǒng)計(jì)信息(執(zhí)行時(shí)間、頁面調(diào)度)進(jìn)程間同步和通信;阻塞原因3/8/2023第3章進(jìn)程管理進(jìn)程的隊(duì)列指針進(jìn)程的消息隊(duì)列指針3、所擁有的資源和使用情況:虛擬地址空間的現(xiàn)狀打開文件列表4、CPU現(xiàn)場保護(hù)信息:寄存器值(通用、程序計(jì)數(shù)器PC、狀態(tài)PSW,地址包括棧指針)指向賦予該進(jìn)程的段/頁表的指針3/8/2023第3章進(jìn)程管理1、鏈接結(jié)構(gòu)3.2.4PCB的組織3/8/2023第3章進(jìn)程管理2、索引結(jié)構(gòu)
索引表就緒隊(duì)列等待隊(duì)列1等待隊(duì)列2PCB1PCB2PCB3PCB4PCB5PCB6PCB7…PCBnPCB表3/8/2023第3章進(jìn)程管理3.3進(jìn)程控制
操作系統(tǒng)使用系統(tǒng)原語(primitive)控制進(jìn)程狀態(tài)改變,原語被認(rèn)為是機(jī)器語言的延伸,是完成特定任務(wù)的一段內(nèi)核基本代碼。它具有原子操作性(atomicoperate),原子操作為一不可分的操作,它是通過中斷屏蔽來實(shí)現(xiàn)的。用戶不能直接使用,需通過特殊的系統(tǒng)調(diào)用來使用原語。
3.3.1進(jìn)程創(chuàng)建與撤消
1.引起創(chuàng)建進(jìn)程的事件3/8/2023第3章進(jìn)程管理2.進(jìn)程的創(chuàng)建創(chuàng)建過程如下:(1)申請空白PCB。創(chuàng)建一個(gè)進(jìn)程實(shí)際上是創(chuàng)建一個(gè)PCB,因此,進(jìn)程創(chuàng)建原語的一個(gè)主要工作就是為進(jìn)程建立一個(gè)PCB,并填入相應(yīng)的初始值。創(chuàng)建一個(gè)新進(jìn)程時(shí),首先要根據(jù)進(jìn)程名查找PCB表,若已有此同名進(jìn)程存在,則返回出錯(cuò)信息;否則從PCB表中分配一空閑PCB,并為新進(jìn)程分配一個(gè)惟一的進(jìn)程標(biāo)識符。(2)為新進(jìn)程分配資源。為新進(jìn)程的程序段、數(shù)據(jù)段和用戶堆棧分配必要的內(nèi)存空間,以及其他各種資源。然后,從外存中把程序段和數(shù)據(jù)段裝入到分配給該進(jìn)程的內(nèi)存地址空間中。(3)初始化PCB。根據(jù)系統(tǒng)或父進(jìn)程提供的參數(shù),將申請到的PCB表項(xiàng)進(jìn)行初始化,即給PCB中的各項(xiàng)信息賦予初值。(4)將新進(jìn)程插入就緒隊(duì)列。將已初始化的PCB加入到就緒隊(duì)列中。3/8/2023第3章進(jìn)程管理
1.進(jìn)程的阻塞處于運(yùn)行狀態(tài)的進(jìn)程,如果要等待某事件的發(fā)生,如等待資源、等待I/O完成等,無法繼續(xù)執(zhí)行,這時(shí)進(jìn)程自己調(diào)用阻塞原語,把自己變成阻塞狀態(tài)。具體操作過程如下(1)停止進(jìn)程執(zhí)行,把CPU現(xiàn)場信息保存到該進(jìn)程的PCB的相應(yīng)表目中。(2)修改PCB的有關(guān)表目內(nèi)容,如把進(jìn)程狀態(tài)由運(yùn)行狀態(tài)改為阻塞狀態(tài)。(3)根據(jù)阻塞原因,把修改后的PCB插入到相應(yīng)的阻塞隊(duì)列中。(4)轉(zhuǎn)入進(jìn)程調(diào)度程序,從就緒隊(duì)列中重新調(diào)度其他進(jìn)程運(yùn)行。3.3.2進(jìn)程阻塞與喚醒3/8/2023第3章進(jìn)程管理2.進(jìn)程的喚醒當(dāng)處于阻塞狀態(tài)的進(jìn)程等待的事件已經(jīng)結(jié)束,這時(shí)就由完成等待事件的進(jìn)程(如釋放資源的進(jìn)程或完成I/O的進(jìn)程)調(diào)用喚醒原語,將該阻塞進(jìn)程喚醒,轉(zhuǎn)換成就緒狀態(tài)。具體操作過程如下:把PCB從相應(yīng)的等待隊(duì)列中移出。修改PCB的有關(guān)表目內(nèi)容,如把進(jìn)程狀態(tài)由阻塞狀態(tài)改為就緒狀態(tài)。將修改后的PCB插入到就緒隊(duì)列中,等待調(diào)度。3/8/2023第3章進(jìn)程管理
1、進(jìn)程同步:它主要源于進(jìn)程合作,是進(jìn)程間共同完成一項(xiàng)任務(wù)時(shí)形成的相互協(xié)作的關(guān)系。
2、進(jìn)程互斥:它主要源于對資源的競爭,是進(jìn)程之間排它性使用資源的關(guān)系。
3、臨界資源:一次只允許一個(gè)進(jìn)程使用的資源,如打印機(jī)、公共變量等;
4、臨界區(qū)(段):包含臨界資源的程序段稱為臨界區(qū)。
3.4進(jìn)程的同步與互斥3.4.1基本概念3/8/2023第3章進(jìn)程管理3.4.2簡單的同步機(jī)制同步機(jī)制是指用于保證多個(gè)進(jìn)程在執(zhí)行次序上的協(xié)調(diào)關(guān)系的相應(yīng)機(jī)制。
簡單同步機(jī)制包括: 1、標(biāo)志位機(jī)制
2、加鎖機(jī)制3/8/2023第3章進(jìn)程管理
1、什么是信號量信號量有多種類型,常用的是記錄型信號量,可定義如下:
structsemaphore{intvalue;/*value是初值為非負(fù)的整型變量*/
int*Q;/*Q是初始狀態(tài)為空的等待隊(duì)列*/}S;信號量的物理含義:當(dāng)S.value>0,表示可用資源個(gè)數(shù);當(dāng)S.value<0,|S.value|表示等待該信號量的進(jìn)程個(gè)數(shù)。3.4.3信號量機(jī)制3/8/2023第3章進(jìn)程管理2、P、V操作
P(S)
S.value=S.value-1;if(S.value<0){當(dāng)前進(jìn)程進(jìn)入等待隊(duì)列Q;阻塞當(dāng)前進(jìn)程;}else當(dāng)前進(jìn)程繼續(xù);
V(S)
S.value=S.value+1;if(S<.value=0){從等待隊(duì)列Q中取出一個(gè)進(jìn)程P,進(jìn)程P進(jìn)入就緒隊(duì)列;當(dāng)前進(jìn)程繼續(xù);}else當(dāng)前進(jìn)程繼續(xù);3/8/2023第3章進(jìn)程管理3、用信號量實(shí)現(xiàn)互斥模型
為臨界資源設(shè)置一個(gè)互斥信號量S,其初值為1;在每個(gè)進(jìn)程中將臨界區(qū)代碼置于P(S)和V(S)原語之間。必須成對使用P和V原語:遺漏P原語則不能保證互斥訪問,遺漏V原語則不能在使用臨界資源之后將其釋放(給其他等待的進(jìn)程);P、V原語不能次序錯(cuò)誤、重復(fù)或遺漏?;コ饽P腿缦拢篜(S)臨界段;V(S)剩余代碼;3/8/2023第3章進(jìn)程管理4、用信號量實(shí)現(xiàn)同步模型為進(jìn)程設(shè)置一個(gè)同步信號量S,其初值為0;在進(jìn)程需要同步的地方分別插入P(S)和V(S)原語。一個(gè)進(jìn)程使用P原語時(shí),則另一進(jìn)程往往使用V原語與之對應(yīng),具體怎么使用要看實(shí)際情況來定。例如,有兩個(gè)進(jìn)程P1、P2,P1的功能是計(jì)算x=a+b的值,a和b是常量,在P1的前面代碼中能得到;P2的功能是計(jì)算y=x+1的值。
P1P2…
…X=a+b;
P(S)
V(S)Y=X+1;…
…3/8/2023第3章進(jìn)程管理3.4.4經(jīng)典同步互斥問題
1、生產(chǎn)者-消費(fèi)者問題生產(chǎn)者-消費(fèi)者問題是最著名的同步問題,它描述一組生產(chǎn)者進(jìn)程向一組消費(fèi)者進(jìn)程提供消息。它們共享一個(gè)有界緩沖池,生產(chǎn)者向其中投放消息,消費(fèi)者從中取得消息。
3/8/2023第3章進(jìn)程管理
生產(chǎn)者和消費(fèi)者之間應(yīng)滿足下列二個(gè)同步條件:
l只有在緩沖池中至少有一個(gè)緩沖區(qū)已存入消息后,消費(fèi)者才能從中提取消息,否則消費(fèi)者必須等待。
l只有緩沖池中至少有一個(gè)緩沖區(qū)是空時(shí),生產(chǎn)者才能把消息放入緩沖區(qū),否則生產(chǎn)者必須等待。
生產(chǎn)者
P(empty);P(mutex);
往buffer中放入一條消息;
V(mutex);V(full);
消費(fèi)者
P(full);P(mutex);從buffer中取出一條消息;
V(mutex);V(empty);3/8/2023第3章進(jìn)程管理2、讀者-寫者問題讀者P(mutex)
readcount=readcount+1Ifreadcount=1thenP(wrt)V(mutex)
讀數(shù)據(jù);P(mutex)readcount=readcount-1ifreadcount=0thenV(wrt); V(mutex);定義信號量
wrt=1
mutex=1 readcount=0寫者
P(wrt)
寫入數(shù)據(jù);
V(wrt)3/8/2023第3章進(jìn)程管理3.5進(jìn)程通信3.5.1通信類型
l低級通信:交換信息量少,如P、V原語,軟中斷信號;
l高級通信:交換信息量大,有消息緩沖、信箱方式、共享存儲區(qū)、管道通信;3/8/2023第3章進(jìn)程管理3.5.2消息緩沖(直接通信)基本原理:由系統(tǒng)管理一組緩沖區(qū),其中每個(gè)緩沖區(qū)可以存放一個(gè)消息。當(dāng)發(fā)送進(jìn)程要發(fā)送消息時(shí),先要向系統(tǒng)申請一個(gè)緩沖區(qū),然后把消息寫進(jìn)去。發(fā)送進(jìn)程利用發(fā)送原語(send)直接把消息發(fā)送給接收進(jìn)程,并將它掛接到接收進(jìn)程的消息緩沖隊(duì)列上。接收進(jìn)程利用接收原語(receive)直接從消息緩沖隊(duì)列中取得消息。此時(shí)要求發(fā)送進(jìn)程和接收進(jìn)程都以顯式的方式提供對方的進(jìn)程標(biāo)識符。
發(fā)送原語:Send(Receiver,message);
接收原語:Receive(Sender,message);3/8/2023第3章進(jìn)程管理3.5.3信箱方式(間接通信)發(fā)送進(jìn)程將消息發(fā)送到某種中間實(shí)體(信箱),接收進(jìn)程從中取得消息。如電子郵件系統(tǒng)。間接通信的使用好處是增加了使用消息的靈活性。發(fā)送者和接收者的關(guān)系可能是一對一、多對一,一對多或多對多。一對一的關(guān)系允許一個(gè)專用通信鏈路用于二個(gè)進(jìn)程間的交互,它能使倆進(jìn)程間交互不受其它進(jìn)程錯(cuò)誤干予的影響,多對一的關(guān)系對客戶/服務(wù)器交互特別有用,一個(gè)進(jìn)程對多個(gè)其它進(jìn)程(用戶)提供服務(wù)。在這種情況信箱經(jīng)常稱作為端口(port)。一對多關(guān)系允許一個(gè)發(fā)送進(jìn)程和多個(gè)接收進(jìn)程交互,這可用來將消息廣播(broadcast)給一組進(jìn)程。
3/8/2023第3章進(jìn)程管理3.5.4共享存儲區(qū)
A正文
A數(shù)據(jù)
A棧
共享區(qū)
B正文
B數(shù)據(jù)
B棧A進(jìn)程虛空間B進(jìn)程虛空間內(nèi)存空間3/8/2023第3章進(jìn)程管理3.5.5管道通信管道是指用于連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程,以實(shí)現(xiàn)它們之間通信的共享文件,又稱為pipe文件。向管道(共享文件)提供輸入的發(fā)送進(jìn)程(即寫進(jìn)程),以字符形式將大量的數(shù)據(jù)送入管道,而接收管道輸出的接收進(jìn)程(即讀進(jìn)程)可從管道中接收數(shù)據(jù)。管道通信是基于文件系統(tǒng)形式的一種通信方式。管道分為無名管道和有名管道兩種類型。無名管道是一個(gè)只存在于打開文件機(jī)構(gòu)中的一個(gè)臨時(shí)文件,從結(jié)構(gòu)上沒有文件路徑名,不占用文件目錄項(xiàng)。無名管道利用系統(tǒng)調(diào)用pipe(fd)創(chuàng)建,它返回兩個(gè)文件描述符:寫文件描述符fd[1]和讀文件描述符fd[0]。寫進(jìn)程通過系統(tǒng)調(diào)用write寫入數(shù)據(jù);讀進(jìn)程采用系統(tǒng)調(diào)用read從管道中讀出內(nèi)容。3/8/2023第3章進(jìn)程管理3.6進(jìn)程調(diào)度3.6.1進(jìn)程調(diào)度的職能
l記錄系統(tǒng)中所有進(jìn)程的有關(guān)情況
l確定分配處理機(jī)的原則
l分配處理機(jī)給進(jìn)程
l從進(jìn)程收回處理機(jī)3.6.2進(jìn)程調(diào)度方式
l剝奪方式(搶占式調(diào)度)
l非剝奪方式(非搶占式調(diào)度)3/8/2023第3章進(jìn)程管理3.6.3進(jìn)程調(diào)度算法
l先來先服務(wù)
l優(yōu)先級調(diào)度
l時(shí)間片輪轉(zhuǎn)法
l多級隊(duì)列法3/8/2023第3章進(jìn)程管理3.7死鎖本節(jié)主要介紹死鎖(deadlock)的概念及其產(chǎn)生的原因,提出死鎖的預(yù)防、避免和檢測方法,以及在死鎖發(fā)生后該如何解除和進(jìn)行系統(tǒng)恢復(fù)。3.7.1死鎖的概念
1、死鎖的定義死鎖是指多個(gè)進(jìn)程因競爭使用資源而形成的一個(gè)僵局(deadlyembrace)。在這個(gè)僵局中,每個(gè)進(jìn)程都占有一定資源,都申請使用已被另一進(jìn)程占用且不能剝奪的資源,所有這些進(jìn)程都進(jìn)入阻塞狀態(tài)而不能繼續(xù)運(yùn)行。
如交通阻塞現(xiàn)象。
3/8/2023第3章進(jìn)程管理2、死鎖產(chǎn)生的原因
●系統(tǒng)資源不足
●進(jìn)程推進(jìn)的順序不合適
●資源分配不當(dāng)
3/8/2023第3章進(jìn)程管理●互斥條件(mutualexclusion)
涉及的資源是非共享的;●不剝奪條件(nopreemption)
不能強(qiáng)行剝奪進(jìn)程擁有的資源;
●保持與等待條件(holdandwait)
進(jìn)程在等待一新資源時(shí)繼續(xù)占有已分配的資源;
●循環(huán)等待條件(circularwait)
存在一種進(jìn)程的循環(huán)鏈,鏈中的每一個(gè)進(jìn)程已獲得的資源同時(shí)被鏈中的下一個(gè)進(jìn)程所請求;3、產(chǎn)生死鎖的必要條件3/8/2023第3章進(jìn)程管理4、死鎖的處理方法●預(yù)防:具體做法是破壞產(chǎn)生死鎖的四個(gè)必要條件之一?!癖苊猓翰皇孪炔扇∠拗迫テ茐漠a(chǎn)生死鎖的條件,而是在資源的動態(tài)分配過程中,用某種方法去防止系統(tǒng)進(jìn)入死鎖狀態(tài),從而避免死鎖的發(fā)生。
●檢測:事先并不采取任何限制,也不檢查系統(tǒng)是否進(jìn)入不安全區(qū),允許死鎖發(fā)生,但可通過檢測機(jī)構(gòu)及時(shí)檢測出死鎖的發(fā)生,并精確確定與死鎖有關(guān)的進(jìn)程和資源。
●解除:與檢測死鎖相配套,用于將進(jìn)程從死鎖狀態(tài)解脫出來。常用的方法是撤消或掛起一些進(jìn)程。以回收一些資源,再將它們分配給處于阻塞狀態(tài)的進(jìn)程,使之轉(zhuǎn)為就緒狀態(tài)。3/8/2023第3章進(jìn)程管理3.7.2死鎖的預(yù)防
死鎖的預(yù)防一般是從破壞導(dǎo)致發(fā)生死鎖的必要條件著手,只要能使四個(gè)必要條件其中的任何一個(gè)不成立,就可防止死鎖。
●破壞互斥條件:改變把獨(dú)享資源變?yōu)楣蚕碣Y源;
●破壞不剝奪條件:主動釋放資源策略和強(qiáng)行剝奪策略;
●破壞保持與等待條件:采用靜態(tài)分配策略;
●破壞循環(huán)等待條件:采用資源的有序申請策略;
3/8/2023第3章進(jìn)程管理3.7.3死鎖的避免要從根本上預(yù)防死鎖是不現(xiàn)實(shí)的,因?yàn)檫@會導(dǎo)致資源使用和進(jìn)程執(zhí)行的低效。事實(shí)上,死鎖的產(chǎn)生跟每個(gè)進(jìn)程動態(tài)申請資源的過程息息相關(guān)。如果能掌握并發(fā)進(jìn)程中與每個(gè)進(jìn)程有關(guān)的資源動態(tài)申請情況,同樣可以避免死鎖的發(fā)生。通過定義兩種狀態(tài):安全狀態(tài)與不安全狀態(tài),分別對應(yīng)于可以避免死鎖和產(chǎn)生死鎖的情況。
3/8/2023第3章進(jìn)程管理1、安全與不安全狀態(tài)
安全狀態(tài)是指在某一時(shí)刻,系統(tǒng)至少存在一個(gè)安全序列<P1,P2,P3,…,Pn>,按照此序列來為每個(gè)進(jìn)程分配所需資源,直到滿足其最大需求,使每個(gè)進(jìn)程都能順利地完成,則稱此時(shí)系統(tǒng)處于安全狀態(tài)。反之,稱之為不安全狀態(tài)。
示例
注意:系統(tǒng)處于安全狀態(tài)并不表示就一定不會出現(xiàn)死鎖。如果按不安全序列分配,就會出現(xiàn)死鎖。3/8/2023第3章進(jìn)程管理2、銀行家算法
一個(gè)銀行家把他的固定資金(capital)借給若干客戶,使這些客戶在滿足對資金的要求后能完成其交易,把所借資金歸還給銀行家。假定客戶分成若干次進(jìn)行借款,每個(gè)客戶預(yù)先說明自己所要求的最大資金量,并每次提出部分資金量申請和獲得分配。如果銀行家滿足了客戶對資金的最大需求量,則該客戶在資金運(yùn)作后,應(yīng)在有限時(shí)間內(nèi)將資金全部歸還銀行家。具體過程如下:①顧客的借款操作依次順序進(jìn)行,直到全部操作完成;②銀行家對顧客的借款操作進(jìn)行判斷,確定其安全性(能否支持顧客借款,直到全部歸還);③如果是安全的,則借款給顧客,否則暫不借款。3/8/2023第3章進(jìn)程管理3、銀行家算法中的數(shù)據(jù)結(jié)構(gòu)
●可利用資源向量Available
●最大需求矩陣Max[n]
●分配矩陣Allocation[n]
●需求矩陣
Need[n]
●進(jìn)程的請求向量
Request[n]
3/8/2023第3章進(jìn)程管理當(dāng)進(jìn)程pi提出資源申請時(shí),系統(tǒng)執(zhí)行下列步驟:
①若Request[i]≤Need[i],轉(zhuǎn)②;否則錯(cuò)誤返回②若Request[i]≤Available,轉(zhuǎn)③;否則進(jìn)程等待③假設(shè)系統(tǒng)分配了資源,則有:
Available=Available-Request[i]; Allocation[i]=Allocation[i]+Request[i]; Need[i]=Need[i]-Request[i]④執(zhí)行安全性算法檢查。若系統(tǒng)新狀態(tài)是安全的,則分配完成,若系統(tǒng)新狀態(tài)是不安全的,則恢復(fù)原狀態(tài),進(jìn)程等待。3/8/2023第3章進(jìn)程管理安全性算法描述如下
(1)設(shè)置兩個(gè)向量
Work
它表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行的各類資源數(shù)目,開始執(zhí)行安全性算法時(shí),Work=Available。
Finish
它表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,讓它運(yùn)行完成,開始時(shí),F(xiàn)inish(i)=False;當(dāng)可以分配給進(jìn)程Pi時(shí),F(xiàn)inish(i)=True。(2)從剩余進(jìn)程集合中找到一個(gè)能滿足下列條件的進(jìn)程。
Finish(i)=False;
Needi≤Work;3/8/2023第3章進(jìn)程管理(3)當(dāng)進(jìn)程Pi獲得資源后,可以順利執(zhí)行完畢,并釋放出分配給它的資源,所以需執(zhí)行
Work=Work+Allocationi; Finish(i)=True; Goto(2);(4)如果所有進(jìn)程的Finish(i)=true,則表示系統(tǒng)處于安全狀態(tài);反之,系統(tǒng)處于不安全狀態(tài)。3/8/2023第3章進(jìn)程管理3.7.4死鎖的解除1、進(jìn)程撤銷可選擇部分或全部撤銷2、進(jìn)程回退3、資源剝奪避免進(jìn)程“饑餓”3/8/2023第3章進(jìn)程管理安全狀態(tài)安全序列:<P2,P1,P3>返回進(jìn)程號總共需求已分配還需剩余P110553P2422P3927進(jìn)程號總共需求已分配還需剩余P110552P2422P3936不安全狀態(tài)無安全序列3/8/2023第3章進(jìn)程管理3.8線程3.8.1線程的概念1.線程的引入
在傳統(tǒng)操作系統(tǒng)中,進(jìn)程是一個(gè)可擁有資源的基本單位,同時(shí)又是一個(gè)可獨(dú)立調(diào)度和分派的基本單位。進(jìn)程作為一個(gè)資源擁有者,在創(chuàng)建、撤消、切換中,系統(tǒng)必須為之付出較大時(shí)空開銷。所以系統(tǒng)中
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Bridging Unit2 Keep Tidy Section B 1a-2b教學(xué)設(shè)計(jì)-2024-2025學(xué)年魯教版五四制(2024)六年級英語上冊
- 2025年非油炸食品項(xiàng)目建議書
- 《永遇樂 京口北固亭懷古》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 第二單元第4課 單元教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- Module 4 DiscoveryReading 教學(xué)設(shè)計(jì) 2024-2025學(xué)年滬教牛津版英語八年級下冊
- 2025年廣州城建職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整
- 第1單元 第1節(jié) 認(rèn)識家庭云 教學(xué)設(shè)計(jì) 2024-2025學(xué)年川教版(219)初中信息技術(shù)九年級上冊
- 2025年二異丙胺項(xiàng)目合作計(jì)劃書
- 2024山東鋁業(yè)有限公司面向中鋁集團(tuán)內(nèi)部招聘25人筆試參考題庫附帶答案詳解
- 第26課《漁家傲(天接云濤連曉霧)》教學(xué)設(shè)計(jì)-2023-2024學(xué)年統(tǒng)編版語文八年級上冊
- 定量包裝商品培訓(xùn)
- 毛戈平-+毛戈平深度報(bào)告:再論毛戈平商業(yè)模式與核心壁壘:個(gè)人IP+化妝學(xué)校+線下服務(wù)
- 第二章美容手術(shù)的特點(diǎn)及其實(shí)施中的基本原則美容外科學(xué)概論講解
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末考試生物試卷含答案
- 2025年“春訓(xùn)”學(xué)習(xí)心得體會例文(3篇)
- 中央2025年公安部部分直屬事業(yè)單位招聘84人筆試歷年參考題庫附帶答案詳解
- 2025年春新北師大版物理八年級下冊課件 第六章 質(zhì)量和密度 第二節(jié) 物質(zhì)的密度
- 2025年春新外研版(三起)英語三年級下冊課件 Unit4第1課時(shí)Startup
- 2025年職業(yè)教案編寫指南:教師技巧
- 2024年股權(quán)轉(zhuǎn)讓合同書(含管理層收購條款)
- 2025-2025學(xué)年度第二學(xué)期高二物理教學(xué)計(jì)劃
評論
0/150
提交評論