版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二章第二章 進(jìn)程管理進(jìn)程管理n進(jìn)程的基本概念進(jìn)程的基本概念n進(jìn)程與程序的區(qū)別進(jìn)程與程序的區(qū)別n進(jìn)程控制進(jìn)程控制n進(jìn)程同步進(jìn)程同步n進(jìn)程通信進(jìn)程通信n線程線程臨沂師范學(xué)院信息學(xué)院2.1進(jìn)程的基本概念進(jìn)程的基本概念n程序在并發(fā)環(huán)境中的執(zhí)行過程程序在并發(fā)環(huán)境中的執(zhí)行過程n資源分配和獨(dú)立運(yùn)行的基本單位資源分配和獨(dú)立運(yùn)行的基本單位臨沂師范學(xué)院信息學(xué)院程序的順序執(zhí)行程序的順序執(zhí)行n一個(gè)有四條語句的程序段:一個(gè)有四條語句的程序段:S1:a:=x+2;S2:b:=y+4;S3:c:=a+b;S4:d:=c+b;臨沂師范學(xué)院信息學(xué)院程序的順序執(zhí)行程序的順序執(zhí)行臨沂師范學(xué)院信息學(xué)院S1S2S3S4程序順序執(zhí)行的
2、特征程序順序執(zhí)行的特征n順序性順序性n封閉性封閉性n可再現(xiàn)性可再現(xiàn)性臨沂師范學(xué)院信息學(xué)院n順序性:順序性:處理機(jī)處理機(jī)的操作嚴(yán)格按照程序所規(guī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,即每一個(gè)操作必須在下一定的順序執(zhí)行,即每一個(gè)操作必須在下一操作之前結(jié)束。操作之前結(jié)束。n封閉性:程序在封閉環(huán)境下執(zhí)行,結(jié)果不封閉性:程序在封閉環(huán)境下執(zhí)行,結(jié)果不受外界因素影響。受外界因素影響。n可再現(xiàn)性:只要環(huán)境和初始條件相同,程可再現(xiàn)性:只要環(huán)境和初始條件相同,程序重復(fù)執(zhí)行時(shí)總得到相同結(jié)果。序重復(fù)執(zhí)行時(shí)總得到相同結(jié)果。臨沂師范學(xué)院信息學(xué)院程序并發(fā)執(zhí)行程序并發(fā)執(zhí)行n一個(gè)有四條語句的程序段:一個(gè)有四條語句的程序段:S1:a
3、:=x+2;S2:b:=y+4;S3:c:=a+b;S4:d:=c+b;臨沂師范學(xué)院信息學(xué)院程序的并發(fā)執(zhí)行程序的并發(fā)執(zhí)行臨沂師范學(xué)院信息學(xué)院S1S2S3S4程序并發(fā)執(zhí)行的特征程序并發(fā)執(zhí)行的特征n間斷性間斷性 共享、合作、制約導(dǎo)致:共享、合作、制約導(dǎo)致: 執(zhí)行執(zhí)行-暫停暫停-執(zhí)行執(zhí)行n失去封閉性失去封閉性 資源狀態(tài)由多程序改變資源狀態(tài)由多程序改變n不可再現(xiàn)性不可再現(xiàn)性 相同環(huán)境和初始條件,重復(fù)執(zhí)相同環(huán)境和初始條件,重復(fù)執(zhí)行結(jié)果不同行結(jié)果不同臨沂師范學(xué)院信息學(xué)院程序程序A 程序程序BL1: L2: N:=N+1 PRINT (N);goto L1 N:=0; goto L2設(shè)共享變量設(shè)共享變量N初
4、值為初值為5,則會(huì)產(chǎn)生,則會(huì)產(chǎn)生3種執(zhí)行結(jié)果:種執(zhí)行結(jié)果:6,6,05,0,15,6,0臨沂師范學(xué)院信息學(xué)院進(jìn)程的特征進(jìn)程的特征n結(jié)構(gòu)特征結(jié)構(gòu)特征n動(dòng)態(tài)性動(dòng)態(tài)性n并發(fā)性并發(fā)性n獨(dú)立性獨(dú)立性n異步性異步性臨沂師范學(xué)院信息學(xué)院進(jìn)程的結(jié)構(gòu)特征進(jìn)程的結(jié)構(gòu)特征n進(jìn)程結(jié)構(gòu)進(jìn)程結(jié)構(gòu)臨沂師范學(xué)院信息學(xué)院PCB進(jìn)程控制塊程序段數(shù)據(jù)段動(dòng)態(tài)特征的集中反映描述要完成的功能操作對(duì)象及工作區(qū)進(jìn)程的動(dòng)態(tài)性進(jìn)程的動(dòng)態(tài)性n進(jìn)程最基本的特征是動(dòng)態(tài)性進(jìn)程最基本的特征是動(dòng)態(tài)性n進(jìn)程的生命周期:進(jìn)程由創(chuàng)建而產(chǎn)生,由進(jìn)程的生命周期:進(jìn)程由創(chuàng)建而產(chǎn)生,由調(diào)度而執(zhí)行,由撤消而消亡的過程。調(diào)度而執(zhí)行,由撤消而消亡的過程。臨沂師范學(xué)院信息學(xué)院n
5、并發(fā)性:多個(gè)進(jìn)程同在內(nèi)存中,且能在一并發(fā)性:多個(gè)進(jìn)程同在內(nèi)存中,且能在一段時(shí)間內(nèi)同時(shí)運(yùn)行。段時(shí)間內(nèi)同時(shí)運(yùn)行。n獨(dú)立性:進(jìn)程是一個(gè)能獨(dú)立運(yùn)行、獨(dú)立分獨(dú)立性:進(jìn)程是一個(gè)能獨(dú)立運(yùn)行、獨(dú)立分配資源、獨(dú)立接受調(diào)度的基本單位。配資源、獨(dú)立接受調(diào)度的基本單位。n異步性:進(jìn)程按各自獨(dú)立的、不可預(yù)知的異步性:進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。速度向前推進(jìn)。臨沂師范學(xué)院信息學(xué)院進(jìn)程定義進(jìn)程定義n進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過程,是系統(tǒng)進(jìn)行進(jìn)程是進(jìn)程實(shí)體的運(yùn)行過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位。資源分配和調(diào)度的基本單位。臨沂師范學(xué)院信息學(xué)院進(jìn)程和程序的關(guān)系進(jìn)程和程序的關(guān)系n進(jìn)程是一個(gè)動(dòng)態(tài)概念,程序是一個(gè)靜態(tài)概
6、進(jìn)程是一個(gè)動(dòng)態(tài)概念,程序是一個(gè)靜態(tài)概念念n進(jìn)程具有并行特征,程序沒有進(jìn)程具有并行特征,程序沒有n進(jìn)程是競(jìng)爭(zhēng)資源的基本單位進(jìn)程是競(jìng)爭(zhēng)資源的基本單位n一個(gè)程序?qū)?yīng)多個(gè)進(jìn)程,一個(gè)進(jìn)程為多個(gè)一個(gè)程序?qū)?yīng)多個(gè)進(jìn)程,一個(gè)進(jìn)程為多個(gè)程序服務(wù)程序服務(wù)臨沂師范學(xué)院信息學(xué)院進(jìn)程的三種基本狀態(tài)進(jìn)程的三種基本狀態(tài)n就緒狀態(tài)就緒狀態(tài)n執(zhí)行狀態(tài)執(zhí)行狀態(tài)n阻塞狀態(tài)阻塞狀態(tài)臨沂師范學(xué)院信息學(xué)院就緒態(tài)就緒態(tài)n進(jìn)程已經(jīng)分配了除處理機(jī)以外的所有必要進(jìn)程已經(jīng)分配了除處理機(jī)以外的所有必要資源,只要再獲得處理機(jī)就能夠執(zhí)行的狀資源,只要再獲得處理機(jī)就能夠執(zhí)行的狀態(tài)。態(tài)。n這樣的進(jìn)程可能有多個(gè),通常排成一個(gè)隊(duì)這樣的進(jìn)程可能有多個(gè),通常排成一
7、個(gè)隊(duì)列,稱就緒隊(duì)列。列,稱就緒隊(duì)列。臨沂師范學(xué)院信息學(xué)院執(zhí)行態(tài)執(zhí)行態(tài)n已經(jīng)獲得已經(jīng)獲得CPU,正在運(yùn)行。,正在運(yùn)行。n在單處理機(jī)系統(tǒng)只有一個(gè)進(jìn)程處于執(zhí)行狀在單處理機(jī)系統(tǒng)只有一個(gè)進(jìn)程處于執(zhí)行狀態(tài)。多處理機(jī)系統(tǒng)則有多個(gè)進(jìn)程處于執(zhí)行態(tài)。多處理機(jī)系統(tǒng)則有多個(gè)進(jìn)程處于執(zhí)行狀態(tài)。狀態(tài)。臨沂師范學(xué)院信息學(xué)院阻塞態(tài)阻塞態(tài)n正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時(shí)無正在執(zhí)行的進(jìn)程由于發(fā)生某事件而暫時(shí)無法繼續(xù)執(zhí)行時(shí),放棄處理機(jī)而進(jìn)入的狀態(tài),法繼續(xù)執(zhí)行時(shí),放棄處理機(jī)而進(jìn)入的狀態(tài),又稱等待狀態(tài)。又稱等待狀態(tài)。n引起阻塞的事件:請(qǐng)求引起阻塞的事件:請(qǐng)求I/O,申請(qǐng)緩存。,申請(qǐng)緩存。臨沂師范學(xué)院信息學(xué)院進(jìn)程的基本狀態(tài)轉(zhuǎn)換進(jìn)程的
8、基本狀態(tài)轉(zhuǎn)換臨沂師范學(xué)院信息學(xué)院就緒堵塞執(zhí)行進(jìn)程調(diào)度進(jìn)程調(diào)度進(jìn)程調(diào)度I/O完成I/O請(qǐng)求時(shí)間片完掛起狀態(tài)掛起狀態(tài)n引入原因:引入原因:(1)終端用戶請(qǐng)求終端用戶請(qǐng)求(2)父進(jìn)程請(qǐng)求父進(jìn)程請(qǐng)求(3)負(fù)荷調(diào)節(jié)需要負(fù)荷調(diào)節(jié)需要(4)操作系統(tǒng)的需要操作系統(tǒng)的需要臨沂師范學(xué)院信息學(xué)院掛起引起的狀態(tài)轉(zhuǎn)換掛起引起的狀態(tài)轉(zhuǎn)換靜止?fàn)顟B(tài)靜止?fàn)顟B(tài) 掛起狀態(tài)掛起狀態(tài) 非掛起狀態(tài)非掛起狀態(tài)臨沂師范學(xué)院信息學(xué)院活動(dòng)狀態(tài)活動(dòng)狀態(tài)有掛起狀態(tài)的進(jìn)程狀態(tài)圖有掛起狀態(tài)的進(jìn)程狀態(tài)圖臨沂師范學(xué)院信息學(xué)院執(zhí)行執(zhí)行活動(dòng)就緒活動(dòng)就緒靜止堵塞靜止堵塞活動(dòng)堵塞活動(dòng)堵塞靜止就緒靜止就緒掛起掛起激活激活調(diào)度調(diào)度掛起掛起I/OI/O請(qǐng)求請(qǐng)求激活激活掛
9、起掛起釋放釋放釋放釋放進(jìn)程控制塊進(jìn)程控制塊n進(jìn)程結(jié)構(gòu)進(jìn)程結(jié)構(gòu)臨沂師范學(xué)院信息學(xué)院PCB進(jìn)程控制塊程序段數(shù)據(jù)段進(jìn)程控制塊進(jìn)程控制塊nPCB是是OS中最重要的記錄型結(jié)構(gòu)。中最重要的記錄型結(jié)構(gòu)。nOS用用PCB對(duì)并發(fā)進(jìn)程進(jìn)行管理和控制。對(duì)并發(fā)進(jìn)程進(jìn)行管理和控制。nPCB是進(jìn)程存在的唯一標(biāo)志。是進(jìn)程存在的唯一標(biāo)志。nPCB常駐內(nèi)存。常駐內(nèi)存。nOS專門開辟專門開辟PCB區(qū)將所有的區(qū)將所有的PCB組織成若組織成若干個(gè)鏈表或隊(duì)列。干個(gè)鏈表或隊(duì)列。臨沂師范學(xué)院信息學(xué)院PCB的結(jié)構(gòu):結(jié)構(gòu)體的結(jié)構(gòu):結(jié)構(gòu)體nFor example:定義一個(gè)學(xué)生的自然信息:定義一個(gè)學(xué)生的自然信息:臨沂師范學(xué)院信息學(xué)院姓名 性別班級(jí)
10、專業(yè)出生年 月 日結(jié)構(gòu)體結(jié)構(gòu)體(structure)定義一個(gè)結(jié)構(gòu):定義一個(gè)結(jié)構(gòu):struct Student char name20; char sex12; DATE birthday; char speciality20; char class10; ; typedef struct Student STUDENT;臨沂師范學(xué)院信息學(xué)院PCB中的信息中的信息(1)進(jìn)程標(biāo)識(shí)符進(jìn)程標(biāo)識(shí)符(2)處理機(jī)狀態(tài)處理機(jī)狀態(tài)(3)進(jìn)程調(diào)度信息進(jìn)程調(diào)度信息(4)進(jìn)程控制信息進(jìn)程控制信息臨沂師范學(xué)院信息學(xué)院PCB中的信息之一中的信息之一n進(jìn)程標(biāo)識(shí)符進(jìn)程標(biāo)識(shí)符(1)內(nèi)部標(biāo)識(shí)符內(nèi)部標(biāo)識(shí)符 進(jìn)程唯一的數(shù)字編號(hào),給進(jìn)
11、程唯一的數(shù)字編號(hào),給OS使用。使用。(2)外部標(biāo)識(shí)符外部標(biāo)識(shí)符 由字母、數(shù)字組成,給用戶使用。由字母、數(shù)字組成,給用戶使用。臨沂師范學(xué)院信息學(xué)院PCB中的信息之二中的信息之二n處理機(jī)狀態(tài)處理機(jī)狀態(tài)處理機(jī)中主要的寄存器:處理機(jī)中主要的寄存器:(1)通用寄存器通用寄存器 8-32個(gè),暫存信息用個(gè),暫存信息用(2)指令計(jì)數(shù)器指令計(jì)數(shù)器 要訪問的下一條指令地址要訪問的下一條指令地址(3)程序狀態(tài)字程序狀態(tài)字PSW 條件碼、執(zhí)行方式、中斷屏蔽條件碼、執(zhí)行方式、中斷屏蔽標(biāo)志標(biāo)志(4)用戶棧指針用戶棧指針 用戶進(jìn)程擁有的系統(tǒng)棧,存放過程和用戶進(jìn)程擁有的系統(tǒng)棧,存放過程和系統(tǒng)調(diào)用參數(shù)及調(diào)用地址系統(tǒng)調(diào)用參數(shù)及調(diào)
12、用地址臨沂師范學(xué)院信息學(xué)院PCB中的信息之三中的信息之三n進(jìn)程調(diào)度信息進(jìn)程調(diào)度信息(1)進(jìn)程狀態(tài))進(jìn)程狀態(tài)(2)進(jìn)程優(yōu)先級(jí))進(jìn)程優(yōu)先級(jí)(3)與調(diào)度算法有關(guān)信息)與調(diào)度算法有關(guān)信息(4)事件)事件 如:阻塞原因如:阻塞原因臨沂師范學(xué)院信息學(xué)院PCB中的信息之四中的信息之四n進(jìn)程控制信息進(jìn)程控制信息(1)程序和數(shù)據(jù)地址)程序和數(shù)據(jù)地址(2)進(jìn)程同步和通信機(jī)制)進(jìn)程同步和通信機(jī)制(3)資源清單:除)資源清單:除CPU之外的所需資源與已之外的所需資源與已經(jīng)分配資源清單經(jīng)分配資源清單(4)鏈接指針:本進(jìn)程)鏈接指針:本進(jìn)程PCB所在隊(duì)列的下一所在隊(duì)列的下一個(gè)地址。個(gè)地址。臨沂師范學(xué)院信息學(xué)院知道了知道了
13、PCB中的信息之后要思考中的信息之后要思考n為什么程序并發(fā)執(zhí)行有不可再現(xiàn)性的缺點(diǎn)?而進(jìn)為什么程序并發(fā)執(zhí)行有不可再現(xiàn)性的缺點(diǎn)?而進(jìn)程有可再現(xiàn)性?程有可再現(xiàn)性?程序并發(fā)執(zhí)行時(shí),多個(gè)程序共享系統(tǒng)中的各種資源,程序并發(fā)執(zhí)行時(shí),多個(gè)程序共享系統(tǒng)中的各種資源,因而這些因而這些資源的狀態(tài)將由多個(gè)程序改變資源的狀態(tài)將由多個(gè)程序改變,致使程序的,致使程序的運(yùn)行已失去了封閉性,某個(gè)程序的運(yùn)行必然受到其他運(yùn)行已失去了封閉性,某個(gè)程序的運(yùn)行必然受到其他程序的影響。由于失去了封閉性,也將導(dǎo)致不再現(xiàn)性。程序的影響。由于失去了封閉性,也將導(dǎo)致不再現(xiàn)性。進(jìn)程在并發(fā)執(zhí)行方式下,它的運(yùn)行呈現(xiàn)進(jìn)程在并發(fā)執(zhí)行方式下,它的運(yùn)行呈現(xiàn)“走
14、走停停走走停?!钡囊?guī)律,當(dāng)它停下來時(shí),要求有一個(gè)數(shù)據(jù)結(jié)構(gòu)的規(guī)律,當(dāng)它停下來時(shí),要求有一個(gè)數(shù)據(jù)結(jié)構(gòu)PCB來來記錄進(jìn)程的當(dāng)前狀態(tài)記錄進(jìn)程的當(dāng)前狀態(tài)(及時(shí)保護(hù)它的運(yùn)行現(xiàn)場(chǎng),以保(及時(shí)保護(hù)它的運(yùn)行現(xiàn)場(chǎng),以保證在其恢復(fù)運(yùn)行時(shí)可以證在其恢復(fù)運(yùn)行時(shí)可以正確的正確的接著向下執(zhí)行)接著向下執(zhí)行)臨沂師范學(xué)院信息學(xué)院CPU Switch From Process to ProcessPCB的組織方式的組織方式(1)鏈接方式)鏈接方式把統(tǒng)一狀態(tài)的把統(tǒng)一狀態(tài)的PCB,用其中的鏈接字鏈接成,用其中的鏈接字鏈接成一個(gè)隊(duì)列。如:就緒隊(duì)列、阻塞隊(duì)列(根一個(gè)隊(duì)列。如:就緒隊(duì)列、阻塞隊(duì)列(根據(jù)不同阻塞原因)、空白隊(duì)列。據(jù)不同阻塞
15、原因)、空白隊(duì)列。(2)索引方式)索引方式建立就緒索引表、阻塞索引表等。把索引表建立就緒索引表、阻塞索引表等。把索引表在內(nèi)存的首地址放在內(nèi)存的專用單元中。在內(nèi)存的首地址放在內(nèi)存的專用單元中。臨沂師范學(xué)院信息學(xué)院鏈接方式鏈接方式臨沂師范學(xué)院信息學(xué)院空閑隊(duì)列指針阻塞隊(duì)列指針就緒隊(duì)列指針執(zhí)行指針PCB1 4PCB2 3PCB3 0PCB4 8PCB5PCB6 7PCB7 9PCB8 0PCB9 11索引方式索引方式臨沂師范學(xué)院信息學(xué)院執(zhí)行指針就緒表指針阻塞表指針PCB1PCB2PCB3PCB4PCB5PCB6PCB72.2進(jìn)程控制進(jìn)程控制n進(jìn)程管理最基本功能是進(jìn)程管理最基本功能是進(jìn)程控制進(jìn)程控制n進(jìn)
16、程控制任務(wù):進(jìn)程控制任務(wù):進(jìn)程的創(chuàng)建、終止、進(jìn)程狀態(tài)的轉(zhuǎn)變等進(jìn)程的創(chuàng)建、終止、進(jìn)程狀態(tài)的轉(zhuǎn)變等n進(jìn)程控制一般由進(jìn)程控制一般由OS內(nèi)核內(nèi)核來實(shí)現(xiàn)。來實(shí)現(xiàn)。臨沂師范學(xué)院信息學(xué)院進(jìn)程圖進(jìn)程圖臨沂師范學(xué)院信息學(xué)院ACBEFHGD進(jìn)程的創(chuàng)建進(jìn)程的創(chuàng)建n原語原語CREAT()按下述步驟創(chuàng)建一個(gè)新進(jìn)程:()按下述步驟創(chuàng)建一個(gè)新進(jìn)程:原語:是由若干條指令構(gòu)成,完成一個(gè)特定功能的一原語:是由若干條指令構(gòu)成,完成一個(gè)特定功能的一個(gè)過程。個(gè)過程。原語:原語是一種規(guī)模相當(dāng)小的程序,被定義在原語:原語是一種規(guī)模相當(dāng)小的程序,被定義在OS的的底層,它的運(yùn)行過程不可分隔。底層,它的運(yùn)行過程不可分隔。(1)申請(qǐng)空白)申請(qǐng)空白
17、PCB(2)為新進(jìn)程分配資源)為新進(jìn)程分配資源(3)初始化進(jìn)程控制塊)初始化進(jìn)程控制塊(4)將新進(jìn)程插入就緒隊(duì)列)將新進(jìn)程插入就緒隊(duì)列臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院引起進(jìn)程終止的事件引起進(jìn)程終止的事件n正常結(jié)束正常結(jié)束n異常結(jié)束異常結(jié)束越界錯(cuò)誤、保護(hù)錯(cuò)、非法指令越界錯(cuò)誤、保護(hù)錯(cuò)、非法指令n外界干預(yù)外界干預(yù)操作員或操作員或OS干預(yù)、被父進(jìn)程終止、父進(jìn)程終干預(yù)、被父進(jìn)程終止、父進(jìn)程終止止臨沂師范學(xué)院信息學(xué)院進(jìn)程的終止過程進(jìn)程的終止過程n從從PCB集合中檢索出該進(jìn)程的集合中檢索出該進(jìn)程的PCB,從中,從中讀出該進(jìn)程的狀態(tài)。讀出該進(jìn)程的狀態(tài)。n若處于執(zhí)行狀態(tài),終止該進(jìn)程的執(zhí)行,并若處于執(zhí)行狀
18、態(tài),終止該進(jìn)程的執(zhí)行,并置調(diào)度標(biāo)志為真,重新調(diào)度。置調(diào)度標(biāo)志為真,重新調(diào)度。n若有子孫進(jìn)程,將所有子孫進(jìn)程終止。若有子孫進(jìn)程,將所有子孫進(jìn)程終止。n將進(jìn)程全部資源歸還其父進(jìn)程或系統(tǒng)。將進(jìn)程全部資源歸還其父進(jìn)程或系統(tǒng)。n將其將其PCB從所在隊(duì)列(或鏈表)中移出從所在隊(duì)列(或鏈表)中移出臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院進(jìn)程阻塞過程進(jìn)程阻塞過程n由阻塞原語由阻塞原語BLOCK完成完成臨沂師范學(xué)院信息學(xué)院入口保存當(dāng)前進(jìn)程的CPU現(xiàn)場(chǎng)置該進(jìn)程狀態(tài)進(jìn)入等待隊(duì)列轉(zhuǎn)進(jìn)程調(diào)度臨沂師范學(xué)院信息學(xué)院進(jìn)程喚醒過程進(jìn)程喚醒過程n由喚醒原語由喚醒原語WAKEUP來完成來完成臨沂師范學(xué)院信息學(xué)院入口從等待隊(duì)列中摘下
19、被喚醒進(jìn)程置該進(jìn)程為就緒態(tài)進(jìn)入就緒隊(duì)列轉(zhuǎn)進(jìn)程調(diào)度或返回臨沂師范學(xué)院信息學(xué)院注意注意nBLOCK和和WAKEUP是一對(duì)作用相反的原是一對(duì)作用相反的原語。語。n如果在某進(jìn)程中調(diào)用了如果在某進(jìn)程中調(diào)用了阻塞原語阻塞原語,則必須,則必須在與之相合作的另一進(jìn)程中或其他相關(guān)的在與之相合作的另一進(jìn)程中或其他相關(guān)的進(jìn)程中,安排進(jìn)程中,安排喚醒原語喚醒原語,以能喚醒阻塞進(jìn),以能喚醒阻塞進(jìn)程;否則,被阻塞進(jìn)程將會(huì)因不能被喚醒程;否則,被阻塞進(jìn)程將會(huì)因不能被喚醒而長(zhǎng)久地處于阻塞狀態(tài),從而再無機(jī)會(huì)繼而長(zhǎng)久地處于阻塞狀態(tài),從而再無機(jī)會(huì)繼續(xù)運(yùn)行。續(xù)運(yùn)行。臨沂師范學(xué)院信息學(xué)院進(jìn)程的掛起與激活進(jìn)程的掛起與激活n掛起原語:掛起
20、原語:SUSPEND()n激活原話:激活原話:ACTIVE()臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院2.3進(jìn)程同步進(jìn)程同步n進(jìn)程的兩種制約關(guān)系進(jìn)程的兩種制約關(guān)系間接制約:進(jìn)程間由于共享某種系統(tǒng)資源,而間接制約:進(jìn)程間由于共享某種系統(tǒng)資源,而形成的相互制約。形成的相互制約。直接制約:進(jìn)程間由于合作而形成的相互制約直接制約:進(jìn)程間由于合作而形成的相互制約關(guān)系。關(guān)系。臨沂師范學(xué)院信息學(xué)院進(jìn)程A進(jìn)程B進(jìn)程A進(jìn)程B資源資源進(jìn)程的兩大關(guān)系進(jìn)程的兩大關(guān)系n互斥互斥n同步同步臨沂師范學(xué)院信息學(xué)院互斥(間接作用):互斥(間接作用):mutual exclusionn由于各進(jìn)程要求共享資源,而有些資源需由于各進(jìn)
21、程要求共享資源,而有些資源需要互斥使用,因此各進(jìn)程間競(jìng)爭(zhēng)使用這些要互斥使用,因此各進(jìn)程間競(jìng)爭(zhēng)使用這些資源,進(jìn)程的這種關(guān)系為進(jìn)程的互斥。資源,進(jìn)程的這種關(guān)系為進(jìn)程的互斥。臨沂師范學(xué)院信息學(xué)院臨界資源:臨界資源:critical resourcen系統(tǒng)中某些資源一次只允許一個(gè)進(jìn)程使用,系統(tǒng)中某些資源一次只允許一個(gè)進(jìn)程使用,稱這樣的資源為臨界資源或互斥資源。稱這樣的資源為臨界資源或互斥資源。臨沂師范學(xué)院信息學(xué)院同步(直接作用)同步(直接作用):synchronismn指系統(tǒng)中多個(gè)進(jìn)程中發(fā)生的事件存在某種指系統(tǒng)中多個(gè)進(jìn)程中發(fā)生的事件存在某種時(shí)序關(guān)系,需要相互合作,共同完成一項(xiàng)時(shí)序關(guān)系,需要相互合作,共
22、同完成一項(xiàng)任務(wù)。任務(wù)。具體說,一個(gè)進(jìn)程運(yùn)行到某一點(diǎn)時(shí)具體說,一個(gè)進(jìn)程運(yùn)行到某一點(diǎn)時(shí)要求另一伙伴進(jìn)程為它提供消息,在未獲要求另一伙伴進(jìn)程為它提供消息,在未獲得消息之前,該進(jìn)程處于等待狀態(tài)。得消息之前,該進(jìn)程處于等待狀態(tài)。臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院與時(shí)間有關(guān)的錯(cuò)誤與時(shí)間有關(guān)的錯(cuò)誤n例例1:民航售票:民航售票票數(shù):票數(shù):XA進(jìn)程進(jìn)程: B進(jìn)程:進(jìn)程:if x0 thenif x0 thenx:=x-1 x:=x-1臨沂師范學(xué)院信息學(xué)院與時(shí)間有關(guān)的錯(cuò)誤與時(shí)間有關(guān)的錯(cuò)誤n例例2:交通流量統(tǒng)計(jì):交通流量統(tǒng)計(jì)車輛數(shù):車輛數(shù):SL1 中斷處理程序:中斷處理程序:s:=0;s:=s+1Delay(
23、600);Write(s);Goto L1臨沂師范學(xué)院信息學(xué)院臨界區(qū)(臨界段)臨界區(qū)(臨界段)n在每個(gè)進(jìn)程中訪問臨界資源的那段程序在每個(gè)進(jìn)程中訪問臨界資源的那段程序總結(jié)總結(jié):只要進(jìn)程當(dāng)中有訪問臨界資源的語句,:只要進(jìn)程當(dāng)中有訪問臨界資源的語句,那么這些語句就是臨界區(qū)那么這些語句就是臨界區(qū)n進(jìn)程必須互斥進(jìn)入臨界區(qū)進(jìn)程必須互斥進(jìn)入臨界區(qū)臨沂師范學(xué)院信息學(xué)院訪問臨界區(qū)的循環(huán)進(jìn)程描述訪問臨界區(qū)的循環(huán)進(jìn)程描述repeatuntil false;臨沂師范學(xué)院信息學(xué)院進(jìn)入?yún)^(qū)臨界區(qū)退出區(qū)剩余區(qū)檢查臨界資源是否能訪問將臨界區(qū)標(biāo)志設(shè)為未訪問同步機(jī)制遵循的原則同步機(jī)制遵循的原則n空閑讓進(jìn)空閑讓進(jìn)n忙則等待忙則等待n
24、有限等待有限等待n讓權(quán)等待讓權(quán)等待如何在如何在OS內(nèi)實(shí)現(xiàn)這些同步原則??jī)?nèi)實(shí)現(xiàn)這些同步原則?臨沂師范學(xué)院信息學(xué)院信號(hào)量機(jī)制信號(hào)量機(jī)制n信號(hào)量(信號(hào)量(Semaphore:旗語):旗語)n是一種數(shù)據(jù)結(jié)構(gòu)是一種數(shù)據(jù)結(jié)構(gòu)n信號(hào)量的值與相應(yīng)資源的使用情況有關(guān)信號(hào)量的值與相應(yīng)資源的使用情況有關(guān)n信號(hào)量的值僅由信號(hào)量的值僅由P、V操作改變操作改變是荷蘭文字中是荷蘭文字中“使用資源使用資源” 和和“歸還資源歸還資源”的的首字母首字母臨沂師范學(xué)院信息學(xué)院整型信號(hào)量整型信號(hào)量n整型數(shù)整型數(shù)P操作(操作(wait)原語)原語V操作(操作(signal)原語)原語臨沂師范學(xué)院信息學(xué)院SnP(s): while s=0
25、 do no-op s:=s-1;nV(s): s:=s+1;臨沂師范學(xué)院信息學(xué)院整型信號(hào)量機(jī)制執(zhí)行過程整型信號(hào)量機(jī)制執(zhí)行過程臨沂師范學(xué)院信息學(xué)院臨界區(qū)臨界區(qū)P1P(S)V(S)整型信號(hào)量的特點(diǎn)整型信號(hào)量的特點(diǎn)nwait(S)和和signal(s)是原子操作是原子操作n只要信號(hào)量只要信號(hào)量S=0,就不斷測(cè)試,不滿足,就不斷測(cè)試,不滿足“同步機(jī)制規(guī)則同步機(jī)制規(guī)則”中的讓權(quán)等待中的讓權(quán)等待臨沂師范學(xué)院信息學(xué)院記錄型信號(hào)量記錄型信號(hào)量n記錄型結(jié)構(gòu),包含兩個(gè)數(shù)據(jù)項(xiàng):記錄型結(jié)構(gòu),包含兩個(gè)數(shù)據(jù)項(xiàng):type semaphore=record value:integer; L:list of process;
26、 end臨沂師范學(xué)院信息學(xué)院Value S L ns.value為資源信號(hào)量其初值:某類資源的數(shù)目為資源信號(hào)量其初值:某類資源的數(shù)目nwait操作:申請(qǐng)一個(gè)單位資源操作:申請(qǐng)一個(gè)單位資源Procedure wait(S)Var S:semaphore;beginS.value:=S.value-1;If S.value0 then block(s,L)end臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院臨界區(qū)臨界區(qū)P4wait(S)臨界區(qū)臨界區(qū)P3wait(S)臨界區(qū)臨界區(qū)P2wait(S)臨界區(qū)臨界區(qū)P1wait(S)假設(shè):系統(tǒng)中有三臺(tái)打印機(jī),那么假設(shè):系統(tǒng)中有三臺(tái)打印機(jī),那么S.value=3,
27、有,有四個(gè)并發(fā)的打印進(jìn)程四個(gè)并發(fā)的打印進(jìn)程.s.value:=3-1If s.value0Then block(s,L)end.s.value:=2-1If s.value0Then block(s,L)end.s.value:=1-1If s.value0Then block(s,L)end.s.value:=0-1If s.value0Then block(s,L)endnSignal操作:釋放一個(gè)單位資源操作:釋放一個(gè)單位資源Procedure signal(S)Var S:semaphore;beginS.value:=S.value+1;If S.value=0:表示系統(tǒng)中可用的資源
28、數(shù)量表示系統(tǒng)中可用的資源數(shù)量nS.value=1 and sn=1 then for i:=1 to n do si:=si-1; endfor else當(dāng)發(fā)現(xiàn)第一個(gè)當(dāng)發(fā)現(xiàn)第一個(gè)si1就把該進(jìn)程放入等待隊(duì)列并將其就把該進(jìn)程放入等待隊(duì)列并將其程序計(jì)數(shù)器置于程序計(jì)數(shù)器置于Swait操作的開始位置操作的開始位置 endif臨沂師范學(xué)院信息學(xué)院Ssignal(s1,s2,sn) for i:=1 to n do si:=si+1;將所有等待將所有等待Si的進(jìn)程由等待隊(duì)列取出放入到的進(jìn)程由等待隊(duì)列取出放入到就緒隊(duì)列就緒隊(duì)列endfor;臨沂師范學(xué)院信息學(xué)院一般信號(hào)量集一般信號(hào)量集n一般信號(hào)量集是指同時(shí)需
29、要多種資源、每一般信號(hào)量集是指同時(shí)需要多種資源、每種占用的數(shù)目不同、且可分配的資源還存種占用的數(shù)目不同、且可分配的資源還存在一個(gè)臨界值時(shí)的信號(hào)量處理。在一個(gè)臨界值時(shí)的信號(hào)量處理。n一般信號(hào)量集的基本思路就是在一般信號(hào)量集的基本思路就是在AND型信型信號(hào)量集的基礎(chǔ)上進(jìn)行擴(kuò)充,在一次原語操號(hào)量集的基礎(chǔ)上進(jìn)行擴(kuò)充,在一次原語操作中完成所有的資源申請(qǐng)。作中完成所有的資源申請(qǐng)。臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院用信號(hào)量實(shí)現(xiàn)互斥用信號(hào)量實(shí)現(xiàn)互斥Var mutex:semaphore:=1Begin Parbegin Process1:begin repeat wait(mutex
30、); critical section signal(mutex); remainder section until false; end;臨沂師范學(xué)院信息學(xué)院Process2:begin repeat wait(mutex); critical section signal(mutex); remainder section until false; end;parend臨沂師范學(xué)院信息學(xué)院n在實(shí)現(xiàn)互斥時(shí)應(yīng)注意在實(shí)現(xiàn)互斥時(shí)應(yīng)注意nwait(mutex)和和signal(mutex)必須成對(duì)地必須成對(duì)地出現(xiàn)出現(xiàn)n缺缺wait(mutex)將會(huì)引起系統(tǒng)混亂,不能保將會(huì)引起系統(tǒng)混亂,不能保證對(duì)臨界
31、資源的互斥訪問證對(duì)臨界資源的互斥訪問n缺缺signal(mutex)將會(huì)使該臨界資源永久不將會(huì)使該臨界資源永久不被釋放被釋放臨沂師范學(xué)院信息學(xué)院圖例:初始狀態(tài)圖例:初始狀態(tài)臨沂師范學(xué)院信息學(xué)院初始狀態(tài)初始狀態(tài)mutex:=1沒有并發(fā)進(jìn)程使用臨界區(qū)沒有并發(fā)進(jìn)程使用臨界區(qū)臨界資源臨界資源互斥的進(jìn)程互斥的進(jìn)程一個(gè)進(jìn)程申請(qǐng)臨界資源一個(gè)進(jìn)程申請(qǐng)臨界資源臨沂師范學(xué)院信息學(xué)院mutex:=1沒有并發(fā)進(jìn)程使用臨界區(qū)沒有并發(fā)進(jìn)程使用臨界區(qū)申請(qǐng)成功,進(jìn)程使用臨界資源申請(qǐng)成功,進(jìn)程使用臨界資源臨沂師范學(xué)院信息學(xué)院mutex:=0另一個(gè)進(jìn)程也使用臨界區(qū)另一個(gè)進(jìn)程也使用臨界區(qū)臨沂師范學(xué)院信息學(xué)院mutex:=0申請(qǐng)失敗
32、申請(qǐng)失敗臨沂師范學(xué)院信息學(xué)院mutex:=阻塞隊(duì)列阻塞隊(duì)列-1釋放資源釋放資源臨沂師范學(xué)院信息學(xué)院mutex:=阻塞隊(duì)列阻塞隊(duì)列02.4經(jīng)典進(jìn)程的同步問題經(jīng)典進(jìn)程的同步問題n生產(chǎn)者消費(fèi)者問題生產(chǎn)者消費(fèi)者問題n哲學(xué)家進(jìn)餐問題哲學(xué)家進(jìn)餐問題n讀者寫者問題讀者寫者問題臨沂師范學(xué)院信息學(xué)院經(jīng)典的生產(chǎn)者消費(fèi)者問題經(jīng)典的生產(chǎn)者消費(fèi)者問題臨沂師范學(xué)院信息學(xué)院生產(chǎn)者生產(chǎn)者消費(fèi)者消費(fèi)者放產(chǎn)品放產(chǎn)品取產(chǎn)品取產(chǎn)品一次只可放一個(gè)產(chǎn)品一次只可放一個(gè)產(chǎn)品生產(chǎn)者消費(fèi)者問題生產(chǎn)者消費(fèi)者問題n同步問題:同步問題:P進(jìn)程不能往進(jìn)程不能往“滿滿”的緩沖區(qū)中放產(chǎn)品,設(shè)置的緩沖區(qū)中放產(chǎn)品,設(shè)置信號(hào)量為信號(hào)量為emptyC進(jìn)程不能從進(jìn)程
33、不能從“空空”的緩沖區(qū)中取產(chǎn)品,設(shè)置的緩沖區(qū)中取產(chǎn)品,設(shè)置信息號(hào)為信息號(hào)為full臨沂師范學(xué)院信息學(xué)院消費(fèi)者:消費(fèi)者:Repeat P(full); 從緩沖區(qū)取產(chǎn)品從緩沖區(qū)取產(chǎn)品; V(empty); 消費(fèi)產(chǎn)品消費(fèi)產(chǎn)品;Until false臨沂師范學(xué)院信息學(xué)院生產(chǎn)者:生產(chǎn)者:Repeat 生產(chǎn)一個(gè)產(chǎn)品生產(chǎn)一個(gè)產(chǎn)品; P(empty); 送產(chǎn)品到緩沖區(qū);送產(chǎn)品到緩沖區(qū); V(full);Until falseempty初值為初值為1,full初值為初值為0臨沂師范學(xué)院信息學(xué)院多個(gè)緩沖區(qū)的生產(chǎn)者和消費(fèi)者多個(gè)緩沖區(qū)的生產(chǎn)者和消費(fèi)者臨沂師范學(xué)院信息學(xué)院生產(chǎn)者:生產(chǎn)者:Repeat 生產(chǎn)一個(gè)產(chǎn)品生產(chǎn)一
34、個(gè)產(chǎn)品; P(empty); 往往Buffer(in)里面放產(chǎn)品里面放產(chǎn)品; in:=(in+1) mod n; V(full);Until false多個(gè)緩沖區(qū)的生產(chǎn)者和消費(fèi)者多個(gè)緩沖區(qū)的生產(chǎn)者和消費(fèi)者臨沂師范學(xué)院信息學(xué)院消費(fèi)者:消費(fèi)者:Repeat P(full); 從從buffer(out)里面取產(chǎn)品里面取產(chǎn)品; out:=(out+1) mod n; V(empty); 消費(fèi)產(chǎn)品消費(fèi)產(chǎn)品;Until false思考:要不要對(duì)緩沖池(臨界資源)進(jìn)行互思考:要不要對(duì)緩沖池(臨界資源)進(jìn)行互斥操作?斥操作?臨沂師范學(xué)院信息學(xué)院Producer:begin repeat生產(chǎn)產(chǎn)品生產(chǎn)產(chǎn)品;P(e
35、mpty); P(mutex); Buffer(in):=nextp; in:=(in+1) mod n; V(mutex); V(full); until false; end;臨沂師范學(xué)院信息學(xué)院Consumer:begin repeat P(full); P(mutex); nextc:=Buffer(out); out:=(out+1) mod n; P(mutex); P(empty); 消費(fèi)產(chǎn)品消費(fèi)產(chǎn)品; until false; end;臨沂師范學(xué)院信息學(xué)院注意注意n每個(gè)程序中的每個(gè)程序中的P操作順序不能顛倒。應(yīng)先執(zhí)操作順序不能顛倒。應(yīng)先執(zhí)行對(duì)資源信號(hào)量的行對(duì)資源信號(hào)量的P操作,
36、然后再執(zhí)行對(duì)互操作,然后再執(zhí)行對(duì)互斥信號(hào)量的斥信號(hào)量的P操作,否則可能引起進(jìn)程死鎖。操作,否則可能引起進(jìn)程死鎖。臨沂師范學(xué)院信息學(xué)院經(jīng)典的哲學(xué)家進(jìn)餐問題經(jīng)典的哲學(xué)家進(jìn)餐問題n有五個(gè)哲學(xué)家,他們的生活方式是交替地有五個(gè)哲學(xué)家,他們的生活方式是交替地進(jìn)行思考和進(jìn)餐。哲學(xué)家們共用一張圓桌,進(jìn)行思考和進(jìn)餐。哲學(xué)家們共用一張圓桌,分別坐在周圍的五張椅子上。在圓桌上有分別坐在周圍的五張椅子上。在圓桌上有五個(gè)碗和五支筷子,平時(shí)一個(gè)哲學(xué)家進(jìn)行五個(gè)碗和五支筷子,平時(shí)一個(gè)哲學(xué)家進(jìn)行思考,饑餓時(shí)便試圖取用其左、右最靠近思考,饑餓時(shí)便試圖取用其左、右最靠近他的筷子,只有在他拿到兩支筷子時(shí)才能他的筷子,只有在他拿到兩支
37、筷子時(shí)才能進(jìn)餐。進(jìn)餐完畢,放下筷子又繼續(xù)思考。進(jìn)餐。進(jìn)餐完畢,放下筷子又繼續(xù)思考。臨沂師范學(xué)院信息學(xué)院臨沂師范學(xué)院信息學(xué)院分析分析n筷子是臨界資源,在一段時(shí)間內(nèi)只允許一筷子是臨界資源,在一段時(shí)間內(nèi)只允許一個(gè)哲學(xué)家使用個(gè)哲學(xué)家使用n用一個(gè)信號(hào)量表示一支筷子,由這五個(gè)信用一個(gè)信號(hào)量表示一支筷子,由這五個(gè)信號(hào)量構(gòu)成信號(hào)量組號(hào)量構(gòu)成信號(hào)量組 Var chopstick:array04 of semaphoren所有信號(hào)量被初始化為所有信號(hào)量被初始化為1臨沂師范學(xué)院信息學(xué)院用記錄型信號(hào)量解決哲學(xué)家進(jìn)餐問題用記錄型信號(hào)量解決哲學(xué)家進(jìn)餐問題第第i個(gè)哲學(xué)家的活動(dòng)可描述為個(gè)哲學(xué)家的活動(dòng)可描述為Repeat wa
38、it(chopsticki); wait(chopstick(i+1)mod 5); eat signal(chopsticki); signal(chopstick(i+1)mod 5); think;Until false臨沂師范學(xué)院信息學(xué)院?jiǎn)栴}問題n假如五個(gè)哲學(xué)家同時(shí)饑餓而各自拿起左邊假如五個(gè)哲學(xué)家同時(shí)饑餓而各自拿起左邊的筷子,會(huì)使五個(gè)信號(hào)量均為的筷子,會(huì)使五個(gè)信號(hào)量均為0,當(dāng)他們?cè)?,?dāng)他們?cè)僭噲D拿起右邊筷子時(shí),都將無限期地等待。試圖拿起右邊筷子時(shí),都將無限期地等待。臨沂師范學(xué)院信息學(xué)院解決方法解決方法n至多四個(gè)人同時(shí)拿左的筷子,保證至少有至多四個(gè)人同時(shí)拿左的筷子,保證至少有一個(gè)人可以進(jìn)
39、餐,最終釋放筷子使更多的一個(gè)人可以進(jìn)餐,最終釋放筷子使更多的人進(jìn)餐人進(jìn)餐n僅當(dāng)哲學(xué)家的左右兩支筷子均可用時(shí),才僅當(dāng)哲學(xué)家的左右兩支筷子均可用時(shí),才允許他拿起筷子進(jìn)餐允許他拿起筷子進(jìn)餐n給所有哲學(xué)家編號(hào),奇數(shù)號(hào)的哲學(xué)家先拿給所有哲學(xué)家編號(hào),奇數(shù)號(hào)的哲學(xué)家先拿左邊的筷子,偶數(shù)號(hào)的哲學(xué)家則反之左邊的筷子,偶數(shù)號(hào)的哲學(xué)家則反之臨沂師范學(xué)院信息學(xué)院用用AND型信號(hào)量解決哲學(xué)家進(jìn)餐問題型信號(hào)量解決哲學(xué)家進(jìn)餐問題Var chopstick:Array04 of semaphore:=(1,1,1,1,1)臨沂師范學(xué)院信息學(xué)院第第i個(gè)哲學(xué)家的活動(dòng)個(gè)哲學(xué)家的活動(dòng)Repeat think; Swait(chops
40、tick(i+1)mod 5,chopsticki); eat Ssignal(chopstick(i+1) mod 5,chopsticki); think;Until false;臨沂師范學(xué)院信息學(xué)院讀者寫者問題讀者寫者問題n有兩組并發(fā)進(jìn)程:有兩組并發(fā)進(jìn)程:讀者和寫者,共享一組數(shù)據(jù)區(qū)讀者和寫者,共享一組數(shù)據(jù)區(qū)n要求:要求:允許多個(gè)讀者同時(shí)執(zhí)行讀操作允許多個(gè)讀者同時(shí)執(zhí)行讀操作不允許讀者、寫者同時(shí)操作不允許讀者、寫者同時(shí)操作不允許多個(gè)寫者同時(shí)操作不允許多個(gè)寫者同時(shí)操作臨沂師范學(xué)院信息學(xué)院n如果讀者來:如果讀者來:無讀者、寫者,新讀者可以讀無讀者、寫者,新讀者可以讀有寫者等,但有其它讀者正在讀,
41、則新讀者也有寫者等,但有其它讀者正在讀,則新讀者也可以讀可以讀有寫者寫,新讀者等有寫者寫,新讀者等n如果寫者來:如果寫者來:無讀者,新寫者可以寫無讀者,新寫者可以寫有讀者,新寫者等待有讀者,新寫者等待有其它寫者,新寫者等待有其它寫者,新寫者等待臨沂師范學(xué)院信息學(xué)院Var rmutex,wmutex:semaphore:=1,1; readcount:integer:=0; begin parbegin 讀者:讀者:begin repeat P(rmutex); if readcount=0 then P(wmutex); readcount:=readcount+1; V(rmutex); 執(zhí)
42、行讀操作執(zhí)行讀操作; P(rmutex); readcount:=readcount-1; if readcount=0 then V(wmutex); V(rmutex); until false; end臨沂師范學(xué)院信息學(xué)院寫者:寫者:begin repeatP(wmutex); 執(zhí)行寫操作執(zhí)行寫操作;V(wmutex); until false; end臨沂師范學(xué)院信息學(xué)院2.6進(jìn)程通信進(jìn)程通信n進(jìn)程通信是指進(jìn)程之間的信息交換進(jìn)程通信是指進(jìn)程之間的信息交換n交換的信息量:交換的信息量:一個(gè)狀態(tài)或數(shù)值一個(gè)狀態(tài)或數(shù)值上千個(gè)字節(jié)上千個(gè)字節(jié)臨沂師范學(xué)院信息學(xué)院進(jìn)程通信分類進(jìn)程通信分類1.低級(jí)通信
43、:進(jìn)程的互斥和同步低級(jí)通信:進(jìn)程的互斥和同步2.高級(jí)通信:指用戶可直接利用高級(jí)通信:指用戶可直接利用OS提供的提供的一組一組通信命令通信命令,高效地傳送大量數(shù)據(jù)的一,高效地傳送大量數(shù)據(jù)的一種通信方式。對(duì)用戶透明。種通信方式。對(duì)用戶透明。臨沂師范學(xué)院信息學(xué)院高級(jí)通信分類高級(jí)通信分類n共享存儲(chǔ)器系統(tǒng)共享存儲(chǔ)器系統(tǒng)n消息傳遞系統(tǒng)消息傳遞系統(tǒng)n管道通信管道通信臨沂師范學(xué)院信息學(xué)院共享存儲(chǔ)器系統(tǒng)共享存儲(chǔ)器系統(tǒng)1.共享數(shù)據(jù)結(jié)構(gòu)的通信方式,進(jìn)程之間通過共享數(shù)據(jù)結(jié)構(gòu)的通信方式,進(jìn)程之間通過某種數(shù)據(jù)結(jié)構(gòu),如緩沖池進(jìn)行通信屬于低某種數(shù)據(jù)結(jié)構(gòu),如緩沖池進(jìn)行通信屬于低級(jí)通信方式;級(jí)通信方式;2.共享存儲(chǔ)區(qū)通信方式,為
44、了傳送大量信息,共享存儲(chǔ)區(qū)通信方式,為了傳送大量信息,在存儲(chǔ)器中劃出一塊共享存儲(chǔ)區(qū),進(jìn)程可在存儲(chǔ)器中劃出一塊共享存儲(chǔ)區(qū),進(jìn)程可通過對(duì)共享存儲(chǔ)區(qū)進(jìn)行讀或?qū)憗韺?shí)現(xiàn)通信,通過對(duì)共享存儲(chǔ)區(qū)進(jìn)行讀或?qū)憗韺?shí)現(xiàn)通信,屬于高級(jí)通信方式。屬于高級(jí)通信方式。臨沂師范學(xué)院信息學(xué)院消息傳遞系統(tǒng)消息傳遞系統(tǒng)信息交換的單位是消息或報(bào)文,分成兩種:信息交換的單位是消息或報(bào)文,分成兩種:1.直接通信方式直接通信方式2.間接通信方式間接通信方式計(jì)算機(jī)網(wǎng)絡(luò)中將消息稱為計(jì)算機(jī)網(wǎng)絡(luò)中將消息稱為報(bào)文報(bào)文臨沂師范學(xué)院信息學(xué)院直接通信方式直接通信方式n發(fā)送進(jìn)程直接把消息發(fā)送給目標(biāo)進(jìn)程發(fā)送進(jìn)程直接把消息發(fā)送給目標(biāo)進(jìn)程n發(fā)送進(jìn)程和接收進(jìn)程都以
45、顯式方式分別提發(fā)送進(jìn)程和接收進(jìn)程都以顯式方式分別提供對(duì)方的標(biāo)識(shí)符供對(duì)方的標(biāo)識(shí)符n系統(tǒng)提供兩條通信原語系統(tǒng)提供兩條通信原語Send(Receiver,message); Receive(Sender,message);臨沂師范學(xué)院信息學(xué)院例如:例如:Send(P2,m1); Receive(P1,m1);臨沂師范學(xué)院信息學(xué)院解決生產(chǎn)者消費(fèi)者問題解決生產(chǎn)者消費(fèi)者問題repeat . produce an item in nextp; . Send(consumer,nextp);Until false;Repeat Receive(producer,nextp); . Consumer the i
46、tem in nextc;Until false;臨沂師范學(xué)院信息學(xué)院間接通信方式間接通信方式n進(jìn)程之間的通信需要通過某種中間實(shí)體,進(jìn)程之間的通信需要通過某種中間實(shí)體,該實(shí)體用來暫存發(fā)送進(jìn)程發(fā)送給目標(biāo)進(jìn)程該實(shí)體用來暫存發(fā)送進(jìn)程發(fā)送給目標(biāo)進(jìn)程的消息;接收進(jìn)程則從該實(shí)體中取出對(duì)方的消息;接收進(jìn)程則從該實(shí)體中取出對(duì)方發(fā)送給自己的消息。發(fā)送給自己的消息。n這種中間實(shí)體稱為信箱。這種中間實(shí)體稱為信箱。n消息在信箱中可以安全地保存,只允許核消息在信箱中可以安全地保存,只允許核準(zhǔn)的目標(biāo)用戶隨時(shí)讀取,故可實(shí)現(xiàn)非實(shí)時(shí)準(zhǔn)的目標(biāo)用戶隨時(shí)讀取,故可實(shí)現(xiàn)非實(shí)時(shí)通信。通信。臨沂師范學(xué)院信息學(xué)院信箱的創(chuàng)建和撤消信箱的創(chuàng)建和
47、撤消n進(jìn)程用信箱創(chuàng)建原語來建立一個(gè)新信箱。進(jìn)程用信箱創(chuàng)建原語來建立一個(gè)新信箱。創(chuàng)建者進(jìn)程應(yīng)給出信箱名字、信箱屬性創(chuàng)建者進(jìn)程應(yīng)給出信箱名字、信箱屬性(公用、私用或共享);對(duì)于共享信箱,(公用、私用或共享);對(duì)于共享信箱,還應(yīng)給出共享者的名字。還應(yīng)給出共享者的名字。n用信箱撤消原語來撤消用信箱撤消原語來撤消臨沂師范學(xué)院信息學(xué)院消息的發(fā)送與接收消息的發(fā)送與接收nSend(mailbox,message)將一個(gè)消息發(fā)送到指定信箱將一個(gè)消息發(fā)送到指定信箱nReceive(mailbox,message) 從指定信箱中接收一個(gè)消息從指定信箱中接收一個(gè)消息臨沂師范學(xué)院信息學(xué)院信箱分類信箱分類n私用信箱私用信
48、箱n公用信箱公用信箱n共享信箱共享信箱臨沂師范學(xué)院信息學(xué)院私用信箱私用信箱n用戶進(jìn)程建立,作為該進(jìn)程的一部分。用戶進(jìn)程建立,作為該進(jìn)程的一部分。n擁有者有權(quán)讀消息,其他用戶只能發(fā)送。擁有者有權(quán)讀消息,其他用戶只能發(fā)送。n采用單向通信鏈路。采用單向通信鏈路。n進(jìn)程結(jié)束時(shí)信箱也消失。進(jìn)程結(jié)束時(shí)信箱也消失。臨沂師范學(xué)院信息學(xué)院公用信箱公用信箱n它由它由OS創(chuàng)建創(chuàng)建n提供給系統(tǒng)中的所有核準(zhǔn)進(jìn)程使用。提供給系統(tǒng)中的所有核準(zhǔn)進(jìn)程使用。n進(jìn)程既可發(fā)送也可取出進(jìn)程既可發(fā)送也可取出n采用雙向通信鏈路的信箱來實(shí)現(xiàn)采用雙向通信鏈路的信箱來實(shí)現(xiàn)n系統(tǒng)運(yùn)行期間始終存在系統(tǒng)運(yùn)行期間始終存在臨沂師范學(xué)院信息學(xué)院共享信箱共享
49、信箱n由某進(jìn)程創(chuàng)建,創(chuàng)建時(shí)提供共享進(jìn)程(用由某進(jìn)程創(chuàng)建,創(chuàng)建時(shí)提供共享進(jìn)程(用戶)的名字戶)的名字n信箱的擁有者和共享者,都有權(quán)從信箱中信箱的擁有者和共享者,都有權(quán)從信箱中取走發(fā)送給自己的消息取走發(fā)送給自己的消息臨沂師范學(xué)院信息學(xué)院信箱通信時(shí)發(fā)送和接收進(jìn)程的關(guān)系信箱通信時(shí)發(fā)送和接收進(jìn)程的關(guān)系n一對(duì)一關(guān)系一對(duì)一關(guān)系。建立一條專用的通信鏈路。建立一條專用的通信鏈路。n多對(duì)一關(guān)系多對(duì)一關(guān)系。多個(gè)用戶進(jìn)程與服務(wù)進(jìn)程之間進(jìn)行。多個(gè)用戶進(jìn)程與服務(wù)進(jìn)程之間進(jìn)行交互,又稱客戶交互,又稱客戶/服務(wù)器交互。服務(wù)器交互。n一對(duì)多關(guān)系一對(duì)多關(guān)系。一個(gè)發(fā)送進(jìn)程與多個(gè)接收進(jìn)程進(jìn)行。一個(gè)發(fā)送進(jìn)程與多個(gè)接收進(jìn)程進(jìn)行交互,使發(fā)
50、送進(jìn)程可用廣播形式,向接收者發(fā)送交互,使發(fā)送進(jìn)程可用廣播形式,向接收者發(fā)送消息。消息。n多對(duì)多關(guān)系多對(duì)多關(guān)系。建立一個(gè)公用信箱,多個(gè)進(jìn)程投遞。建立一個(gè)公用信箱,多個(gè)進(jìn)程投遞并取走自己的消息。并取走自己的消息。臨沂師范學(xué)院信息學(xué)院管道通信管道通信n管道通信方式建立在文件系統(tǒng)的基礎(chǔ)上,管道通信方式建立在文件系統(tǒng)的基礎(chǔ)上,利用共享文件來連接兩個(gè)相互通信的進(jìn)程,利用共享文件來連接兩個(gè)相互通信的進(jìn)程,此共享文件稱為管道此共享文件稱為管道(Pipe)。n管道管道是指用于連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)是指用于連接一個(gè)讀進(jìn)程和一個(gè)寫進(jìn)程,以實(shí)現(xiàn)它們之間通信的共享文件。程,以實(shí)現(xiàn)它們之間通信的共享文件。臨沂師范學(xué)院信
51、息學(xué)院臨沂師范學(xué)院信息學(xué)院寫進(jìn)程寫進(jìn)程管道管道讀進(jìn)程讀進(jìn)程管道通信必需的協(xié)調(diào)能力管道通信必需的協(xié)調(diào)能力1.互斥當(dāng)一個(gè)進(jìn)程正在對(duì)管道進(jìn)行讀互斥當(dāng)一個(gè)進(jìn)程正在對(duì)管道進(jìn)行讀/寫操作時(shí),寫操作時(shí),另一進(jìn)程必須等待。另一進(jìn)程必須等待。2.同步當(dāng)寫(輸入)進(jìn)程把一定量的數(shù)據(jù)(如同步當(dāng)寫(輸入)進(jìn)程把一定量的數(shù)據(jù)(如4K)寫入管道后,便去睡眠等待,直到讀(輸)寫入管道后,便去睡眠等待,直到讀(輸出)進(jìn)程取走數(shù)據(jù)后再把它喚醒。當(dāng)讀進(jìn)程發(fā)現(xiàn)出)進(jìn)程取走數(shù)據(jù)后再把它喚醒。當(dāng)讀進(jìn)程發(fā)現(xiàn)管道空時(shí)也應(yīng)睡眠等待,直至寫進(jìn)程將消息寫入管道空時(shí)也應(yīng)睡眠等待,直至寫進(jìn)程將消息寫入管道后,才將它喚醒。管道后,才將它喚醒。3.判別對(duì)方是否存在,只有確定了對(duì)方存在時(shí)方能判別對(duì)方是否存在,只有確定了對(duì)方存在時(shí)方能進(jìn)行通信。進(jìn)行通信。臨沂師范學(xué)院信息學(xué)院2.7線程線程n線程的引入線程的引入n線程與進(jìn)程的對(duì)比線程與進(jìn)程的對(duì)比臨沂師范學(xué)院信息學(xué)院線程的引入線程的引入n進(jìn)程的兩個(gè)基本屬性進(jìn)程的兩個(gè)基本屬性1.資源的擁有者資源的擁有者:給每個(gè)進(jìn)程分配一虛擬地址空間,保存進(jìn)程給每個(gè)進(jìn)程分配一虛擬地址空間,保存進(jìn)程映像,控制一些資源(文件、映像,控制一些資源(文件、I/O設(shè)備),有設(shè)備),有狀態(tài)、優(yōu)先級(jí)、調(diào)度狀態(tài)、優(yōu)先級(jí)、調(diào)度2.調(diào)度單位:調(diào)度單位:進(jìn)程是一個(gè)執(zhí)行軌跡進(jìn)程是一個(gè)執(zhí)行軌跡n以上兩個(gè)屬性構(gòu)成了進(jìn)程并發(fā)執(zhí)行的基礎(chǔ)以上
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 駕校安全生產(chǎn)雙控制度
- 2026上半年黑龍江省退役軍人事務(wù)廳事業(yè)單位招聘3人參考考試試題附答案解析
- 修訂藥品生產(chǎn)管理制度
- 生產(chǎn)訂單信息化管理制度
- 2026青海西寧城西區(qū)西部礦業(yè)集團(tuán)有限公司黨務(wù)工作部門業(yè)務(wù)崗位選聘5人備考考試題庫附答案解析
- 生產(chǎn)員工坐椅管理制度
- 2026江蘇蘇州高新區(qū)獅山商務(wù)創(chuàng)新區(qū)招聘5人參考考試題庫附答案解析
- 安全生產(chǎn)責(zé)任制檢查制度
- 安全生產(chǎn)責(zé)任及追溯制度
- 直立棉生產(chǎn)車間管理制度
- 規(guī)范外賣企業(yè)管理制度
- 2026年公共部門人力資源管理試題含答案
- 2026年中國數(shù)聯(lián)物流備考題庫有限公司招聘?jìng)淇碱}庫有答案詳解
- 2025年大學(xué)醫(yī)學(xué)(人體解剖學(xué))試題及答案
- 2026年中央網(wǎng)信辦直屬事業(yè)單位-國家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心校園招聘?jìng)淇碱}庫參考答案詳解
- DB32/T+5311-2025+港口與道路工程+固化土施工技術(shù)規(guī)范
- 2025年河南農(nóng)業(yè)大學(xué)輔導(dǎo)員考試真題
- 2025鄭州餐飲行業(yè)市場(chǎng)深度調(diào)研及發(fā)展前景與投資前景研究報(bào)告
- 早產(chǎn)的臨床診斷與治療指南(2025年)
- 2025年黑龍江省大慶市檢察官逐級(jí)遴選筆試題目及答案
- JBP計(jì)劃培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論