日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统 进程管理(三)——进程同步方法简述

發(fā)布時(shí)間:2023/12/20 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统 进程管理(三)——进程同步方法简述 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

進(jìn)程同步的基本概念

1)兩種形式的制約關(guān)系

2)Critical section(臨界區(qū))

3)Mutual exclusion(互斥)

4)Dead lock(死鎖)

5)Starvation(饑餓)

6)面包問題(鎖的概念)

同步機(jī)制原則

實(shí)現(xiàn)進(jìn)程互斥的方法

方法一 基于軟件的解決方案

算法一 x

算法二 x

算法三 x

算法四——Peterson算法 1981 √

算法五——Backery算法作為補(bǔ)充

方法二? 禁用硬件中斷

(一)鎖方法 TS互斥

(二)交換指令Swap方法

方法三? 信號量機(jī)制

1)整型信號量

2).記錄型信號量

3)AND型信號量集機(jī)制

?3)一般信號量集機(jī)制


在多道系統(tǒng)中,并發(fā)執(zhí)行的諸進(jìn)程之間,既有獨(dú)立性,又有制約性。

獨(dú)立性是指各進(jìn)程都可獨(dú)立地向前推進(jìn);

制約性是指由于資源共享和進(jìn)程合作所引起的進(jìn)程之間的相互依賴和相互制約的關(guān)系。進(jìn)程之間的相互制約關(guān)系有兩種:互斥和同步,互斥也可看作是一種同步,一種特殊的同步。

進(jìn)程同步的基本概念

1)兩種形式的制約關(guān)系

(1)間接相互制約關(guān)系。

(2) 直接相互制約關(guān)系。

2)Critical section(臨界區(qū))

臨界區(qū)是指進(jìn)程中的一段需要訪問共享資源并且當(dāng)一個(gè)進(jìn)程處于響應(yīng)代碼區(qū)域時(shí)編不會(huì)被執(zhí)行的代碼區(qū)域。

3)Mutual exclusion(互斥)

當(dāng)一個(gè)進(jìn)程處于臨界區(qū)并訪問共享資源時(shí),沒有其他進(jìn)程會(huì)處于臨界區(qū)并且訪問任何相同的共享資源。

4)Dead lock(死鎖)

兩個(gè)或以上的進(jìn)程,在相互等待完成特定任務(wù),而最終沒法將自身任務(wù)進(jìn)行下去。

5)Starvation(饑餓)

一個(gè)可執(zhí)行的進(jìn)程,被調(diào)度器持續(xù)忽略,以至于雖然處于可執(zhí)行狀態(tài)卻不被執(zhí)行。

6)面包問題(鎖的概念)

-Lock (鎖)∶在門、抽屜等物體上加上保護(hù)性裝置,使得外人無法訪問物體內(nèi)的東西,只能等待解鎖后才能訪問。

-Unlock(解鎖):打開保護(hù)性裝置,使得可以訪問之前被鎖保護(hù)的物體類的東西。

-Deadlock (死鎖)∶A拿到鎖1,B拿到鎖2,A想繼續(xù)拿到鎖2后再繼續(xù)執(zhí)行,B想繼續(xù)拿到鎖1后再繼續(xù)執(zhí)行。導(dǎo)致A和B誰也無法繼續(xù)執(zhí)行。

同步機(jī)制原則:

空閑讓進(jìn):當(dāng)無進(jìn)程處于臨界區(qū)時(shí),表明臨界資源處于空閑狀態(tài),應(yīng)允許一個(gè)請求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入自己的臨界區(qū),以有效利用臨界資源

忙則等待:當(dāng)已有進(jìn)程進(jìn)入臨界區(qū)時(shí),表明臨界資源正在被占用,因而其他試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待,以保證對臨界資源的互斥使用

有限等待:對要求訪問臨界資源的進(jìn)程,應(yīng)保證在有限時(shí)間內(nèi)能進(jìn)入到自己的臨界區(qū),以免陷入死等的狀態(tài)

讓權(quán)等待:當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),以避免進(jìn)程陷入忙等狀態(tài)

實(shí)現(xiàn)進(jìn)程互斥的方法

解決臨界區(qū)問題的三個(gè)必須標(biāo)準(zhǔn):互斥訪問, 進(jìn)入(即不死鎖), 有限等待(即不餓死)

方法一 基于軟件的解決方案

?算法一 x

缺點(diǎn):滿足互斥,但是Starvation。須輪流使用臨界區(qū),不能同一進(jìn)程使用兩次

? ? ? ? ? ?一個(gè)進(jìn)程失敗,另一個(gè)將被永久阻塞。

算法二 x

缺點(diǎn):不能互斥,若起初設(shè)置flag[i]和flag[j]都為false,那么可以先執(zhí)行?1再執(zhí)行2,這樣就同時(shí)進(jìn)入臨界區(qū)了。

算法三 x

缺點(diǎn):? 滿足互斥,但是死鎖先執(zhí)行1再執(zhí)行2,兩者都無法進(jìn)入臨界區(qū)

算法四——Peterson算法 1981 √

這個(gè)佬講得很好:Peterson‘s Algorithm皮特森算法詳解_我知道你是高手的博客-CSDN博客_皮特森算法

flag數(shù)組:為了判定是否有其他進(jìn)程想要進(jìn)入臨界區(qū)(避免如果沒有其他進(jìn)程想要進(jìn)入,當(dāng)前進(jìn)程一直空等)

