0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

操作系統(tǒng)中進(jìn)程同步介紹

麥辣雞腿堡 ? 來(lái)源:盼盼編程 ? 作者:晨夢(mèng)思雨 ? 2023-10-08 15:42 ? 次閱讀

進(jìn)程同步

圖片

動(dòng)畫(huà)展示,臨界區(qū)的資源,在某個(gè)時(shí)刻,只能有一個(gè)進(jìn)程在使用。

臨界資源

一旦有對(duì)資源的共享,就必然涉及競(jìng)爭(zhēng)限制。

臨界資源用來(lái)表示一種,公共資源或者說(shuō)是共享數(shù)據(jù),可以被多個(gè)線程使用。

但是每一次,只能有一個(gè)線程使用它。一旦臨界資源被占用,其他線程,要想使用這個(gè)資源,就必須等待。

進(jìn)程同步的主要任務(wù)是,對(duì)多個(gè)相關(guān)進(jìn)程,在執(zhí)行次序上進(jìn)行協(xié)調(diào),以使并發(fā)執(zhí)行的諸進(jìn)程之間,能有效地共享資源和相互合作,從而使程序的執(zhí)行,具有可再現(xiàn)性。

臨界區(qū)

有了臨界資源的概念,就很容易理解臨界區(qū)的概念。在程序中,所有的操作,都是通過(guò)代碼執(zhí)行的,訪問(wèn)臨界資源的那段代碼就是臨界區(qū)

處理競(jìng)爭(zhēng)或者合作依賴導(dǎo)致的制約

空閑讓進(jìn):對(duì)于臨界資源,如果空閑沒(méi)有被使用,誰(shuí)來(lái)了之后都可以使用

忙則等待:如果臨界資源正在被使用,那么其他后來(lái)者就需要進(jìn)行等待。

有限等待:要求訪問(wèn)臨界資源的進(jìn)程,應(yīng)保證有限時(shí)間內(nèi),能進(jìn)入自己的臨界區(qū),自己不能傻傻的等

讓權(quán)等待:如果無(wú)法進(jìn)入自己的臨界區(qū)時(shí),應(yīng)立即釋放處理機(jī),而不能占著CPU死等,你死等就算了,別人卻也不能用了。

鎖就是對(duì)資源施加控制,鎖指的是一種控制權(quán)。

當(dāng)進(jìn)入臨界區(qū)時(shí),我們稱之為獲得鎖,獲得鎖之后就可以訪問(wèn)臨界資源。

其他線程想要進(jìn)入臨界區(qū),也需要先獲得鎖。

當(dāng)前線程結(jié)束后,將會(huì)釋放鎖,別的線程就可以獲取這個(gè)資源的鎖。

死鎖

鎖表示一種控制權(quán),對(duì)臨界資源的訪問(wèn)權(quán)限。

下面動(dòng)畫(huà)展示,兩個(gè)小人,都要使用資源1和資源2,才能達(dá)到對(duì)面。左邊小人戰(zhàn)友資源1,右邊小人占有資源2。他們占有當(dāng)前資源,再去獲取對(duì)方的資源時(shí),就會(huì)產(chǎn)生死鎖的情況。

圖片

如果臨界資源不止一個(gè),就可能出現(xiàn):需要先后訪問(wèn)兩種臨界資源A和B,thread1獲得了A線程的鎖之后,等待獲得B的鎖,但是thread2獲得了資源B的鎖,在等待A資源的鎖,這就出現(xiàn)了互相等待的情況。

解決方案

AND型信號(hào)量機(jī)制就是用于解決這種多共享資源下的同步問(wèn)題的。

將進(jìn)程在整個(gè)運(yùn)行過(guò)程中,需要的所有資源,一次性全部地分配給進(jìn)程,待進(jìn)程使用完后再一起釋放。

只要尚有一個(gè)資源未能分配給進(jìn)程,其它所有可能為之分配的資源,也不分配給它。

