深入電腦運行原理之進程的同步與并發(fā)(Operating System四級內(nèi)容)

開篇語

不一樣的名字,相似的內(nèi)容颅湘。這是第四篇關(guān)于操作系統(tǒng)的文章了。前面三篇反響平平栗精,不算內(nèi)容的專業(yè)性過強闯参,大部分簡書讀者看不懂;maybe也有我的名字取得太嚇人有點關(guān)系悲立,所以現(xiàn)在改頭換面鹿寨,換湯不換藥的繼續(xù)來發(fā)表文章,記筆記的同時也希望也希望可以收獲一點關(guān)注薪夕。

前面還有三篇類似的:
計算機四級網(wǎng)絡工程師--《操作系統(tǒng)(Operating System)》重點內(nèi)容學習
計算機四級網(wǎng)絡工程師--《操作系統(tǒng)(Operating System)》重點內(nèi)容學習2
計算機四級網(wǎng)絡工程師--《操作系統(tǒng)(Operating System)》重點內(nèi)容學習3

我很喜歡的一張圖脚草,今天分享出來

正文----并發(fā)與同步

一、進程之間的相互作用:

1原献、進程之間有:相關(guān)進程馏慨,無關(guān)進程
2埂淮、進程之間的關(guān)系有:

  • 進程互斥:一個資源只能被有限的進程訪問,那么當多個進程訪問這個資源的時候写隶,會存在進程互斥
  • 進程同步:進程之間存在遞進關(guān)系倔撞,B進程的能否執(zhí)行,取決于A進程的是否執(zhí)行完成慕趴。所以A 痪蝇、B 進程之間是進程的同步現(xiàn)象。

二冕房、進程互斥:

1霹俺、進程互斥的解決辦法:由競爭的雙方平等協(xié)商、引入進程管理者
2毒费、引入基礎概念 ** 臨界資源:一段時間內(nèi)只允許一個進程進行訪問使用的資源丙唧,比如打印機,比如掃描儀等**

三觅玻、進程同步:

1想际、遵從四個基本原則:

  • 空閑讓進
  • 忙則等待
  • 有限等待
  • 讓權(quán)等待:若進程不進入臨界區(qū),那么就要釋放處理器溪厘,以免陷入“忙等”狀態(tài)胡本,浪費資源。

四畸悬、進程互斥的軟件方法

1侧甫、單標志算法(進入臨界區(qū)的話也就意味著開始占用資源了)

while(turn!=i);
進入臨界區(qū),
turn=j;
進入剩余區(qū);

2蹋宦、雙標志披粟、先檢查算法

while(flag[j]);
flag[i]=true;
進入臨界區(qū),
flag[i]=false;
剩余區(qū)

PS:如果這個算法考慮分式操作系統(tǒng)的事件分片冷冗,絕對GG守屉,如果把上面的算法里面的i j對調(diào),然后你把我賦值為真蒿辙,我把你賦值為真拇泛,兩個進程對一個資源開始哄搶,那就好思灌,直接互斥

3俺叭、雙標志、后檢查算法

flag[i]=true;
while(flag[j]);
臨界區(qū);
flag[i]=false;
剩余區(qū)

PS:講道理泰偿,這個我沒看出太多的內(nèi)涵熄守,不過貌似把上面說到的那個時間分片問題給干掉了。但是還是會有問題,這個點未曾深入柠横,不做多說。

4课兄、先修改牍氛,后檢查,后修改者等待算法

flag[i]=true;
turn=j;  %Tenor Waiting
while(flag[j]&&turn==j);
臨界區(qū)烟阐,flag[i]=false;剩余區(qū)

PS:我已經(jīng)無話可PS

五搬俊、進程互斥的硬件方法

1、TS硬件指令:每個臨界區(qū)都設置公共的變量lock:true 表示被占用蜒茄,每次進入臨界區(qū)之前查詢即可互斥
2唉擂、SWAP指令:每個臨界區(qū)都設置公共的變量lock,初始值為false檀葛,給每個進程設置一個私有變量key玩祟,需要進入臨界區(qū)則與lock交換key 值,可以更好地標識內(nèi)容屿聋。

