【我的筆記】進(jìn)程管理(四)鎖、信號(hào)量

1、進(jìn)程的相互作用

(1)① 獨(dú)占式競爭 —— 所競爭的資源通常需要獨(dú)占,eg:CPU、打印機(jī)。

② 協(xié)作式競爭 —— 進(jìn)程間對(duì)共享對(duì)象使用權(quán)的競爭,能夠遺失到對(duì)方的存在。

必須限制對(duì)共享對(duì)象的使用,保證對(duì)a、b修改的原子性。

③ 協(xié)作 —— 知道對(duì)方的存在,且通過相互通信來交換信息、協(xié)調(diào)工作

④ 組合式作用 —— 有協(xié)作、有通信、有共享、有競爭。

(2)歸納:進(jìn)程間的作用 —— 互斥(獨(dú)占、競爭) 、同步(協(xié)作)

① 互斥:需保證獨(dú)愛獨(dú)占式資源的互斥使用。保護(hù)資源,需封閉,用鎖

② 具有同步關(guān)系的進(jìn)程在執(zhí)行時(shí)間上有明確要求的順序。合作,需開放,用信號(hào)量。

生產(chǎn)者和消費(fèi)者問題。

(3)臨界資源(互斥資源):一次只允許一個(gè)進(jìn)程使用的資源。

臨界區(qū):進(jìn)程中訪問臨界資源的程序片段。


2、純軟件實(shí)現(xiàn)(略,見ppt)

五個(gè)例子。

為保證對(duì)臨界資源的互斥訪問,在進(jìn)入臨界區(qū)前需:檢查(是否有別的進(jìn)程在臨界區(qū))、設(shè)置(自己即將進(jìn)入臨界區(qū))

這兩個(gè)操作應(yīng)該是原子的。 --> ①關(guān)中斷 ; ② 在一條指令中完成檢測與設(shè)置操作 ?(均需硬件支持)


3、硬件輔助實(shí)現(xiàn)

(1)關(guān)中斷

異常無法關(guān)閉,可盡量避免;陷入是進(jìn)程自己請求的,不存在插入其他指令的問題;主要關(guān)外部中斷。

進(jìn)臨界區(qū)時(shí)保存中斷狀態(tài),然后關(guān)中斷;出臨界區(qū)時(shí)恢復(fù)中斷狀態(tài)。

(2)特殊指令


4、鎖??

鎖是一種最簡潔的互斥手段,通常用于保護(hù)時(shí)間很短的臨界資源。

用簡單的忙等測試實(shí)現(xiàn)的鎖叫自旋鎖

臨界區(qū)不應(yīng)允許中斷,不應(yīng)出現(xiàn)進(jìn)程切換、自旋鎖不能嵌套使用。


5、信號(hào)量/燈(分析實(shí)例見 ppt,只記錄一點(diǎn)知識(shí)點(diǎn))

(1)鎖保護(hù)的臨界區(qū)必須很小,針對(duì)因資源競爭造成的長等待問題 --> 信號(hào)量

為臨界資源建立狀態(tài)標(biāo)識(shí)和等待隊(duì)列;為臨界區(qū)建立入口P操作和出口V操作。

對(duì)信號(hào)量和等待隊(duì)列的修改也需要保護(hù)(因?yàn)橐彩桥R街資源),一般用鎖

(2)P 中,count 代表資源區(qū)剩的位置;V 中,count代表臨界區(qū)中有的進(jìn)程數(shù)。

若將信號(hào)量初值設(shè)為1,可以實(shí)現(xiàn)互斥:(P1進(jìn)去,P2、P3等待,P1出,V 操作加1,count 為負(fù),就換一個(gè)進(jìn)去)

一個(gè)信號(hào)量可以保護(hù)多個(gè)臨界資源,將信號(hào)量的初值設(shè)為臨界資源的個(gè)數(shù)。若信號(hào)量為 n,則前 n 個(gè) P 操作會(huì)成功,后面的P 操作會(huì)將進(jìn)程掛起,直到被其他 V 操作喚醒。

(3)進(jìn)程同步:控制兩個(gè)進(jìn)程的執(zhí)行順序,確保只有一個(gè)進(jìn)程完成動(dòng)作 A 之后,另一個(gè)進(jìn)程才開始動(dòng)作 B。

