文章目錄
- 2.3_1_進(jìn)程同步、進(jìn)程互斥
- 2.3_2_進(jìn)程互斥的軟件實(shí)現(xiàn)方法
- 2.3_3_進(jìn)程互斥的硬件實(shí)現(xiàn)方式
- 2.3_4_信號(hào)量機(jī)制
- 2.3_5_用信號(hào)量實(shí)現(xiàn)進(jìn)程互斥、同步、前驅(qū)關(guān)系
- 2.3_11_管程

創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)的成都網(wǎng)站建設(shè)公司,我們專(zhuān)注成都網(wǎng)站建設(shè)、
成都網(wǎng)站制作、網(wǎng)絡(luò)營(yíng)銷(xiāo)、企業(yè)網(wǎng)站建設(shè),
買(mǎi)友情鏈接,
廣告投放平臺(tái)為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。2.3_1_進(jìn)程同步、進(jìn)程互斥
進(jìn)程同步
- 異步性:各并發(fā)執(zhí)行的進(jìn)程以各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。
- 同步亦稱(chēng)直接制約關(guān)系,它是指為完成某種任務(wù)而建立的兩個(gè)或多個(gè)進(jìn)程,這些進(jìn)程因?yàn)樾枰谀承┪恢蒙蠀f(xié)調(diào)它們的工作次序而產(chǎn)生的制約關(guān)系。進(jìn)程間的直接制約關(guān)系就是源于它們之間的相互合作。
進(jìn)程互斥
- 兩種資源共享方式:
- 互斥共享方式:在一個(gè)時(shí)間段內(nèi)只允許一個(gè)進(jìn)程訪問(wèn)該資源
- 同時(shí)共享方式:允許一個(gè)時(shí)間段內(nèi)由多個(gè)進(jìn)程同時(shí)對(duì)它們進(jìn)行訪問(wèn)。
- 一個(gè)時(shí)間段內(nèi)只允許一個(gè)進(jìn)程使用的資源稱(chēng)為臨界資源
- 對(duì)臨界資源的訪問(wèn)必須互斥的進(jìn)行。互斥,亦稱(chēng)間接制約關(guān)系。
- 進(jìn)程互斥指當(dāng)一個(gè)進(jìn)程訪問(wèn)某臨界資源時(shí),另一個(gè)想要訪問(wèn)該臨界資源的進(jìn)程必須等待。
- 進(jìn)程互斥的四個(gè)部分:進(jìn)入?yún)^(qū)、臨界區(qū)、退出區(qū)、剩余區(qū)。
- 臨界區(qū)是進(jìn)程中訪問(wèn)臨界資源的代碼段。進(jìn)入?yún)^(qū)和退出區(qū)是實(shí)現(xiàn)互斥的代碼段。
- 為了實(shí)現(xiàn)對(duì)臨界資源的互斥訪問(wèn),同時(shí)保證系統(tǒng)的整體性能,需要遵循以下原則:
- 空閑讓進(jìn):臨界區(qū)空閑時(shí),可以允許一個(gè)請(qǐng)求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入臨界區(qū)
- 忙則等待:當(dāng)已有進(jìn)程進(jìn)入臨界區(qū)時(shí),其他試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待
- 有限等待:對(duì)請(qǐng)求訪問(wèn)的進(jìn)程,應(yīng)保證能在有限時(shí)間內(nèi)進(jìn)入臨界區(qū)
- 讓權(quán)等待:當(dāng)進(jìn)程不能進(jìn)入臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),防止進(jìn)程忙等待。
2.3_2_進(jìn)程互斥的軟件實(shí)現(xiàn)方法
單標(biāo)志法
- 算法思想:兩個(gè)進(jìn)程在訪問(wèn)完臨界區(qū)后會(huì)把使用臨界區(qū)的權(quán)限轉(zhuǎn)交給另一個(gè)進(jìn)程。也就是說(shuō)每個(gè)進(jìn)程進(jìn)入臨界區(qū)的權(quán)限只能被另一個(gè)進(jìn)程賦予。
- 可以實(shí)現(xiàn)同一時(shí)刻最多只允許一個(gè)進(jìn)程訪問(wèn)臨界區(qū)。但違背了空閑讓進(jìn)的原則。
雙標(biāo)志先檢查法
- 算法思想:設(shè)置一個(gè)布爾型數(shù)組flag[],數(shù)組中各個(gè)元素用來(lái)標(biāo)記各進(jìn)程想進(jìn)入臨界區(qū)的意愿,每個(gè)進(jìn)程在進(jìn)入臨界區(qū)之前先檢查當(dāng)前有沒(méi)有別的進(jìn)程想進(jìn)入臨界區(qū),如果沒(méi)有,則把自身對(duì)應(yīng)的標(biāo)志位flag[i]設(shè)為true,之后開(kāi)始訪問(wèn)臨近區(qū)。
- 違反忙則等待原則。原因在于進(jìn)入?yún)^(qū)的檢查和上鎖兩個(gè)處理不是一氣呵成的,檢查后,上鎖前可能發(fā)生進(jìn)程切換。
雙標(biāo)志后檢查法
- 算法思想:先上鎖,后檢查。
- 解決了忙則等待的問(wèn)題,但是又違背了空閑讓進(jìn)和有限等待原則,會(huì)因各進(jìn)程都長(zhǎng)期無(wú)法訪問(wèn)臨界資源而產(chǎn)生饑餓現(xiàn)象。
Peterson算法
- 算法思想:如果雙方都爭(zhēng)著想進(jìn)入臨界區(qū)的化,那可以讓進(jìn)程嘗試孔融讓梨,主動(dòng)讓對(duì)方先使用臨界資源。
- 進(jìn)入?yún)^(qū):主動(dòng)爭(zhēng)取,主動(dòng)謙讓?zhuān)瑱z查對(duì)方是否也想使用,且最后一次是不是自己說(shuō)了客氣話。
- 解決了進(jìn)程互斥的問(wèn)題,遵循了空閑讓進(jìn),忙則等待,有限等待三個(gè)原則,但是依然未遵循讓權(quán)等待的原則。
2.3_3_進(jìn)程互斥的硬件實(shí)現(xiàn)方式
中斷屏蔽方法
- 利用開(kāi)/關(guān)中斷指令實(shí)現(xiàn)
- 不適用于多處理機(jī),只適用于操作系統(tǒng)內(nèi)核進(jìn)程,不適用于用戶進(jìn)程。特權(quán)指令。
TestAndSet指令
- 用硬件實(shí)現(xiàn)的,上鎖和檢查操作用硬件的方式變成了一氣呵成的原子操作。
- 適用于多處理機(jī)的環(huán)境。不滿足讓權(quán)等待的原則。
Swap指令
- 硬件實(shí)現(xiàn),執(zhí)行過(guò)程中不允許被中斷,只能一氣呵成。
- 和TestAndSet指令類(lèi)似。
2.3_4_信號(hào)量機(jī)制
- 用戶進(jìn)程可以通過(guò)使用操作系統(tǒng)提供的一對(duì)原語(yǔ)來(lái)對(duì)信號(hào)量進(jìn)行操作,從而很方便的實(shí)現(xiàn)了進(jìn)程互斥,進(jìn)程同步。
- 信號(hào)量其實(shí)就是一個(gè)變量(可以是一個(gè)整數(shù),也可以是更復(fù)雜的記錄型變量) ,可以用一個(gè)信號(hào)量來(lái)表示系統(tǒng)中某種資源的數(shù)量。
- 原語(yǔ)是一種特殊的程序段,其執(zhí)行只能一氣呵成,不可能被中斷,是由關(guān)中斷/開(kāi)中斷指令實(shí)現(xiàn)的。
- 一對(duì)原語(yǔ):wait(s),signal(s), 簡(jiǎn)稱(chēng)為P,V操作。
整型信號(hào)量
- 對(duì)信號(hào)量的操作只有三種:初始化,P操作,V操作。
- 檢查和上鎖一氣呵成,避免了并發(fā)、異步導(dǎo)致的問(wèn)題。
- 不滿足讓權(quán)等待原則,會(huì)發(fā)生忙等。
記錄型信號(hào)量
- 用記錄型數(shù)據(jù)結(jié)構(gòu)表示的信號(hào)量。
- 如果剩余資源數(shù)量不夠,使用block原語(yǔ)使進(jìn)程從運(yùn)行態(tài)進(jìn)入阻塞態(tài),并把該進(jìn)程掛到信號(hào)量S的等待隊(duì)列中。
- 釋放資源后,若還有別的進(jìn)程在等待這種資源,則使用wakeup原語(yǔ)喚醒等待隊(duì)列中的一個(gè)進(jìn)程,該進(jìn)程從阻塞態(tài)變?yōu)榫途w態(tài)。
- PV操作中,先執(zhí)行++或者–操作,在根據(jù)實(shí)際情況執(zhí)行原語(yǔ)。
2.3_5_用信號(hào)量實(shí)現(xiàn)進(jìn)程互斥、同步、前驅(qū)關(guān)系
信號(hào)量機(jī)制實(shí)現(xiàn)進(jìn)程互斥
- 分析并發(fā)進(jìn)程的關(guān)鍵活動(dòng),劃定臨界區(qū)
- 設(shè)置互斥信號(hào)量mutex,初值為1
- 在臨界區(qū)之前執(zhí)行P,缺少P(mutex)就不能保證臨界資源的互斥訪問(wèn)
- 在臨界區(qū)之后執(zhí)行V,缺少V(mutex)就會(huì)導(dǎo)致資源永遠(yuǎn)不會(huì)被釋放,等待進(jìn)程永不會(huì)被喚醒。
用信號(hào)量機(jī)制實(shí)現(xiàn)進(jìn)程同步
- 進(jìn)程同步:要讓各并發(fā)進(jìn)程按要求有序的推進(jìn)。
- 分析什么地方需要實(shí)現(xiàn)同步關(guān)系,即必須保證一前一后執(zhí)行的兩個(gè)操作
- 設(shè)置同步信號(hào)量S,初始化為0
- 在前操作之后執(zhí)行V(S)
- 在后操作之前執(zhí)行P(S)
用信號(hào)量機(jī)制實(shí)現(xiàn)前驅(qū)關(guān)系
- 要為每一對(duì)前驅(qū)關(guān)系各設(shè)置一個(gè)同步變量
- 前V(S),后P(S)
2.3_11_管程
管程的組成
- 局部于管程的共享數(shù)據(jù)結(jié)構(gòu)說(shuō)明
- 對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作的一組過(guò)程(函數(shù))
- 對(duì)局部于管程的共享數(shù)據(jù)結(jié)構(gòu)設(shè)置初始值的語(yǔ)句
- 管程有一個(gè)名字
- 引入管程的目的無(wú)非就是要更方便地實(shí)現(xiàn)進(jìn)程互斥和同步。
管程的基本特征
- 局部于管程的數(shù)據(jù)只能被局部于管程的過(guò)程所訪問(wèn)
- 一個(gè)進(jìn)程只有通過(guò)調(diào)用管程內(nèi)的函數(shù)才能進(jìn)入管程訪問(wèn)共享數(shù)據(jù)
- 每次僅允許一個(gè)進(jìn)程在管程內(nèi)執(zhí)行某個(gè)內(nèi)部函數(shù)。
- 由編譯器負(fù)責(zé)實(shí)現(xiàn)各進(jìn)程互斥地進(jìn)入管程中的函數(shù)
- 管程中設(shè)置條件變量和等待/喚醒操作,以解決同步問(wèn)題。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
名稱(chēng)欄目:王道操作系統(tǒng)-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://www.chinadenli.net/article6/djopig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、手機(jī)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站改版、網(wǎng)站策劃、網(wǎng)站收錄
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)