學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > 操作系統(tǒng)基礎(chǔ)知識(shí) >

操作系統(tǒng)臨界區(qū)分為幾個(gè)部分原理是什么

時(shí)間: 加城1195 分享

  操作系統(tǒng)臨界資源是指一次只能被一個(gè)進(jìn)程所占用的資源,那么具體運(yùn)行過(guò)程是怎樣的呢?下面由學(xué)習(xí)啦小編為大家整理了操作系統(tǒng)臨界資源的相關(guān)知識(shí),希望對(duì)大家有幫助。

  對(duì)于臨界區(qū)的訪問(wèn)過(guò)程分為四個(gè)部分:

  1.進(jìn)入?yún)^(qū):查看臨界區(qū)是否可訪問(wèn),如果可以訪問(wèn),則轉(zhuǎn)到步驟二,否則進(jìn)程會(huì)被阻塞

  2.臨界區(qū):在臨界區(qū)做操作

  3.退出區(qū):清除臨界區(qū)被占用的標(biāo)志

  4.剩余區(qū):進(jìn)程與臨界區(qū)不相關(guān)部分的代碼

  互斥的要求:

  必須強(qiáng)制實(shí)施互斥,即一次只允許一個(gè)進(jìn)程進(jìn)入臨界區(qū)。一個(gè)在非臨界區(qū)停止的程序不能干涉其他程序。有限等待,即決不允許需要訪問(wèn)臨界區(qū)的進(jìn)程被無(wú)限延遲的情況,即死鎖或餓死,有空讓進(jìn),臨界區(qū)空閑時(shí),請(qǐng)求程序可進(jìn),對(duì)相關(guān)進(jìn)程的執(zhí)行速度和處理器的速度沒(méi)有任何要求和限制。一個(gè)進(jìn)程駐留在臨界區(qū)的時(shí)間必須是有限的。

  互斥的實(shí)現(xiàn):

  軟件的方法:由并發(fā)執(zhí)行進(jìn)程擔(dān)任這個(gè)責(zé)任

  機(jī)器指令:減少開(kāi)銷,但不能通用

  2.補(bǔ)充資料:操作系統(tǒng)實(shí)現(xiàn)臨界區(qū)互斥的基本方法

  硬件實(shí)現(xiàn)方法

  中斷禁用

  單處理器中并發(fā)進(jìn)程不能重疊只能交替,一個(gè)進(jìn)程一直運(yùn)行到調(diào)用系統(tǒng)服務(wù)或被中斷。保證互斥只需保證一個(gè)進(jìn)程不被中斷

  缺點(diǎn):一長(zhǎng)時(shí)間中斷禁止,中斷效率會(huì)降低。二不能用于多處理結(jié)構(gòu)中

  專用機(jī)器指令

  用于保證訪問(wèn)的原子性。1、比較和交換指令(compare and swap)、2、Exchange指令

  機(jī)器指令方法的特點(diǎn):

  1、適合在單處理器或共享內(nèi)存的多處理器上的任何數(shù)目的進(jìn)程

  2、非常簡(jiǎn)單且易于證明

  3、可用于支持多個(gè)臨界區(qū),可用自己的變量定義

  缺點(diǎn)

  1、忙等待,進(jìn)程等待進(jìn)入臨界區(qū),仍然會(huì)繼續(xù)消耗CPU的時(shí)間

  2、可能饑餓,當(dāng)需要等待程序進(jìn)入時(shí),某些可能被無(wú)限拒絕

  3、可能死鎖,低優(yōu)先級(jí)的進(jìn)程占用高優(yōu)先級(jí)的進(jìn)程所需的資源

  信號(hào)量實(shí)現(xiàn)方法

  解決并發(fā)問(wèn)題基本原理

  兩個(gè)或多個(gè)進(jìn)程可以通過(guò)簡(jiǎn)單的信號(hào)進(jìn)行合作,一個(gè)進(jìn)程可以被迫在某一個(gè)位置停止,直到它接到某一個(gè)特定的信號(hào)。復(fù)雜的合作需求都可以通過(guò)適當(dāng)?shù)男盘?hào)結(jié)構(gòu)完成。只需要一個(gè)特殊的變量(整數(shù)型):稱為信號(hào)量

  信號(hào)量的三個(gè)操作

  1、信號(hào)量s可以初始化成非負(fù)數(shù)

  用于互斥:s=1

  用于同步:s>=0

  2、semWait(s)進(jìn)程請(qǐng)求分配一個(gè)資源,操作使信號(hào)量減1,若為負(fù)。進(jìn)程阻塞。否則繼續(xù)執(zhí)行

  3、semSignal(s)進(jìn)程釋放一個(gè)資源,操作使信號(hào)量加1,若小于或等于0.則阻塞的進(jìn)程被解除阻塞

  信號(hào)量的使用規(guī)則

  1、semWait和seSignal必須成對(duì)出現(xiàn)

  互斥時(shí),位于同一進(jìn)程,臨界區(qū)的前后

  同步時(shí),交錯(cuò)出現(xiàn)在兩個(gè)合作進(jìn)程內(nèi)

  2、多個(gè)seWait次序不能顛倒,否則可能導(dǎo)致死鎖

  3、用于同步的semWait應(yīng)出現(xiàn)在用于互斥的semSignal之前

  4、多個(gè)semSigal次序可以任意

  5、在進(jìn)程對(duì)信號(hào)量減1之前無(wú)法提前知道該信號(hào)量是否會(huì)被阻塞

  6、當(dāng)進(jìn)程對(duì)一個(gè)信號(hào)量加1后。另一個(gè)進(jìn)程會(huì)被喚醒,兩個(gè)進(jìn)程繼續(xù)并發(fā)運(yùn)行

  7、在向信號(hào)量發(fā)出信號(hào)后,不需要知道是否有另一個(gè)進(jìn)程在正在等待,被解除阻塞的進(jìn)程數(shù)量或者沒(méi)有或者是1

  管程實(shí)現(xiàn)方法

  信號(hào)量為實(shí)施互斥和進(jìn)程間合作提供了強(qiáng)大靈活的工具,但存在難點(diǎn)。即semWait和semSignal操作可能分布在整個(gè)程序中,很難看出整體效果,因此提出管程(Monitor),一個(gè)程序設(shè)計(jì)語(yǔ)言結(jié)構(gòu),可以鎖定任何對(duì)象,提供與信號(hào)量相同的功能,更易于控制

  使用信號(hào)的管程

  定義:管程由一個(gè)或多個(gè)進(jìn)程、一個(gè)初始化序列和局部數(shù)據(jù)組成的軟件模塊

  特點(diǎn):

  1、局部數(shù)據(jù)變量只能被管程的過(guò)程訪問(wèn),任何外部過(guò)程都不能訪問(wèn)

  2、一個(gè)進(jìn)程通過(guò)調(diào)用管程的一個(gè)過(guò)程進(jìn)入管程

  3、在任何時(shí)候、只能有一個(gè)進(jìn)程在管程中執(zhí)行,調(diào)用管程的其他任何程序都被阻塞

  管程的幾個(gè)要素

  1、管程中的共享變量在外部不可見(jiàn),只能通過(guò)管程內(nèi)所說(shuō)明的過(guò)程間接訪問(wèn)

  2管程必須互斥進(jìn)入:管程中的數(shù)據(jù)變量每次只能被一個(gè)進(jìn)程訪問(wèn),保證數(shù)據(jù)完整性

  3、管程通常用來(lái)管理資源,應(yīng)當(dāng)沒(méi)有進(jìn)程等待隊(duì)伍、相應(yīng)的等待及喚醒

  4、Q進(jìn)去管程等待時(shí),釋放管程互斥權(quán),P進(jìn)入管程,喚醒Q

  P等待Q繼續(xù),直到Q退出或等待

  P等待Q繼續(xù),直到P退出或等待

  規(guī)定喚醒為進(jìn)程中最后一個(gè)操作

  利

3974838