turn變量:為想要進(jìn)入臨界區(qū)的進(jìn)程進(jìn)行排序(turn==i則Pj在前,turn==j則Pi在前),先提出申請的進(jìn)程優(yōu)先進(jìn)入臨界區(qū),其他進(jìn)程等待,就這樣實(shí)現(xiàn)了對臨界區(qū)訪問的互斥。

若Pi和Pj都想進(jìn)入臨界區(qū),i先提出申請,j后提出申請,進(jìn)入while循環(huán)判定時(shí)turn==i(Pi執(zhí)行turn=j在前,Pj執(zhí)行turn=i在后,所以while循環(huán)中的turn==i);先提出申請的進(jìn)程先進(jìn)入臨界區(qū);Pi走到while循環(huán),此時(shí)flag[j]==true,turn==i,不滿足循環(huán)條件,跳出(若是Pj不想進(jìn)入臨界區(qū)壓根就沒有提出申請,那么flag[j]==false,更不滿足循環(huán)條件),Pi就可以繼續(xù)進(jìn)入critical section;Pj走到while循環(huán),但是因?yàn)榇藭r(shí)flag[i]==ture且turn==i,Pj陷入while循環(huán)中無法進(jìn)入critical section,Pj需要一直等到Pi退出臨界區(qū)時(shí)置flag[i]==false才能跳出循環(huán),進(jìn)入臨界區(qū);

算法五——Backery算法作為補(bǔ)充

方法二? 禁用硬件中斷

?沒有中斷,沒有上下文切換,因此沒有并發(fā)

? ? ? ? >硬件將中斷處理延遲到中斷被啟用之后
? ? ? ? >大多數(shù)現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)都提供指令來完成

(一)鎖方法 TS互斥

進(jìn)入臨界區(qū) >禁用中斷

離開臨界區(qū) >開啟中斷

(二)交換指令Swap方法

缺點(diǎn):一旦中斷被禁用,線程無法被停止,整個(gè)系統(tǒng)都會(huì)停下,可能導(dǎo)致其他線程starvation

? ? ? ? ???臨界區(qū)若可以任意長,無法限制響應(yīng)中斷所需時(shí)間:忙等

方法三? 信號量機(jī)制

1)整型信號量

抽象數(shù)據(jù)類型:一個(gè)整形(sem),兩個(gè)原子操作

  • P(): sem減1,如果sem<0,等待,否則繼續(xù)(wait(S))
  • v(): sem加1,如果sem<=0,喚醒一個(gè)等待的P(signal(S))

ps:

  • Sem表示空閑資源數(shù)(鎖方法中僅為一個(gè),或一個(gè)進(jìn)程使用
  • P操作申請一個(gè)資源,V操作釋放一個(gè)資源。
  • 缺點(diǎn): 忙等,故把這種PV操作稱為忙等PV操作。
  • P.V操作必須為原子操作,對于單處理機(jī),可用禁止中斷實(shí)現(xiàn), 對于多處理機(jī),要用軟件協(xié)助解決。
  • P.V操作必須成對出現(xiàn)。

e.g.計(jì)算機(jī)系統(tǒng)的打印機(jī)? 圖from:信號量機(jī)制_fFee-ops的博客-CSDN博客_信號量機(jī)制

2).記錄型信號量

——為克服“忙等”,重新對信號量和P.V操定義

圖from:?信號量機(jī)制_fFee-ops的博客-CSDN博客_信號量機(jī)制

注意:

??? S.Value? >0? 表示某類可用資源的數(shù)量

? ? ? ? ? ? ? ? ??<0? 其絕對值為因請求該資源而被阻塞的進(jìn)程數(shù)

??? S.Value的初值為1時(shí),表示只允許一個(gè)進(jìn)程訪問臨界資源,此時(shí)的信號量轉(zhuǎn)化為互斥信號量。

3)AND型信號量集機(jī)制

基本思想:

  • 將進(jìn)程在整個(gè)運(yùn)行過程中需要的所有資源,一次性全部地分配給進(jìn)程,待進(jìn)程使用完后再一起釋放;(類似于數(shù)據(jù)庫中的事務(wù))
  • 對若干個(gè)臨界資源的分配,采取原子操作方式要么全部分配到進(jìn)程,要么一個(gè)也不分配;
  • 為此,在wait操作中,增加了一個(gè)“AND”條件,故稱為AND同步;

定義如下:

?3)一般信號量集機(jī)制

每次只能獲得或釋放一個(gè)單位的臨界資源太低效;

當(dāng)資源數(shù)量低于某一下限值時(shí),便不予分配;

基于以上兩點(diǎn)對And信號進(jìn)行擴(kuò)充。

?特殊情況討論:

(1)Swait(S,d,d)

??? 此時(shí)在信號量集中只有一個(gè)信號量,但它允許每次申請d個(gè)資源,當(dāng)現(xiàn)有資源數(shù)少于d時(shí),不予分配。

(2)Swait(S,1,1)

??? 此時(shí)的信號量集蛻化為一般的記錄型信號量(S1時(shí))或互斥信號量(S = 1 時(shí))

(3)Swait(S,1,0)。??? 相當(dāng)于一個(gè)可控開關(guān)

??? 這是一種很特殊且很有用的信號量,不分配資源。

??? 當(dāng)S>=1時(shí),允許多個(gè)進(jìn)程進(jìn)入某特定區(qū);

??? 當(dāng)S=0時(shí),將阻止任何進(jìn)程進(jìn)入特定區(qū)。

總結(jié)

以上是生活随笔為你收集整理的操作系统 进程管理(三)——进程同步方法简述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。