3空扎、信號量(創(chuàng)始者:Dijkstra)
信號量代表一個資源量的可用量;

0:系統(tǒng)中可用資源的數(shù)目
=0:對應資源用盡润讥,并且目前該資源的對應阻塞隊列沒有等待者
<0:因為該資源不可用而導致的阻塞進程的數(shù)目
這就涉及到操作系統(tǒng)這個內(nèi)容中的一個很大的转锈,很重要的內(nèi)容--PV操作,由原語直接對信號量進行操作楚殿,對進程進行的操作撮慨。

六、經(jīng)典的進程互斥與同步問題

1脆粥、生產(chǎn)者--消費者問題

Just like 我們買iPhone手機一樣的砌溺。你得Apple公司做出來產(chǎn)品,然后放到店子里面变隔,你才能買吧抚吠,然后你買完了的話,店鋪那邊就得告訴Apple弟胀,產(chǎn)能不夠啊楷力,你們要加班繼續(xù)造啦。

此問題模型

這個問題孵户,稍微一分析就知道萧朝,是一個進程同步問題,所以要講一個很重要的原則夏哭,那就是:

進程同步检柬,信號量是按照有爭議的進程數(shù)來決定的,本題就是一個信號量:商店的貨夠不夠用?
進程互斥的話何址,信號量就等于是資源數(shù)了里逆。

因為你想撒,同步問題用爪,是協(xié)作關(guān)系原押,是接力跑。你的人沒到偎血,我就不能動诸衔,至于那個代表你到了的是什么,那就無關(guān)緊要了對不颇玷?管你是棒子還是拍手笨农。
相反的,互斥問題就是競爭關(guān)系了帖渠。獎杯只有一個啊谒亦,你拿了我怎么拿?重要的是結(jié)果空郊,反而過程會被淡化了诊霹。

所以就有了如下的PV操作代碼(PV的定義:P是代表,這個資源渣淳,我用了一個脾还;V是代表,這個資源入愧,哥用完了鄙漏,你們誰要誰拿去,不關(guān)我事):


For Apple:

while(true)
{
  P(Apple_Company_Product)
  Producting
  V(Consumer_iPhone)
}


For us:

while(true)
{
  P(Consumer_iPhone)
  Buying
  V(Apple_Company_Product)
}

上面的代碼的意思是:
蘋果公司部分棺蛛,蘋果公司先在日程上把制作手機的任務標記為完成了怔蚌,然后開工生產(chǎn),做完了就開發(fā)布會旁赊,告訴消費者可以賣腎準備買果了桦踊。

而消費者,先把錢準備好终畅,賣掉了一個腎籍胯。然后就買了新機,就可以發(fā)消息給Apple 要他們加班了离福。


2杖狼、經(jīng)典的哲學家吃飯問題

隨手的吃飯圖,媽媽的妖爷,現(xiàn)實中有誰這么吃蝶涩,我要懟死他
int fork1=fork2=1;
int knie1=knife2=1;
Pa()
{
  while(true)
    { P(knife1);
      P(fork1);
      Have lunch;
      V(knife1);
      V(fork1);
    }
}




Pb()
{
  while(true)
    { P(knife2);
      P(fork1);
      Have lunch;
      V(knife2);
      V(fork1);
    }
}




Pc()
{
  while(true)
    { P(knife2);
      P(fork2);
      Have lunch;
      V(knife2);
      V(fork2);
    }
}


Pd()
{
  while(true)
    { P(knife1);
      P(fork2);
      Have lunch;
      V(knife1);
      V(fork2);
    }
}


