• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦>學習電腦>操作系統(tǒng)>操作系統(tǒng)基礎(chǔ)知識>

    操作系統(tǒng)臨界資源

    時間: 佳洲1085 分享

      操作系統(tǒng)臨界資源是指一次只能被一個進程所占用的資源,下面由學習啦小編為大家整理了操作系統(tǒng)臨界資源的相關(guān)知識,希望對大家有幫助。

      1.操作系統(tǒng)臨界資源

      簡介

      在操作系統(tǒng)中,進程是占有資源的最小單位(線程可以訪問其所在進程內(nèi)的所有資源,但線程本身并不占有資源或僅僅占有一點必須資源)。但對于某些資源來說,其在同一時間只能被一個進程所占用。這些一次只能被一個進程所占用的資源就是所謂的臨界資源。典型的臨界資源比如物理上的打印機,或是存在硬盤或內(nèi)存中被多個進程所共享的一些變量和數(shù)據(jù)等(如果這類資源不被看成臨界資源加以保護,那么很有可能造成丟數(shù)據(jù)的問題)。

      對于臨界資源的訪問,必須是互訴進行。也就是當臨界資源被占用時,另一個申請臨界資源的進程會被阻塞,直到其所申請的臨界資源被釋放。而進程內(nèi)訪問臨界資源的代碼被成為臨界區(qū)。

      對于臨界區(qū)的訪問過程分為四個部分:

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

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

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

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

      互斥的要求:

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

      互斥的實現(xiàn):

      軟件的方法:由并發(fā)執(zhí)行進程擔任這個責任

      機器指令:減少開銷,但不能通用

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

      硬件實現(xiàn)方法

      中斷禁用

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

      缺點:一長時間中斷禁止,中斷效率會降低。二不能用于多處理結(jié)構(gòu)中

      專用機器指令

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

      機器指令方法的特點:

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

      2、非常簡單且易于證明

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

      缺點

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

      2、可能饑餓,當需要等待程序進入時,某些可能被無限拒絕

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

      信號量實現(xiàn)方法

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

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

      信號量的三個操作

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

      用于互斥:s=1

      用于同步:s>=0

      2、semWait(s)進程請求分配一個資源,操作使信號量減1,若為負。進程阻塞。否則繼續(xù)執(zhí)行

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

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

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

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

      同步時,交錯出現(xiàn)在兩個合作進程內(nèi)

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

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

      4、多個semSigal次序可以任意

      5、在進程對信號量減1之前無法提前知道該信號量是否會被阻塞

      6、當進程對一個信號量加1后。另一個進程會被喚醒,兩個進程繼續(xù)并發(fā)運行

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

      管程實現(xiàn)方法

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

      使用信號的管程

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

      特點:

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

      2、一個進程通過調(diào)用管程的一個過程進入管程

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

      管程的幾個要素

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

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

      3、管程通常用來管理資源,應(yīng)當沒有進程等待隊伍、相應(yīng)的等待及喚醒

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

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

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

      規(guī)定喚醒為進程中最后一個操作

      利

    3593033 主站蜘蛛池模板: 粉嫩国产白浆在线播放| 日韩精品一区二区三区免费视频 | 日韩精品免费一级视频| 久久九九精品国产综合喷水| 日本免费无遮挡吸乳视频电影| 久久人人爽人人爽人人片av高请| 我要c死你小荡货高h视频| 一二三四视频社区在线| 夜夜操免费视频| 亚洲av色无码乱码在线观看| 国产免费插插插| 国产成人在线观看免费网站| 课外辅导的秘密在线观看| 嗨动漫在线观看| 琪琪色原网站在线观看| 亚洲成人在线电影| 日韩精品无码一区二区视频| 丰满少妇作爱视频免费观看 | 奶大灬舒服灬太大了一进一出| 99热99re| 国产福利久久青青草原下载| 调教她的尿孔h导尿| 再深点灬舒服灬太大了添学长| 永久黄网站色视频免费直播| 亚洲va精品中文字幕| 无遮挡全彩口工h全彩| www视频免费看| 国产精品欧美视频另类专区| 黄又色又污又爽又高潮动态图| 向日葵app下载观看免费| 渣男渣女抹胸渣男渣女| 亚洲av永久青草无码精品| 无码人妻一区二区三区av| eeuss影院eeuss天堂| 国产精品一区二区四区| 色天天躁夜夜躁天干天干| 免费人成视频x8x8入口| 欧美巨大精品videos| 久久久精品日本一区二区三区| 女同午夜三级在线观看| 老司机精品视频在线|