版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
進程的控制
目錄2.1前趨圖和程序的執(zhí)行進程的描述進程控制2.22.3進程同步2.4經(jīng)典的進程同步問題2.5線程2.632.3進程控制進程創(chuàng)建進程終止進程的阻塞與喚醒進程的掛起與激活進程控制一般由OS內(nèi)核中的原語來實現(xiàn)。原語是由若干條機器指令組成的,用于完成一定功能的一個過程,是一個不可分割的基本單位。42.3.1操作系統(tǒng)內(nèi)核1、支撐功能原語操作:有若干條機器指令組成的,用于完成一定功能的一個過程。他們是“原子操作”,是一個不可分割的基本單位。原語在執(zhí)行過程中不允許被中斷。內(nèi)核中可能有很多原語,例如實現(xiàn)進程同步的原語等。2、資源管理功能進程管理,存儲器管理,設(shè)備管理2.3進程控制52.3.2進程的創(chuàng)建1、進程圖進程可以創(chuàng)建進程:進程圖是用于描述進程家族關(guān)系的有向樹。父進程,子進程,祖先進程注意:子進程可以繼承父進程所擁有的資源當(dāng)子進程被撤銷時,應(yīng)歸還從父進程那里獲得的資源在撤銷父進程時,也必須撤銷其所有的子進程。(因操作系統(tǒng)而異)2.3進程控制6
2.3.2進程的創(chuàng)建2、引起創(chuàng)建進程的事件(1)用戶登錄(2)作業(yè)調(diào)度:批處理作業(yè)(3)提供服務(wù):打印請求(4)應(yīng)用請求:fork();2.3進程控制72.3.3進程的終止——exit()1、引起進程終止的事件(1)正常結(jié)束(2)異常結(jié)束錯誤:保護錯、越界錯、等待超時等。故障:I/O等(3)外界干預(yù):進程應(yīng)外界請求操作員或OS父進程請求父進程終止(因操作系統(tǒng)而異)。2.3進程控制82.3.4進程的阻塞與喚醒block()wakeup()引起進程阻塞和喚醒的事件(1)請求系統(tǒng)服務(wù):系統(tǒng)不能即刻滿足(2)啟動某種操作:I/O(3)新數(shù)據(jù)尚未到達(4)無新工作可做阻塞和喚醒是相反的過程,有阻塞必須要喚醒2.3進程控制92.3.5進程的掛起與激活suspend()active()1、進程的掛起就緒或阻塞:活動靜止2、進程的激活過程就緒或阻塞:靜止活動2.3進程控制102.4.1進程同步的基本概念1、兩種形式的制約關(guān)系
——資源的共享、進程間的合作(1)間接相互制約關(guān)系(資源共享-互斥)進程之間的執(zhí)行沒有先后關(guān)系(2)直接相互制約關(guān)系(進程間合作-同步)進程之間的執(zhí)行必須有先后關(guān)系2.4進程同步112.4.1進程同步的基本概念2、臨界資源在一段時間內(nèi)只允許一個進程訪問的資源。例如:硬件的打印機,磁帶機等軟件的全局變量等。2.4進程同步122.4.1進程同步的基本概念3、同步機制應(yīng)遵循的規(guī)則(1)空閑讓進。(2)忙則等待。(3)有限等待——防止死等。(4)讓權(quán)等待——讓出CPU的占用權(quán)。2.4進程同步信號量簡介(計數(shù)式信號)例:1個小型公共停車場(允許多人互斥使用)計數(shù)器:初值為停車位最大容量。每進入1車自動減1,每駛出1人自動加1.用戶見到計數(shù)器值>0,可進入停車,否則等待。132.4進程同步142.4.3信號量機制1、信號量概念信號量由1965年Dijkstra(荷蘭人)提出。進程互斥同步工具。整型信號量記錄型信號量AND型信號量信號量集互斥機制同步機制2.4進程同步152.4.3信號量機制2、記錄型信號量記錄型信號量是一個記錄型的數(shù)據(jù)結(jié)構(gòu),包含兩個數(shù)據(jù)項(1)計數(shù)值域(2)等待該信號量的進程隊列首地址信號量說明:semaphore
s
2.4進程同步162.4.3信號量機制2、記錄型信號量——互斥信號量操作-只有wait(s)和signal(s)操作-原語操作
wait(s) 申請一個資源
signal(s) 釋放一個資源
2.4進程同步172.4.3信號量機制2、記錄型信號量——互斥對信號量的操作:wait(s)和signal(s)過程
wait(s):-------->申請資源 s.value=s.value-1if(s.value<0):
block(s.queue
#該進程狀態(tài)置為阻塞狀態(tài),將該進程的PCB
#插入相應(yīng)的阻塞隊列末尾s.queue;注:block為阻塞原語原子過程2.4進程同步182.4.3信號量機制2、記錄型信號量——互斥對信號量的操作:wait(s)和signal(s)過程
signal(s):-------->釋放資源 s.value=s.value+1if(s.value<=0): wakeup(s.queue)
#喚醒相應(yīng)等待隊列s.queue中等待的一個進程
#改變其狀態(tài)為就緒態(tài)注:wakeup為喚醒原語原子過程2.4進程同步2.4.3信號量機制——互斥物理意義s.value>0表示有s.value個資源可用s.value=0表示無資源可用s.value<0|s.value|為該資源阻塞隊列中的進程個數(shù)使用信號量的兩個基本要求只能置一次初值,且初值必須為非負整數(shù)只能進行wait操作與signal操作,其它操作均非法2.4進程同步202.4.4信號量的應(yīng)用1、利用信號量實現(xiàn)進程互斥(1)定義信號量(2)置信號量初始值(3)對信號量的wait操作(4)使用資源(5)對信號量的signal操作2.4進程同步212.4.4信號量的應(yīng)用1、利用信號量實現(xiàn)進程互斥Wait(mutex)P1P2P3臨界區(qū)Wait(mutex)Signal(mutex)Wait(mutex)Signal(mutex)定義mutex信號量,值為1Signal(mutex)2.4進程同步222.4.4信號量的應(yīng)用1、利用信號量實現(xiàn)進程互斥
semaphoremutexmutex.value=1p(): wait(mutex)
使用資源
signal(mutex)wait(mutex)和signal(mutex)一定要成對出現(xiàn)2.4進程同步23S1S2S3semaphorea=0,b=0f1: s1 signal(a)f2: wait(a) s2 signal(b)f3: wait(b) s3ab2.4.4信號量的應(yīng)用2、利用信號量實現(xiàn)前趨關(guān)系2.4進程同步242.4.4信號量的應(yīng)用2、利用信號量實現(xiàn)前趨關(guān)系利用信號量實現(xiàn)同步的要點:(1)一條線設(shè)一個信號量初值為0(2)被箭頭指向的進程在運行之前要進行被限制個數(shù)次wait操作。(3)發(fā)出箭頭的進程結(jié)束后
做限制個數(shù)次signal操作。具體例子具體分析,信號量的初值可能不同。S1S2S3ab2.4進程同步252.4.4信號量的應(yīng)用2、利用信號量實現(xiàn)前趨關(guān)系S1S2S5S3S6S4abcdfgeSemaphorea=b=c=d=e=f=g=0f1: s1 signal(a) signal(b)f2: wait(a) S2 signal(d)f3: wait(b) S3 signal(e)2.4進程同步f4: wait(c) S4 signal(g)f5: wait(e) S5 signal(f)f6: wait(d) wait(f) wait(g) S6262.4.4信號量的應(yīng)用信號量使用要點:(1)對信號量只能執(zhí)行wait、signal操作,且成對出現(xiàn)。(2)互斥:同一個信號量的wait和signal在一個進程里Wait—申請臨界資源,signal—釋放臨界資源(3)同步:同一個信號量的wait和signal在不同進程里Wait--判斷自己等待的消息是否到達Signal—通知伙伴進程可以執(zhí)行了(4)對不同信號量的wait操作的順序很重要!而對不同信號量的signal操作順序無所謂。2.4進程同步醫(yī)生進程患者進程診斷掛號開處方取藥試用信號量機制保證上述兩進程的合作。2.4進程同步醫(yī)生進程患者進程診斷掛號開處方取藥2.4進程同步Number=0Note=0醫(yī)生進程:docter(): wait(number)
診斷
開處方 signal(note)患者進程:patient():
掛號 signal(number) wait(note)
取藥Semaphorenumber=note=0車站售票廳,最多可容納10名購票者進入,當(dāng)售票廳中少于10名購票者時,廳外的購票者可立即進入,否則需在外面等待。若把一個購票者看作一個進程,請回答下列問題:若用信號量機制來管理這些并發(fā)進程時,寫出信號量的初值以及信號量各種取值的含義。根據(jù)所定義的信號量,實現(xiàn)程序。若欲購票者最多為n個人,寫出信號量可能的變化范圍(最大值和最小值)。2.4進程同步1設(shè)信號量用S表示,則其初始值為10。信號量取值的含義:S>0
S的值表示可繼續(xù)進入售票廳的人數(shù)S=0表示售票廳中已有10名顧客(購票者)S<0
|S|的值為等待進入售票廳的人數(shù)2semaphores
s.value=10Pi(i=1,2,…,10):wait(S)
進入售票廳購票退出signal(S)
3最小值為10-n,最大值10。2.4進程同步2.4進程同步
為保證乘客的安全,司機和售票員應(yīng)密切配合協(xié)調(diào)工作。假定初始狀態(tài)為:車輛正在起點站停著車、開著門,等待第一批乘客。當(dāng)發(fā)車時間到,售票員關(guān)好車門后司機可以啟動車輛。若用wait、signal操作來實現(xiàn)司機與售票員之間的協(xié)調(diào)工作,請回答下列問題:(1)司機與售票員之間的關(guān)系是同步還是互斥?解釋之。(2)用wait、signal操作來管理時應(yīng)定義幾個信號量?初值為多少?(3)上述司機與售票員的工作流程中填上適當(dāng)?shù)膚ait操作和signal操作,使他們能安全、協(xié)調(diào)地工作。2.4進程同步(1)司機與售票員之間應(yīng)該同步。為了保證乘客安全,僅當(dāng)售票員關(guān)好車門后司機才能啟動車輛,也只有在車輛到站停穩(wěn)后售票員才能開車門。
(2)用信號量操作管理時應(yīng)區(qū)分兩種不同的消息,故應(yīng)定義兩個信號量door和stop。door表示車門是否關(guān)好,stop表示車是否已到站停車。由于初始狀態(tài)為車尚未始發(fā)、開著門,故door和stop的初值均為“0”。
(3)工作流程修改如下:
售票員進程:conductor():
關(guān)車門signal(door)
售票wait(stop)
開車門司機進程:driver(): wait(door)
啟動車輛
正常行車
到站停車 signal(stop)2.4進程同步
生產(chǎn)者—消費者問題
(1)一個生產(chǎn)者,一個消費者,一個緩沖區(qū)。消費者生產(chǎn)者2.5經(jīng)典進程的同步問題同步問題:
P進程(生產(chǎn)者)不能往“滿”的緩沖區(qū)中放產(chǎn)品,設(shè)置信號量為emptyC進程(消費者)不能從“空”的緩沖區(qū)中取產(chǎn)品,設(shè)置信號量full
empty初值為1,full初值為02.5經(jīng)典進程的同步問題生產(chǎn)者—消費者問題
(1)一個生產(chǎn)者,一個消費者,一個緩沖區(qū)。
P:C:while(true): while(true):
生產(chǎn)一個產(chǎn)品 wait(full)wait(empty) 從緩沖區(qū)取產(chǎn)品
送產(chǎn)品到緩沖區(qū) signal(empty)signal(full)消費產(chǎn)品2.5經(jīng)典進程的同步問題生產(chǎn)者—消費者問題
(1)一個生產(chǎn)者,一個消費者,一個緩沖區(qū)?!璶-1…….…210Producer_1Producer_2Producer_3..Producer_kConsumer_1Consumer_2Consumer_3..Consumer_mm個生產(chǎn)者,k個消費者,1個緩沖池假定緩沖池中有n個緩沖區(qū),每個緩沖區(qū)存放一個消息生產(chǎn)者生產(chǎn)消息,消費者取出消息
緩沖池中每次進一個人。生產(chǎn)者—消費者問題
(2)多個生產(chǎn)者,多個消費者,一個緩沖池。2.5經(jīng)典進程的同步問題生產(chǎn)者在緩沖區(qū)有空間時才能放消息,否則等待消費者在緩沖區(qū)有消息時才能取消息,否則等待生產(chǎn)者P(producer),消費者C(consumer)緩沖區(qū)由多個P和多個C共用,但是緩沖池每次進一個人,使得多個P和多個C需互斥使用該資源,緩沖池是一個臨界資源。互斥同步生產(chǎn)者—消費者問題
(2)多個生產(chǎn)者,多個消費者,一個緩沖池。2.5經(jīng)典進程的同步問題信號量(如empty),初值為n信號量(如full),初值為0在不同進程PV信號量(如mutex)初值為1,在一個進程中PV互斥同步生產(chǎn)者—消費者問題
(2)多個生產(chǎn)者,多個消費者,一個緩沖池。2.5經(jīng)典進程的同步問題semaphoremutex#互斥信號量semaphorefull#緩沖區(qū)里的有消息的個數(shù)semaphoreempty#緩沖區(qū)里空閑個數(shù)mutex.value=1full.value=0empty.value=nproducer();#生產(chǎn)者程序consumer();#消費者程序生產(chǎn)者—消費者問題
(2)多個生產(chǎn)者,多個消費者,一個緩沖池。2.5經(jīng)典進程的同步問題生產(chǎn)者-消費者producer():while(true):
生產(chǎn)過程
wait(empty)wait(mutex)
放入緩沖區(qū)
signal(mutex)signal(full)consumer():while(true):wait(full)wait(mutex)
從緩沖區(qū)取
signal(mutex)signal(empty)
消費生產(chǎn)者—消費者問題
(2)多個生產(chǎn)者,多個消費者,一個緩沖池。2.5經(jīng)典進程的同步問題在生產(chǎn)者—消費者問題中應(yīng)注意:每個程序中實現(xiàn)互斥的wait(mutex)和signal(mutex)必須成對地出現(xiàn)。對資源信號量empty和full的wait和signal操作,同樣需要成對地出現(xiàn),但它們分別處于不同的程序中。在每個程序中的多個wait操作順序不能顛倒。應(yīng)先執(zhí)行對資源信號量的wait操作,然后再執(zhí)行對互斥信號量的wait操作生產(chǎn)者—消費者問題2.5經(jīng)典進程的同步問題432.7.1線程的基本概念1、線程的引入進程的兩個屬性進程是一個擁有資源的獨立單位。進程是一個獨立調(diào)度和分派的基本單位。為使程序能并發(fā)執(zhí)行,系統(tǒng)必須進行以下操作:進程切換:保留當(dāng)前進程的CPU環(huán)境和設(shè)置新選中進程的CPU環(huán)境。缺點:時間空間開銷大,限制并發(fā)度的提高。如何使多個程序并發(fā)執(zhí)行又盡量減少系統(tǒng)開銷呢?將兩個屬性分開2.7線程442.7.1線程的基本概念1、線程的引入進程擁有資源,系統(tǒng)不對之進行頻繁切換線程進程中一條執(zhí)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 秋分溫泉活動策劃方案(3篇)
- 學(xué)校歷史文化管理制度(3篇)
- 2026年聊城市中醫(yī)醫(yī)院“水城優(yōu)才”青年人才引進參考考試題庫及答案解析
- 現(xiàn)代裝飾公司店長管理制度(3篇)
- 2026年度德州市事業(yè)單位公開招聘初級綜合類崗位人員(526人)備考考試題庫及答案解析
- 2026山東事業(yè)單位統(tǒng)考濟南歷城區(qū)屬招聘初級綜合類崗位50人參考考試題庫及答案解析
- 2026浙江興??毓杉瘓F有限公司下屬企業(yè)招聘3人備考考試試題及答案解析
- 2026年甘肅省酒泉民健康復(fù)醫(yī)院招聘考試備考試題及答案解析
- 2026上半年黑龍江伊春市事業(yè)單位招聘262人參考考試題庫及答案解析
- 2026浙江南方水泥有限公司校園招聘備考考試試題及答案解析
- 四川省成都市武侯區(qū)2024-2025學(xué)年七年級上學(xué)期期末生物學(xué)試題(含答案)
- 校園欺凌預(yù)防策略:心理干預(yù)與行為矯正
- 辦公樓物業(yè)安全管理
- 中老年人常見疾病預(yù)防
- 2024基因識別數(shù)據(jù)分類分級指南
- 臨床成人失禁相關(guān)性皮炎的預(yù)防與護理團體標準解讀
- 創(chuàng)新創(chuàng)業(yè)教育學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 河道治理、拓寬工程 投標方案(技術(shù)方案)
- 政治審查表(模板)
- 《最奇妙的蛋》完整版
- SEMI S1-1107原版完整文檔
評論
0/150
提交評論