這個是哪個上課的老師經(jīng)過了三次的改進之后才拿出來的比較好的形式,形成競爭機制。也就是說绿聘,在第一步的時候嗽上,四個人分別開始搶,因為要同時刀叉在手才可以吃飯熄攘,也就是說同時只有兩個人能吃飯兽愤,所以一開始先確定哪兩個人能吃飯就好。那個老師初期的解決策略并未考慮這點鲜屏,四個餐具烹看,四個人国拇,四個人先人手一把洛史,這下好,不吃飯是沒法放下餐具的酱吝。所以就形成了死鎖了也殖。大家都要吃飯,但是你的行為阻礙了我务热,并且我還沒辦法搞死你來吃飯忆嗜,這就死了。故而引入先競爭崎岂,后吃飯機制是很大的一個進步捆毫,這樣就確保了,拿不到刀的人冲甘,絕對拿不到叉子绩卤,也就杜絕了死鎖這種進程運行的大敵!完美江醇!

一個互斥問題濒憋,一個同步問題,差不多了陶夜。年級學生會換屆大會也結(jié)束了凛驮。可以收拾收拾回宿舍了条辟。明天早上有課黔夭,心塞塞,一定要早睡早睡再早睡S鸬铡纠修!

年級分團委學生會換屆大會

結(jié)束語

推薦一首歌---Wercking ball 很好聽的哦。厂僧。只是歌詞很非就是了扣草。但是絲毫不妨礙我走夜路的時候聽著這歌就在路邊上扭起了曼妙的動作,好吧,撤軍辰妙,分團委的要照相了鹰祸。我撤也~~~~~另外,今晚開車很開心@XNC密浑,雖然有點恐怖

Wercking ball

個人宣言

知識傳遞力量蛙婴,技術(shù)無國界,文化改變生活尔破!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末街图,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子懒构,更是在濱河造成了極大的恐慌餐济,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胆剧,死亡現(xiàn)場離奇詭異絮姆,居然都是意外死亡,警方通過查閱死者的電腦和手機秩霍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門篙悯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铃绒,你說我怎么就攤上這事鸽照。” “怎么了颠悬?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵矮燎,是天一觀的道長。 經(jīng)常有香客問我椿疗,道長漏峰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任届榄,我火速辦了婚禮浅乔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铝条。我一直安慰自己靖苇,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布班缰。 她就那樣靜靜地躺著贤壁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪埠忘。 梳的紋絲不亂的頭發(fā)上脾拆,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天馒索,我揣著相機與錄音,去河邊找鬼名船。 笑死绰上,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的渠驼。 我是一名探鬼主播蜈块,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迷扇!你這毒婦竟也來了百揭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蜓席,失蹤者是張志新(化名)和其女友劉穎器一,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓮床,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡盹舞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年产镐,在試婚紗的時候發(fā)現(xiàn)自己被綠了隘庄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡癣亚,死狀恐怖丑掺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情述雾,我是刑警寧澤街州,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站玻孟,受9級特大地震影響唆缴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜黍翎,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一面徽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匣掸,春花似錦趟紊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至送爸,卻和暖如春铛嘱,著一層夾襖步出監(jiān)牢的瞬間暖释,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工墨吓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饭入,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓肛真,卻偏偏與公主長得像谐丢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚓让,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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

  • ** 本文摘自湯小丹主編《計算機操作系統(tǒng)》(第三版)2.3 進程同步 ** 在 OS 中引入進程后,雖然提高了資源...
    劉帥_閱讀 3,090評論 0 0
  • 一乾忱、 【例3-1-4】在操作系統(tǒng)中,要對并發(fā)進程進行同步的原因是 历极。 A. 進程必須在有限的時間內(nèi)完成 B. 進程...
    ZoeyeoZ閱讀 4,931評論 0 9
  • 又來到了一個老生常談的問題窄瘟,應用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢? 今天就這個問題開始趟卸,來談談操...
    tangsl閱讀 4,098評論 0 23
  • 古體詩.祝福小君郎(中華新韻) 文/寒霜 【原創(chuàng)】 祝 愿落華章蹄葱, 福 安自靖康。 新 麴迎壽誕锄列, 波 起有清觴图云。...
    劉寒霜閱讀 496評論 2 10
  • 2017年7月21日 晴 When no one by me at Friday night Singing to...
    鮮栗子閱讀 299評論 0 1