




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三章 Operating systems processes 進程管理2022/7/13北京科技大學計算機系統與軟計算中心1本章主要內容2022/7/132進程的概念1進程的描述2進程狀態及其轉換3進程控制4進程互斥5進程同步6進程通信7死鎖問題8線程的概念9線程的分類與執行103.1 進程的概念3.1.1 程序的并發執行 程序:算法支配下的計算機指令與數據集合(算法+指令+數據)。 單道程序系統的程序的順序執行:在算法邏輯的引導下依次執行指令的過程。 模塊內順序執行, 模塊間的順序執行, 程序間的順序執行。 順序執行的特點:順序性,封閉性,可再現性 多道程序系統中,程序執行環境發生隨機變化
2、 新任務(程序)的進入和進程的啟動,舊進程的完成退出和任務(程序)的結束,使得內存中的并發進程數處在無法預知的隨機動態變化中。 多道程序執行的特點:交叉性,開放性,不可再現性。 2022/7/1333.1 進程的概念4. 程序的并發(concurrent)執行 所謂程序的并發執行,是指兩個或兩個以上程序同處于開始和結束之間的中間狀態。能夠參與并發執行的程序稱為并發程序。 自中斷引進之后,計算機系統中的程序在執行中往往會被中斷,這就是說內存中的進程們是走走停停,停停走走,你停我走,你走我停,形成若干進程交替執行的局面,我們說這些交替執行的進程是在并發執行。所以,中斷是并發程序實現的必備前提! 2
3、022/7/1343.1 進程的概念 程序并發性 所謂程序并發是指在計算機系統中同時存在多個程序。宏觀上看來,這些程序是同時向前推進的。程序的并發性體現在兩方面:)用戶程序與用戶程序之間并發執行;)用戶程序與操作系統程序之間并發執行。并發與并行 并發與并行是兩個不同的概念。程序并行執行要求微觀上的同時,即在絕對的同一時刻有多個程序同時向前推進。這要求機內有多個CPU,每個CPU上有一個進程(程序),我們說這若干個CPU上的進程是并行的。 程序并發執行不要求微觀上的同時,讓CPU分時地、輪番地運行內存里的每道程序。外部看來,每道程序都有一個CPU(虛CPU)、(似乎)都在同時向前推進,其實機內只
4、有一個CPU。2022/7/1353.1 進程的概念 并發,即多個程序已“起程出發”,各自“走走停?!?,獲得了CPU就“走”,被剝奪了CPU就“停”。 并行,是多個程序從“出發”一直“走”到“結束”,中間從不“停頓”。這樣看來,并行是并發的一個特例。程序的并發執行特點: 若干個邏輯上相互獨立的程序或程序段同時在系統中執行,這些程序的執行在時間上是重疊的,一個程序的執行尚未結束,另一個程序的執行已經開始。 宏觀上:在一個時間段中幾個進程同時處于活動狀態。 微觀上:任一時刻僅有一個進程在處理器上運行。2022/7/1363.1 進程的概念2022/7/1373.1 進程的概念并發程序設計舉例某程序
5、需要循環執行輸入、計算、輸出三個過程。因此可以設計為三個程序段I(input)、P(process)、O(output)2022/7/138p1p2p3t1t2t3程序時間I1P1O1I2P2O2I3P3O33.1 進程的概念程序的并發執行帶來的影響程序的并發執行導致資源共享與資源的競爭,使得程序執行過程不可避免的失去了封閉性和可再現性。程序與計算不再一一對應。程序并發執行的相互制約。2022/7/1393.1 進程的概念3.1.2 進程的定義 這里簡單的定義為,進程是一個正在參與并發執行的程序。它由程序、數據、進程控制塊(PCB)共同組成。PCB記錄了進程停頓時所有的現場信息,作為下次繼續運
6、行的依據。進程是可以并發執行的計算部分。 其它定義:進程是一個獨立的可以調度的活動進程是一個抽象實體,需要分配和釋放資源程序在處理機上執行時的活動稱為進程一個進程是一系列逐一執行的操作2022/7/13103.1 進程的概念進程的執行 進程的執行是進程正在CPU上運行,正在占有CPU。程序的執行是程序調入內存,安排進入進程狀態。只要程序的進程沒有完結,就說該程序正在執行,不管其進程是否正在占有CPU。 進程與程序的聯系與區別:進程是一個動態概念,而程序是一個靜態概念。進程具有并發特征,而程序沒有。進程是競爭計算機系統資源的單位。不同的進程可以對應的是同一個程序。2022/7/13113.1 進
7、程的概念進程特征動態性:進程是程序的執行;并發性:多個進程可同存于內存中,能在一段時間內同時運行;獨立性:獨立運行的基本單位,獨立獲得資源和調度的基本單位;異步性:各進程按各自獨立不可預知的速度向前推進;結構特征:由程序段 、數據段、進程控制塊三部分(PCB)組成。2022/7/13123.2 進程的描述PCB 為了描述一個進程和其它進程以及系統資源的關系和刻畫一個進程在各個不同時期所處的狀態,人們采用了一個與進程相聯系的數據塊,稱為進程控制塊(PCB)系統利用PCB來控制和管理進程,所以PCB是系統感知進程存在的唯一標志.進程與PCB是一一對應的(一個進程有且只有一個PCB).PCB內容描述
8、信息進程標識符(process ID)用戶標識符(user ID)家族關系2022/7/13133.2 進程的描述PCB控制信息當前狀態優先級(priority)代碼執行入口地址程序的外存地址運行統計信息(執行時間、頁面調度)進程間同步和通信;阻塞原因資源管理信息虛擬地址空間的現狀打開文件列表2022/7/13143.2 進程的描述PCBCPU現場保護結構寄存器值(通用、程序計數器PC、狀態PSW,地址包括棧指針)指向賦予該進程的段/頁表的指針。進程上下文 進程上下文包含: 每個進程執行過的、執行時的以及待執行的指令和數據; 在指令寄存器、堆棧、狀態字寄存器等中的內容。進程上下文切換2022/
9、7/13153.2 進程的描述PCB2022/7/1316進程P1執行中斷或進程調用保存進程P1正文至PCB1系統進程執行選取新進程P2,恢復P2上下文新進程P2執行3.2 進程的描述PCB2022/7/13173.2 進程的描述PCB2022/7/13183.2 進程的描述PCB進程空間大小進程空間大小與處理機的位數有關空間的劃分用戶空間:存放操作系統的程序、信息、以及重要的大部分進程信息。系統空間:存放用戶的進程文本和相關信息。2022/7/13193.3 進程狀態及其轉換進程有三種基本狀態:就緒狀態(Ready):存在于處理機調度隊列中的那些進程,它們已經準備就緒,一旦得到CPU,就立即
10、可以運行。這些進程所處的狀態為就緒狀態。運行狀態(Running):正在運行的進程所處的狀態為運行狀態。等待狀態(Wait / Blocked ):若一進程正在等待某一事件發生(如等待輸入輸出工作完成),這時即使給它CPU,它也無法運行,稱該進程處于等待狀態、阻塞、 睡眠、封鎖狀態。 進程在生命消亡前處于且僅處于三種基本狀態之一。2022/7/13203.3 進程狀態及其轉換2022/7/1321運行就緒阻塞進程因某事件(如I/O等待)變成阻塞狀態某事件被解除(I/O完成)時間片用完進程調度3.3 進程狀態及其轉換五狀態進程模型2022/7/13222022/7/13233.4 進程控制定義:
11、系統使用一些具有特定功能的程序段來創建、撤銷進程以及完成進程各狀態間的轉換,從而達到多進程高效率并發執行和協調、實現資源共享的目的。進程控制一般由原語來實現。原語:執行時不可中斷的指令單位。機器指令級功能級2022/7/13243.4 進程控制進程創建系統程序模塊統一創建由父進程創建2022/7/13253.4 進程控制進程撤銷進程已經完成所要求的任務由于某種錯誤導致非正常終止祖先進程要求撤銷某個子進程2022/7/13263.4 進程控制阻塞當一個進程所期待的某一事件尚未出現時,該進程調用阻塞原語將自己阻塞。進程阻塞是進程的自身的一種主動行為。2022/7/1327喚醒處于阻塞狀態的進程是絕
12、不可能叫醒它自己的,它必須由它的合作進程用喚醒原語喚醒它。2022/7/13283.5 進程互斥3.5.1 基本概念3.5.2 互斥的加鎖實現3.5.3 信號量和P,V原語3.5.4 用P,V原語實現進程互斥2022/7/13293.5 進程互斥(基本概念)臨界資源(critical resource):一次僅允許一個進程訪問的資源。如:進程,共享一臺打印機,若讓它們交替使用則得到的結果肯定不是我們希望的。臨界資源可能是硬件,也可能是軟件:變量,數據,表格,隊列等。并發進程對臨界資源的訪問必須作某種限制,否則就可能出與時間有關的錯誤,如:聯網售票。2022/7/13303.5 進程互斥(基本概
13、念)臨界區 把不允許多個并發進程交叉執行的一段程序稱為臨界區(critical region) 臨界區是由屬于不同并發進程的程序段共享某個公用數據或公用變量而引起的。 臨界區是對某一臨界資源而言的,對于不同臨界資源的臨界區,它們之間不存在互斥?;コ?一組并發進程中的一個或多個程序段,因共享某一公有資源而導致他們必須以一個不允許交叉執行的單位執行。即不允許兩個以上的共享該資源的并發進程同時進入臨界區稱為互斥。2022/7/13313.5 進程互斥(基本概念)互斥準則并發進程享有平等的、獨立的競爭共有資源的權利不在臨界區的進程不能阻止其他進程進入臨界區每次最多只有一個進程進入臨界區每個進程能在有限
14、的時間內進入臨界區2022/7/13323.5 進程互斥(鎖)對臨界區加鎖實現互斥當某個進程進入臨界區之后,它將鎖上臨界區,直到退出臨界區。并發進程進入臨界區之前,測試該臨界區是否上鎖。加鎖后臨界區程序描述如下:lock(keyS)unlock(keyS)2022/7/13333.5 進程互斥(鎖)2022/7/1334 設keyS=1為臨界區可用,keyS=0表示臨界區不可以用,那么unlock(keyS)一條語句就可以實現: keyS1 對于lock(keyS)而言,簡單方法:Begin local vrepeatvkeys Until v=1keys0end3.5 進程互斥(信號量)信號
15、量鎖機制存在弊端(多個進程競爭導致同時進入)信號是交通中常用的設備,通過信號顏色變化來實現交通管理在操作系統中,信號量是一個整數,大于等于零表示可使用的資源實體數,小于零表示正在等待使用臨界區的進程數2022/7/13353.5 進程互斥1965年,由荷蘭學者Dijkstra提出(所以P、V分別是荷蘭語的test (proberen) 和increment (verhogen) )信號量的數值僅能由P、V原語來改變。P、V原語與鎖的差異在于進程無法進入臨界區時進入等待隊列,而不是循環測試。2022/7/13363.5 進程互斥P原語操作的主要動作是:sem減1;若sem減1后仍大于或等于零,則
16、進程繼續執行;若sem減1后小于零,則該進程被阻塞后進入與該信號相對應的隊列中,然后轉進程調度。2022/7/13373.5 進程互斥V原語操作的主要動作是:sem加1;若相加結果大于零,則進程繼續執行;若相加結果小于或等于零,則從該信號的等待隊列中喚醒一等待進程,然后再返回原進程繼續執行或轉進程調度。2022/7/13383.5 進程互斥P、V原語實現2022/7/1339P(sem):begin封鎖中斷valsemvalsem-1if valsem0保護當前進程CPU現場 當前進程狀態置為“等待” 將當前進程插入信號sem等待隊列 轉進程調度fi開放中斷 end V(sem):begin封
17、鎖中斷valsemvalsem十1if valsem=0local k 從sem等待隊列中選取一等待進程,將其指針置入k中 將k插入就緒隊列 進程狀態置“就緒”fi開放中斷end3.5 進程互斥利用P,V原語和信號量解決并發進程的互斥問題。2022/7/1340用信號量實現兩并發進程Pa,Pb互斥的描述如下: 設sem為互斥信號量,其取值范圍為(1,0,-1)。其中sem=1表示無進程進入名為S的臨界區,sem=0表示進程Pa或Pb已進入名為S的臨界區,sem=-1表示進程Pa和Pb中,一個進入臨界區,而另一個等待進入臨界區。Pa: P(sem) V(sem): : :Pb : P(sem)
18、V(sem): : :3.6 進程同步同步的概念異步環境下的一組并發進程因直接制約(如互相發送消息等)而進行的互相合作、互相等待,使得各進程按一定的速度推進的過程稱為進程間的同步。具有同步關系的一組并發進程稱為合作進程,合作進程間互相發送的信號稱為消息或事件。 可用過程wait (消息名)表示進程等待某合作進程發來的消息, 用過程signal (消息名)表示向某合作進程發送消息。2022/7/13412022/7/13423.6 進程同步私用信號量 用wait(消息名)與signal(消息名)的方式是實現進程同步的一種方法(見課本p59-60)。 使用信號量的方法也可實現進程間的同步。 把各進
19、程之間發送的消息作為信號量看待。這里的信號量只與制約進程及被制約進程有關而不是與整組并發進程有關。該信號量為私用信號量(Private Semaphore)。 與私用信號量相對應,我們稱互斥時使用的信號量為公用信號量(Public Semaphore)。 2022/7/13433.6 進程同步用P,V原語操作實現同步 步驟:為各并發進程設置私用信號量為私用信號量賦初值利用p、v原語和私用信號量規定各進程的執行順序 2022/7/13443.6 進程同步用P,V原語操作實現同步實例:設進程PA和PB通過緩沖區隊列傳遞數據。PA為發送進程、PB為接收進程。發送過程deposit(data),接收過
20、程remove(data)。且數據的發/接收過程滿足如下條件: 1)在PA至少送一塊數據入一個緩沖區之前,PB不可能從緩沖區中取出數據; 2)PA往緩沖隊列發送數據時,至少有一個緩沖區是空的; 3)由PA發送的數據塊在緩沖隊列中按先進先出(FIFO)方式排列。 描述發送過程deposit(data)和接收過程remove(data)。2022/7/13453.6 進程同步2022/7/1346 1) 設Bufempty為進程PA的私用信號量,Buffull為進程PB的私用信號量; 2) 令Bufempty的初始值為n(n為緩沖隊列的緩沖區個數),Buffull的初始值為0;3) 描述: PA:
21、 deposit(data):begin local xP(Bufempty); 按FIFO方式選擇一個空緩沖區Buf(x);Buf(x)data Buf(x)置滿標記 V(Buffull) end PB:remove(data):begin local x P(Buffull);按FIFO方式選擇一個裝滿數據的緩沖區Buf(x)dataBuf(x)Buf(x)置空標記V(Bufempty)end3.6 進程同步生產者消費者問題計算機系統中的每個進程都可以消費(使用)或生產(釋放)某類資源。這些資源可以是硬件也可以是軟件資源。當某一進程使用某一資源時,該進程為消費者。當某一進程釋放某一資源時,
22、它就相當于生產者。 例子:若干進程通過有限的共享緩沖區交換數據。其中,“生產者”進程不斷寫入,而“消費者”進程不斷讀出;共享緩沖區共有N個;任何時刻只能有一個進程可對共享緩沖區進行操作。2022/7/13473.6 進程同步2022/7/1348(1)消費者想接收數據時,有界緩沖區中至少有一個單元是滿的。設信號量full表示緩沖區中有數據單元,初值為0(2)生產者想發送數據時,有界緩沖區中至少有一個單元是空的。設信號量avail表示緩沖區中空單元數,初值為n(3)有界緩沖區是臨界資源,因此,各個生產者,消費者進程之間都必須互斥。信號量mutex表示可用緩沖區個數,初值為1 3.7 進程通信通信
23、(communication):信息的傳遞 進程間通信:低級通信:只能傳遞狀態和整數值(控制信息),如進程互斥和同步所采用的信號量。速度快,但是傳送信息量小 。高級通信:能夠傳送任意數量的數據 。目的在于交換信息。 2022/7/13493.7 進程通信進程的通信方式(一)主從式(master-servant system)通信主進程可自由地使用從進程的資源或數據; 從進程的動作受主進程的控制; 主從關系是固定的。如:終端控制進程和終端進程。2022/7/13503.7 進程通信進程的通信方式(二)會話式(dialogue system)通信通信進程雙方可分別稱為客戶進程和服務進程。其中,客戶
24、進程調用服務進程提供的服務。客戶進程在使用服務進程所提供的服務之前,必須得到服務進程的許可。服務進程根據客戶進程的要求提供服務,但對所提供服務的控制由服務進程自身完成。客戶進程和服務進程在進行通信時有固定連接關系。2022/7/13512022/7/13523.7 進程通信進程的通信方式(三)消息或郵箱機制無論接收進程是否已準備好接收消息,發送進程都將把所要發送的消息送入緩沖區或郵箱。 只要存在空緩沖區或郵箱,發送進程就可以發送消息。與會話系統不同的是發送進程與接收進程之間無直接連接關系。發送進程與接收進程之間存在有用來存放被傳送消息的緩沖區或郵箱。 2022/7/1353圖 消息的組成圖 緩
25、沖區或郵箱結構3.7 進程通信進程的通信方式(四)共享存儲區方式共享存儲區方式不要求數據移動。兩個需要互相交換信息的進程通過對同一共享數據區(shared memory)的操作來達到互相通信的目的。這個共享數據區是每個互相通信進程的一個組成部分。 2022/7/13543.7 進程通信消息緩沖機制消息緩沖機制中所使用的緩沖區為公用緩沖區,使用消息緩沖機制傳送數據時,兩通信進程必須滿足如下條件: 某進程把消息寫入緩沖區時,禁止其它進程對該緩沖區消息隊列訪問(互斥)。否則,將引起消息隊列的混亂。接收進程正從消息隊列中取消息緩沖時,也應禁止其它進程對該隊列的訪問。當緩沖區中無消息存在時,接收進程不能
26、接收到任何消息。 2022/7/13553.7 進程通信消息緩沖機制2022/7/1356 公用信號量mutex為緩沖區互斥信號量,初值為1。SM為接收進程私用信號量,表示等待接收的消息個數,初值為0。發送進程調用send(m)將消息m送往緩沖區,接收進程調用receive(m)將消息m從緩沖區讀往自己的數據區.send(m)和receive(n)分別描述為:send(m): begin 向系統申請一個消息緩沖區 P(mutex) 將發送區消息m送入新申請的消息緩沖區 把消息緩沖區掛入接收進程的稍息隊列 V(mutex) V(SM) end receive(n): begin P(SM) P(
27、mutex) 摘下消息隊列中的消息n 將消息n從緩沖區復制到接收區 釋放緩沖區 V(mutex) End3.7 進程通信郵箱通信郵箱通信就是由發送進程申請建立一與接收進程鏈接的郵箱。發送進程把消息送往郵箱,接收進程從郵箱中取出消息,從而完成進程間信息交換。 郵箱由郵箱頭和郵箱體組成。其中郵箱頭描述郵箱名稱、郵箱大小、郵箱方向以及擁有該郵箱的進程名等。郵箱體主要用來存放消息。 2022/7/1357圖 郵箱通信結構3.7 進程通信郵箱通信對于只有一發送進程和一接收進程使用的郵箱,進程間通信應滿足如下條件 :發送進程發送消息時,郵箱中至少要有一個空格能存放該消息。接收進程接收消息時,郵箱中至少要有
28、一個消息存在。 2022/7/13583.7 進程通信實例控制臺通信控制臺終端由:鍵盤控制進程KCP顯示控制進程DCP用戶進程和控制臺終端的通信由:會話控制進程-CCP 過程:2022/7/1359控制臺KCPechobufDCPoutbufinbufCCPP1P2提問響應3.7 進程通信實例控制臺通信KCP和DCP動作2022/7/1360設K-data-Ready和K-data-Empty 分別為鍵盤KP和鍵盤控制進程KCP的私用信號量,其初值為0和1。KCP進程如下:初始化清除所有inbuf和echobufbegin local xP(K-data-Ready)從鍵盤數據傳輸緩沖x中取出
29、字符m記為x.minbuf=(x.m) /將x.m送輸入緩沖區echobuf =(x.m)/將x.m送入顯示緩沖區V(K-data-Empty)End鍵盤動作KP:repeat local xP(K-data-Empty) 把鍵入字符放入數據傳輸緩沖xV(K-data-Ready)Until 終端關閉3.7 進程通信實例控制臺通信KCP和DCP動作2022/7/1361顯示囂控制進程DCP:設D-data-Ready和D-data-Empty分別為DP和DCP的私用信號量且初值為0和1。初始化清除outbuf,echo模式置falsebeginif outbuf滿then receive(k)
30、/*CCP k*/ P(D-data-Empty) 把k送入顯示器數據緩沖區 V(D-data-Ready)else echo模式置true echobuf中字符置入顯示器數據緩沖區fiend顯示器動作DP:repeatif echo模式then 打印顯示器數據緩沖區中字符else P(D-data-Ready) 打印顯示器數據緩沖區中消息 V(D-data-Empty)Until 顯示器關機3.7 進程通信實例控制臺通信CCP和KCP及DCP的接口 2022/7/1362Read(x): /*把inbuf中的所有字符讀到用戶進程數據區x處*/BeginP(inbuf-full)Copy(in
31、buf into x)V(inbuf-empty)endWrite(y): /*把用戶進程y處的消息寫到outbuf中*/BeginP(outbuf-empty)Copy(outbuf from y)V(outbuf-full)endinbuf-full和inbuf-empty分別是CCP和KCP的私用信號量,在過程Send(m)和Read(x)中使用,其初值分別為0和1。outbuf-full和outbuf-empty則是DCP和CCP的私用信號量,在過程receive(k)和write(y)中使用,其初值分別為0和1。3.7 進程通信實例控制臺通信CCP和用戶進程的接口 設備用戶進程向CC
32、P發出的提問用消息組成隊列RQ。各用戶進程把消息送入RQ時,必須互斥操作,否則將引起RQ隊列混亂。因此,設互斥用信號量rq,初值為1。CCP只有在用戶進程提問之后才負責向控制臺轉發提問和向用戶進程轉達控制臺的指示。因此,我們還必須為CCP設置一私用信號量question以計算用戶進程所提出的問題數。信號量question的初值為0。由于各用戶進程在CCP發出回答消息之后,不一定馬上就能處理CCP所發出的回答消息,因而,需設置相應的消息接收隊列SQi。SQi和RQ的關系如圖: 2022/7/1363receive(m): begin P(question) when rq do 從RQ中取出 R
33、eturn(m) end /rq為臨界區名,RQ為提問隊列answer(a,i) begin when sqi do 把a插入到SQI中 V(answer i) end /sqi 為臨界區名,SQI為答案隊列 CPP會話進程如下: local k,m,x,y repeat receive(m) 將消息m的進程號置入k中;將消息m解碼變換到x Write(x); Read(y); 將y編碼到m answer(m,k) until CCP結束2022/7/13643.7 進程通信實例管道管道pipe進程通信的使用例子之一是UNIX系統的管道通信。UNIX系統從System V 開始,提供有名管道和
34、無名管道兩種通信方式,這里介紹無名管道。無名管道為建立管道的進程及其子孫提供一條以比特流方式傳送消息的通信管道。 管道在邏輯上被看作管道文件,在物理上則由文件系統的高速緩沖區構成 。管道按FIFO(先進先出)方式傳送消息,且只能單向傳送消息 。2022/7/13653.7 進程通信實例管道關于管道的操作:UNIX提供的系統調用pipe,可建立一條同步通信管道。其格式為:int fd2;pipe(fd)這里,fd1為寫入端,fd0為讀出端。2022/7/1366寫端fd 1write(fd 1,buf,size)pipefd讀端fd 0read(fd 0,buf,size)3.7 進程通信實例管
35、道2022/7/1367例1:用C語言編寫一個程序,建立一個pipe,同時父進程生成一個子進程,子進程向pipe中寫入一字符串,父進程從pipe中讀出該字符串。 # include main() int x, fd2; char buf30,s30; pipe(fd); /*創建管道*/ while(x=fork() = = -1); /*創建子進程失敗時,循環*/ if(x = = 0) sprintf(buf, ”This is an examplen”); write(fd1,buf,30); /*把buf中字符寫入管道*/ exit(0); else wait(0);read(fd0,
36、s,30); /*父進程讀管道中字符*/printf(“%s”,s); 2022/7/13683.8 死鎖問題死鎖定義所謂死鎖,是指各并發進程彼此互相等待對方所擁有的資源,且這些并發進程在得到對方的資源之前不會釋放自己所擁有的資源。 2022/7/1369q3.8 死鎖問題死鎖起因計算機系統中存在許多獨占資源,如硬件資源:磁帶機、繪圖儀等軟件資源:進程表、臨界區等為保證有效使用獨占資源,必須經歷:申請資源,若資源不可用,則申請者進入等待狀態使用資源歸還資源當一個進程需要獨占多個資源,而操作系統允許多個進程并發共享系統資源時,可能會出現進程永遠處于等待狀態的現象(死鎖)2022/7/13703.
37、8 死鎖問題產生死鎖的必要條件:互斥條件:并發進程所要求和占有的資源是不能同時被兩個以上進程使用或操作的,進程對它所需要的資源進行排它性控制。不可剝奪條件:進程所獲得的資源在未使用完畢之前,不能被其它進程強行剝奪,而只能由獲得該資源的進程自己釋放。部分分配(占有還需):進程每次申請它所需要的一部分資源,在等待新資源的同時,繼續占用已分配到的資源。環路條件:存在一種進程循環鏈,鏈中每一個進程已獲得的資源同時被下一個進程所請求。2022/7/13713.8 死鎖問題死鎖的排除方法方法資源分配策略各種可能模式主要優點主要缺點預防Prevention保守的;寧可資源閑置1.一次請求所需全部資源;2.資
38、源剝奪;3.資源按序申請. 適用于作突發式處理的進程,不必剝奪;適用于狀態可以保存和恢復的資源;可以在編譯時(而不必在運行時)就進行檢查效率低,進程初始化時間延長; 剝奪次數過多,多次對資源重新起動;不便靈活申請新資源避免Avoidance是“預防”和“檢測”的折衷尋找可能的安全的運行順序不必進行剝奪必須知道將來的資源需求;進程可能會長時間阻塞檢測Detection寬松的;只要允許,就分配資源定期檢查死鎖是否已經發生不延長進程初始化時間;允許對死鎖進行現場處理通過剝奪解除死鎖,造成損失2022/7/13723.9 線程線程的引入: 引入進程的目的是為了使多個程序并發執行,以改善資源利用率、提高系統吞吐量。 引入線程則是為了減少進程并發執行時所付出的上下文切換開銷。線程的定義:有時稱輕
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海海事大學工程熱力學課件第12章 制冷循環
- 心律失常診斷及治療講課件
- 菏澤醫學??茖W?!毒C合性公園規劃設計》2023-2024學年第二學期期末試卷
- 鄭州輕工業大學《教師口語藝術》2023-2024學年第二學期期末試卷
- 廊坊衛生職業學院《農業經營學》2023-2024學年第二學期期末試卷
- 浙江傳媒學院《中國傳統美術理論研究》2023-2024學年第二學期期末試卷
- 信陽農林學院《分子醫學技能2》2023-2024學年第二學期期末試卷
- 焦作大學《財稅大數據風控綜合實驗系統》2023-2024學年第二學期期末試卷
- 湖北開放職業學院《現代交換原理與技術實驗》2023-2024學年第二學期期末試卷
- 教育政策對特殊教育資源的傾斜
- SF-36生活質量調查表(SF-36-含評分細則)
- 畜禽生產概論-形考任務3-國開(HB)-參考資料
- 人類普遍交往與世界歷史的形成發展
- 2024年濟源市六年級下學期調研語文試卷含答案
- 隱龍山墓園規劃方案
- 礦燈管理工培訓課件
- 村醫培訓死因監測課件
- 玻璃幕墻清洗施工方案
- 管理授權手冊7.28
- lcd制造工藝流程
- 2024屆北京市石景山區七年級生物第二學期期末學業水平測試模擬試題含解析
評論
0/150
提交評論