【OS笔记 14】进程同步篇——基本概念
進(jìn)程同步要解決什么問題?
在OS中引入進(jìn)程后,如果不進(jìn)行妥善的管理,必然會(huì)因?yàn)檫@些進(jìn)程對系統(tǒng)資源的無序爭奪而給系統(tǒng)造成混亂。致使每次處理的結(jié)果存在不確定性,即程序運(yùn)行結(jié)果的不可再現(xiàn)性。為保證多個(gè)進(jìn)程能有條不紊地運(yùn)行,在多道程序系統(tǒng)中,必須引入進(jìn)程同步機(jī)制。
一、進(jìn)程同步機(jī)制的主要任務(wù)
進(jìn)程同步機(jī)制的主要任務(wù),是對多個(gè)相關(guān)進(jìn)程在執(zhí)行次序上的協(xié)調(diào),使并發(fā)執(zhí)行的諸進(jìn)程之間能按照一定的規(guī)則(或時(shí)序)共享系統(tǒng)資源,并能很好地合作,從而使程序的執(zhí)行具有可再現(xiàn)性。
二、進(jìn)程之間兩種形式的制約關(guān)系
1. 間接相互制約關(guān)系(互斥關(guān)系)
是指由于共享系統(tǒng)資源,如CPU、I/O設(shè)備等,致使這些并發(fā)執(zhí)行的進(jìn)程形成的相互制約關(guān)系。
2. 直接相互制約關(guān)系(同步關(guān)系)
一個(gè)程序?yàn)榱送瓿赡橙蝿?wù)而建立了多個(gè)進(jìn)程,這些進(jìn)程需要相互合作。直接制約關(guān)系就是源于它們的相互合作,比如需要共享緩沖區(qū)等。
三、臨界資源
(1)定義: 一次僅允許一個(gè)進(jìn)程使用的資源稱為臨界資源。
(2)包括: 慢速設(shè)備(打印機(jī)、磁帶機(jī)等)、共享的變量、數(shù)據(jù)結(jié)構(gòu)、緩沖區(qū)等。
(3)結(jié)論: 諸進(jìn)程間應(yīng)采用互斥方式,實(shí)現(xiàn)對這些資源的共享。
eg 1. 多道系統(tǒng)中,像這種兩個(gè)或多個(gè)進(jìn)程并發(fā)地讀寫一個(gè)共享數(shù)據(jù), 共享數(shù)據(jù)的值取決于最后訪問它的進(jìn)程的執(zhí)行結(jié)果,這種情況稱為 競態(tài)條件(Race condition),要保證對臨界資源的互斥使用。
eg 2. 生產(chǎn)者——消費(fèi)者問題,是一個(gè)經(jīng)典的進(jìn)程同步問題。
所有的生產(chǎn)者和消費(fèi)者進(jìn)程都是以異步方式運(yùn)行的,但它們之間必須保持同步:既不允許消費(fèi)者進(jìn)程到一個(gè)空緩沖區(qū)去取產(chǎn)品,也不允許生產(chǎn)者進(jìn)程向一個(gè)已裝滿產(chǎn)品的緩沖區(qū)投放產(chǎn)品。
四、臨界區(qū)
(1)定義: 每個(gè)進(jìn)程中訪問臨界資源的那段代碼 稱為臨界區(qū)(critical section)
(2) 可以把訪問臨界資源的循環(huán)進(jìn)程描述如下:
進(jìn)入?yún)^(qū): 用于對欲訪問的臨界資源進(jìn)行檢查,看它是否正被訪問。是的話,則本進(jìn)程不能進(jìn)入臨界區(qū),否的話,就可以訪問,并要設(shè)置訪問標(biāo)志。
退出區(qū): 用于將臨界區(qū)正被訪問的標(biāo)志恢復(fù)為未訪問的標(biāo)志。
剩余區(qū): 進(jìn)程中除了進(jìn)入?yún)^(qū)、臨界區(qū)、退出區(qū)以外的代碼都稱為剩余區(qū)。
五、所有同步機(jī)制必須遵循的原則
1 和 2 就是很簡單的互斥原則;
1. 空閑讓進(jìn)
當(dāng)沒有進(jìn)程處于臨界區(qū)時(shí),應(yīng)允許一個(gè)請求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入。
2. 忙則等待
當(dāng)已有進(jìn)程進(jìn)入臨界區(qū)時(shí),其它試圖進(jìn)入的進(jìn)程必須等待。
3. 有限等待
應(yīng)保證每一個(gè)進(jìn)程在有限時(shí)間內(nèi)能進(jìn)入自己的臨界區(qū),避免陷入“死等”狀態(tài)。(可以通過限制其它進(jìn)程進(jìn)入臨界區(qū)的次數(shù)來實(shí)現(xiàn))
4. 讓權(quán)等待
當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī)。(也就是此時(shí)進(jìn)程沒啥工作可做了,只能等到臨界區(qū)允許進(jìn)入才能繼續(xù)下去,所以占著CPU也沒啥意義了,讓出CPU的使用權(quán),繼續(xù)等待資源,就這意思)
總結(jié)
以上是生活随笔為你收集整理的【OS笔记 14】进程同步篇——基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Qt的房贷计算器
- 下一篇: [luogu3505][bzoj2088