也就是對(duì),若干個(gè)臨界資源的分配,采取原子操作方式:要么把它所請(qǐng)求的資源全部分配到進(jìn)程,要么一個(gè)也不分配。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6545

    瀏覽量

    122743
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    19580
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    197

    瀏覽量

    13928
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    #操作系統(tǒng)原理 進(jìn)程同步背景

    操作系統(tǒng)
    電子技術(shù)那些事兒
    發(fā)布于 :2022年10月17日 22:40:20

    Windows和Linux同步機(jī)制4.6.2Linux父子進(jìn)程同步(1)#操作系統(tǒng)

    操作系統(tǒng)
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2023年05月25日 18:16:56

    Windows和Linux同步機(jī)制4.6.2Linux父子進(jìn)程同步(2)#操作系統(tǒng)

    操作系統(tǒng)
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2023年05月25日 18:17:48

    進(jìn)程同步(1)(1)#操作系統(tǒng)

    操作系統(tǒng)
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2023年06月01日 12:07:52

    進(jìn)程同步(1)(2)#操作系統(tǒng)

    操作系統(tǒng)
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2023年06月01日 12:08:32

    進(jìn)程同步(2)(1)#操作系統(tǒng)

    操作系統(tǒng)
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2023年06月01日 12:09:11

    進(jìn)程同步(2)(2)#操作系統(tǒng)

    操作系統(tǒng)
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2023年06月01日 12:09:37

    進(jìn)程同步(2)(3)#操作系統(tǒng)

    操作系統(tǒng)
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2023年06月01日 12:10:14

    操作系統(tǒng)中進(jìn)程調(diào)度策略有哪幾種

    操作系統(tǒng)中進(jìn)程調(diào)度策略有哪幾種? 求大神指點(diǎn)啊
    發(fā)表于 11-07 21:18

    進(jìn)程同步與互斥介紹

    進(jìn)程同步是指進(jìn)程間一種直接的協(xié)同工作關(guān)系,是一些進(jìn)程相互合作,共同完成一項(xiàng)任務(wù)。進(jìn)程間的直接相互作用構(gòu)成進(jìn)程
    發(fā)表于 08-06 06:12

    操作系統(tǒng)進(jìn)程同步

    互相協(xié)作的進(jìn)程之間有共享的數(shù)據(jù),于是這里就有一個(gè)并發(fā)情況下,如何確保有序操作這些數(shù)據(jù)、維護(hù)一致性的問(wèn)題,即進(jìn)程同步。
    發(fā)表于 08-07 06:35

    操作系統(tǒng) : 進(jìn)程與線程

    本文為《現(xiàn)代操作系統(tǒng)》的讀書(shū)筆記目錄程序順序執(zhí)行與并發(fā)執(zhí)行進(jìn)程的定義進(jìn)程的狀態(tài)轉(zhuǎn)換進(jìn)程控制塊進(jìn)程控制程序順序執(zhí)行與并發(fā)執(zhí)行
    發(fā)表于 07-01 10:49

    操作系統(tǒng)講解(操作系統(tǒng)課件)

    操作系統(tǒng)講解(操作系統(tǒng)課件) 第五章 文件管理.doc第六章 設(shè)備管理(部分).doc第二章 進(jìn)程管理.doc第3章 并發(fā)控制——互斥與同步.doc
    發(fā)表于 05-16 18:06 ?0次下載

    嵌入式Linux中的進(jìn)程同步無(wú)競(jìng)爭(zhēng)態(tài)讀寫

    的問(wèn)題。關(guān)鍵詞 嵌入式 Linux進(jìn)程同步 無(wú)競(jìng)爭(zhēng)態(tài)讀寫引 言 在對(duì)實(shí)時(shí)采集更新的數(shù)據(jù)進(jìn)行處理時(shí),往往會(huì)遇到數(shù)據(jù)更新速度與數(shù)據(jù)處理的速度...  摘要 Linux作為一個(gè)開(kāi)源、穩(wěn)健的操作系統(tǒng),支持多種
    發(fā)表于 04-02 14:43 ?206次閱讀

    Python中進(jìn)程操作

    進(jìn)程是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。
    的頭像 發(fā)表于 08-19 09:45 ?1140次閱讀
    Python<b class='flag-5'>中進(jìn)程</b>的<b class='flag-5'>操作</b>