將信號(hào)量初值設(shè)為0,V 執(zhí)行了,加過了,P2中進(jìn)行 P 操作,減之后仍>=0,可以執(zhí)行(P1執(zhí)行后 P2可以執(zhí)行)。若 P2先執(zhí)行了 P 操作,S2進(jìn)入等待,等 P1中S1做完后進(jìn)行 V 操作,加了,P2中的 P 就可以成功了。(P2之前必須 P1)。

初值 n(n>0),也可以進(jìn)程同步,動(dòng)作 A 最多比動(dòng)作 B 多做 n次。

(4)總結(jié):

互斥使用時(shí),P、V 操作在同一個(gè)進(jìn)程中;同步使用時(shí),P、V 在不同進(jìn)程匯總。

信號(hào)量——初值1,可以實(shí)現(xiàn)互斥;初值為0,尅實(shí)現(xiàn)同步;初值大于1,可以實(shí)現(xiàn)進(jìn)程間的計(jì)數(shù)同步。

信號(hào) 量規(guī)定了可以超前完成的動(dòng)作數(shù)或者同時(shí)使用資源的進(jìn)程數(shù)。

信號(hào)量 ?>0,表示當(dāng)前可用的資源個(gè)數(shù);<0,絕對(duì)值表示等待資源的進(jìn)程數(shù);=0,表示無可用資源,也無等待資源的進(jìn)程。

PPT 上一堆例子??

信號(hào)量 ucore 實(shí)現(xiàn)。


信號(hào)量題型方法:

首先分析幾個(gè)生產(chǎn)者(進(jìn)程),幾個(gè)消費(fèi)者(進(jìn)程),幾個(gè)緩沖區(qū),幾個(gè)信號(hào)量。

首先解決互斥問題 --> 設(shè)疑個(gè)信號(hào)量初值為1,然后兩個(gè)進(jìn)程均為 P -> S -> V 的結(jié)構(gòu)。然后解決同步問題,幾個(gè)P 和 V 子啊兩個(gè)進(jìn)程中分別放一個(gè),且 V 在下面,P在上面,都在互斥的 PV 外面,找準(zhǔn)信號(hào)量設(shè)成多少。把 V 到 P 的箭頭畫出來進(jìn)行分析。

信號(hào)量 為 n —— 進(jìn)程計(jì)數(shù)同步,A 比 B 最多多做 n 次。


6、睡眠與喚醒

sleep( )將進(jìn)程設(shè)置為睡眠狀態(tài),請求調(diào)度,讓出 CPU,可以帶一個(gè)參數(shù),指定最長睡眠時(shí)間,到時(shí)間進(jìn)程會(huì)自動(dòng)醒來。

wakeup( )喚醒一個(gè)正在睡眠的進(jìn)程,可以帶一個(gè)參數(shù)指出要喚醒的進(jìn)程。

若將等待隊(duì)列與睡眠條件包裝在一起,就形成了一種新的同步機(jī)制 --> 條件變量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,179評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,444評(píng)論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,948評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,185評(píng)論 0 287
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,717評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,602評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,794評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,045評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評(píng)論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,414評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,750評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容

  • ** 本文摘自湯小丹主編《計(jì)算機(jī)操作系統(tǒng)》(第三版)2.3 進(jìn)程同步 ** 在 OS 中引入進(jìn)程后,雖然提高了資源...
    劉帥_閱讀 3,118評(píng)論 0 0
  • 一、 【例3-1-4】在操作系統(tǒng)中,要對(duì)并發(fā)進(jìn)程進(jìn)行同步的原因是 。 A. 進(jìn)程必須在有限的時(shí)間內(nèi)完成 B. 進(jìn)程...
    ZoeyeoZ閱讀 5,019評(píng)論 0 9
  • 又來到了一個(gè)老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問題開始,來談?wù)劜?..
    tangsl閱讀 4,143評(píng)論 0 23
  • 不知道你是不是也有這樣的想法,總會(huì)在某個(gè)瞬間想起那些曾經(jīng)特別想念或者討厭的人。一個(gè)故事一段話一個(gè)場景,總會(huì)多少的勾...
    小溪妹妹閱讀 321評(píng)論 0 1
  • 因?yàn)檫@部小說寫的是當(dāng)下拍賣業(yè)內(nèi)幕且涉及湖南前法院院長“窩案”,加上又改編并上映了同名電視劇,我便湊熱鬧好奇地...
    耕讀老呂閱讀 2,901評(píng)論 2 0