国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念

這篇具有很好參考價(jià)值的文章主要介紹了【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、同步和互斥的概念

1.1、同步

????????訪問(wèn)資源在安全的前提下,具有一定的順序性,就叫做同步。在多道程序系統(tǒng)中,由于資源有限,進(jìn)程或線程之間可能產(chǎn)生沖突。同步機(jī)制就是為了解決這些沖突,保證進(jìn)程或線程之間能夠按照既定的順序訪問(wèn)共享資源。同步機(jī)制有助于避免競(jìng)態(tài)條件和死鎖(deadlock)等問(wèn)題,確保系統(tǒng)的穩(wěn)定性和可靠性。

1.2、互斥

????????在訪問(wèn)一部分共享資源的時(shí)候,任何時(shí)刻只有我一個(gè)人訪問(wèn),就叫做互斥。當(dāng)某一進(jìn)程或線程正在訪問(wèn)某臨界區(qū)(即共享資源)時(shí),就不允許其他進(jìn)程或線程進(jìn)入,這樣可以避免數(shù)據(jù)沖突和不一致?;コ鈾C(jī)制有助于保證同一時(shí)間只有一個(gè)線程或進(jìn)程能夠訪問(wèn)被保護(hù)的臨界區(qū),從而確保數(shù)據(jù)的一致性和完整性。

二、臨界資源和臨界區(qū)的概念

2.1、臨界資源

????????被保護(hù)起來(lái)的,任何時(shí)刻只允許一個(gè)執(zhí)行訪問(wèn)的公共資源就叫做臨界資源。這類資源在某一時(shí)刻只能有一個(gè)進(jìn)程或線程占用,如果多個(gè)進(jìn)程或線程試圖同時(shí)訪問(wèn)臨界資源,可能會(huì)引發(fā)數(shù)據(jù)沖突或不一致。物理設(shè)備如打印機(jī)、輸入機(jī)等都屬于臨界資源。

2.2、臨界區(qū)

訪問(wèn)臨界資源的代碼,我們叫做臨界區(qū)。臨界區(qū)的訪問(wèn)需要遵循一定的調(diào)度原則,如空閑讓進(jìn)、忙則等待等,以確保資源的正確和高效利用。所謂的保護(hù)公共資源(臨界資源)的本質(zhì)就是程序員保護(hù)臨界區(qū)。

三、認(rèn)識(shí)信號(hào)量

3.1、信號(hào)量的本質(zhì)

????????信號(hào)量本質(zhì)是一個(gè)計(jì)數(shù)器,是一個(gè)描述臨界資源數(shù)量的計(jì)數(shù)器。進(jìn)程要訪問(wèn)臨界資源的時(shí)候,必須先申請(qǐng)信號(hào)量,申請(qǐng)信號(hào)量成功了才能繼續(xù)往下走,否則就要進(jìn)行阻塞或掛起等待。信號(hào)量的值表示了可用資源的數(shù)量或等待訪問(wèn)該資源的進(jìn)程/線程數(shù)。當(dāng)進(jìn)程或線程需要訪問(wèn)共享資源時(shí),會(huì)先檢查信號(hào)量的值。如果信號(hào)量的值大于0,表示還有可用的資源,進(jìn)程或線程可以繼續(xù)執(zhí)行并訪問(wèn)資源,同時(shí)信號(hào)量的值會(huì)減1。如果信號(hào)量的值為0,表示所有資源都已被占用,進(jìn)程或線程需要等待,直到有其他進(jìn)程或線程釋放資源并將信號(hào)量的值增加。訪問(wèn)完臨界資源進(jìn)程要釋放信號(hào)量,即信號(hào)量加1。當(dāng)信號(hào)量的初始值為1時(shí),就實(shí)現(xiàn)了互斥的功能

3.2、普通的整形變量無(wú)法實(shí)現(xiàn)信號(hào)量的效果

原因有兩個(gè):

  1. 信號(hào)量本身就是共享資源,本身就是要被多個(gè)進(jìn)程或線程共同可以看到的,但是一個(gè)普通整形變量無(wú)法同時(shí)被多個(gè)進(jìn)程看到,就算是父子進(jìn)程,當(dāng)要改變進(jìn)程數(shù)據(jù)時(shí)都要發(fā)生寫時(shí)拷貝,因此無(wú)法讓多個(gè)進(jìn)程看到同一個(gè)變量。
  2. 對(duì)整形變量做++和--操作,這個(gè)操作不是原子的。

這里又設(shè)計(jì)一個(gè)概念叫原子性。

3.3、原子性的概念

????????在操作系統(tǒng)中,原子性是指一個(gè)操作或一系列操作是不可中斷的,要么全部執(zhí)行成功,要么全部不執(zhí)行,中間不能被其他進(jìn)程或線程干擾。換句話說(shuō),原子操作是不可分割的,具有“同生共死”的特性,即要么完全執(zhí)行,要么完全不執(zhí)行,沒(méi)有中間狀態(tài)。上面的對(duì)一個(gè)整形做++或--操作實(shí)際上是先將內(nèi)存中的一個(gè)整形變量的值先拷貝到CPU的寄存器中,在寄存器中對(duì)該變量做++操作然后再將該變量拷貝會(huì)內(nèi)存當(dāng)中,我們也可以看到,這中間其實(shí)經(jīng)歷了三個(gè)過(guò)程,換句話說(shuō),++或--操作不具備原子性。原子性在并發(fā)編程中尤為重要,特別是在共享資源的讀寫操作中。當(dāng)多個(gè)線程或進(jìn)程同時(shí)訪問(wèn)和修改共享資源時(shí),如果操作不是原子的,就可能導(dǎo)致數(shù)據(jù)不一致的問(wèn)題。原子性確保了即使在多線程環(huán)境下,一個(gè)操作一旦開始就不會(huì)被其他線程干擾,從而保證了數(shù)據(jù)的一致性。

3.4、信號(hào)量操作的接口

3.4.1、獲取信號(hào)量

【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念,linux,后端,信息與通信,服務(wù)器

????????key就類似于共享內(nèi)存中使用ftok函數(shù)產(chǎn)生的key,nsems表示要產(chǎn)生幾個(gè)信號(hào)量,semflg表示如何創(chuàng)建,與共享內(nèi)存的第三個(gè)參數(shù)同理,可參考本人上一篇博客,返回值為該信號(hào)量集標(biāo)識(shí)符,這是通過(guò)semget函數(shù)創(chuàng)建或獲取信號(hào)量集時(shí)返回的IPC標(biāo)識(shí)符。

3.4.2、控制/刪除信號(hào)量

【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念,linux,后端,信息與通信,服務(wù)器?

????????semid表示該信號(hào)量集標(biāo)識(shí)符。semnum表示信號(hào)量的編號(hào),用于指定信號(hào)量集中的某個(gè)特定的信號(hào)量,第一個(gè)信號(hào)量的編號(hào)是0。cmd表示需要執(zhí)行的命令,IPC_RMID為刪除命令。

3.4.3、對(duì)信號(hào)量進(jìn)行PV操作

【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念,linux,后端,信息與通信,服務(wù)器

????????sops指向存儲(chǔ)信號(hào)操作結(jié)構(gòu)的數(shù)組指針。在這個(gè)數(shù)組中的每個(gè)sembuf結(jié)構(gòu)體對(duì)應(yīng)一個(gè)特定信號(hào)的操作。?這是sops數(shù)組中sembuf結(jié)構(gòu)的數(shù)量。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-857825.html

到了這里,關(guān)于【Linux】詳解進(jìn)程通信中信號(hào)量的本質(zhì)&&同步和互斥的概念&&臨界資源和臨界區(qū)的概念的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】進(jìn)程間通信——System V信號(hào)量

    【Linux】進(jìn)程間通信——System V信號(hào)量

    目錄 寫在前面的話 一些概念的理解 信號(hào)量的引入 信號(hào)量的概念及使用 ? ???????? System V信號(hào)量是一種較低級(jí)的IPC機(jī)制 ,使用的時(shí)候需要手動(dòng)進(jìn)行操作和同步。在現(xiàn)代操作系統(tǒng)中,更常用的是 POSIX信號(hào)量 (通過(guò) sem_* 系列的函數(shù)進(jìn)行操作)或更高級(jí)的同步原語(yǔ)(如互斥鎖

    2024年02月11日
    瀏覽(20)
  • 【Linux】進(jìn)程間通信 --- 管道 共享內(nèi)存 消息隊(duì)列 信號(hào)量

    【Linux】進(jìn)程間通信 --- 管道 共享內(nèi)存 消息隊(duì)列 信號(hào)量

    等明年國(guó)慶去西藏洗滌靈魂,laozi不伺候這無(wú)聊的生活了 1. 通過(guò)之前的學(xué)習(xí)我們知道,每個(gè)進(jìn)程都有自己獨(dú)立的內(nèi)核數(shù)據(jù)結(jié)構(gòu),例如PCB,頁(yè)表,物理內(nèi)存塊,mm_struct,所以具有獨(dú)立性的進(jìn)程之間如果想要通信的話,成本一定是不低的。 2. a.數(shù)據(jù)傳輸:一個(gè)進(jìn)程需要將它的數(shù)據(jù)

    2023年04月17日
    瀏覽(27)
  • 【Linux】進(jìn)程間通信之共享內(nèi)存/消息隊(duì)列/信號(hào)量

    【Linux】進(jìn)程間通信之共享內(nèi)存/消息隊(duì)列/信號(hào)量

    共享內(nèi)存是通過(guò)讓不同的進(jìn)程看到同一個(gè)內(nèi)存塊的方式。 我們知道,每一個(gè)進(jìn)程都會(huì)有對(duì)應(yīng)的PCB-task_struct ,獨(dú)立的進(jìn)程地址空間,然后通過(guò)頁(yè)表將地址映射到物理內(nèi)存中。此時(shí)我們就可以讓OS在內(nèi)存中申請(qǐng)一塊空間,然后將創(chuàng)建好的內(nèi)存空間映射到進(jìn)程的地址空間中,兩個(gè)需

    2024年02月05日
    瀏覽(28)
  • 【Linux】進(jìn)程間通信——system V共享內(nèi)存 | 消息隊(duì)列 | 信號(hào)量

    【Linux】進(jìn)程間通信——system V共享內(nèi)存 | 消息隊(duì)列 | 信號(hào)量

    共享內(nèi)存是一種在多個(gè)進(jìn)程之間進(jìn)行進(jìn)程間通信的機(jī)制。它允許多個(gè)進(jìn)程訪問(wèn)相同的物理內(nèi)存區(qū)域,從而實(shí)現(xiàn)高效的數(shù)據(jù)交換和通信。 因?yàn)?進(jìn)程具有獨(dú)立性(隔離性) ,內(nèi)核數(shù)據(jù)結(jié)構(gòu)包括對(duì)應(yīng)的代碼、數(shù)據(jù)與頁(yè)表都是獨(dú)立的。OS系統(tǒng)為了讓進(jìn)程間進(jìn)行通信,必須讓不同的進(jìn)

    2024年02月15日
    瀏覽(23)
  • Linux之進(jìn)程間通信——system V(共享內(nèi)存、消息隊(duì)列、信號(hào)量等)

    Linux之進(jìn)程間通信——system V(共享內(nèi)存、消息隊(duì)列、信號(hào)量等)

    本文介紹了另一種進(jìn)程間通信——system V,主要介紹了共享內(nèi)存,消息隊(duì)列、信號(hào)量,當(dāng)然消息隊(duì)列了信號(hào)量并非重點(diǎn),簡(jiǎn)單了解即可。 共享內(nèi)存 :不同的進(jìn)程為了進(jìn)行通信看到的同一個(gè)內(nèi)存塊,該內(nèi)存塊被稱為共享內(nèi)存。 進(jìn)程具有獨(dú)立性,它的內(nèi)核數(shù)據(jù)結(jié)構(gòu)包括對(duì)應(yīng)的代

    2024年02月08日
    瀏覽(28)
  • 二、操作系統(tǒng)進(jìn)程管理(10)——用信號(hào)量機(jī)制實(shí)現(xiàn)進(jìn)程互斥、同步、前驅(qū)關(guān)系

    二、操作系統(tǒng)進(jìn)程管理(10)——用信號(hào)量機(jī)制實(shí)現(xiàn)進(jìn)程互斥、同步、前驅(qū)關(guān)系

    ?? ?(1)分析并發(fā)進(jìn)程的關(guān)鍵活動(dòng),劃定臨界區(qū)。(如對(duì)臨界區(qū)資源打印機(jī)的訪問(wèn)就應(yīng)放在臨界區(qū)) ?? ?(2)設(shè)置互斥信號(hào)量mutex,初值為1。 ?? ?(3)在臨界區(qū)之前執(zhí)行P(mutex)。? ? ? //即使用資源前先申請(qǐng)(P操作) ?? ?(4)在臨界區(qū)之后執(zhí)行V(mutex)。 ?? ?(5)對(duì)不

    2023年04月08日
    瀏覽(18)
  • 【Linux C | 多線程編程】線程同步 | 信號(hào)量(無(wú)名信號(hào)量) 及其使用例子

    【Linux C | 多線程編程】線程同步 | 信號(hào)量(無(wú)名信號(hào)量) 及其使用例子

    ??博客主頁(yè)??:??https://blog.csdn.net/wkd_007?? ??博客內(nèi)容??:??嵌入式開發(fā)、Linux、C語(yǔ)言、C++、數(shù)據(jù)結(jié)構(gòu)、音視頻?? ??本文內(nèi)容??:??介紹 ?? ??金句分享??:??你不能選擇最好的,但最好的會(huì)來(lái)選擇你——泰戈?duì)?? ?發(fā)布時(shí)間?: 本文未經(jīng)允許,不得轉(zhuǎn)發(fā)?。?!

    2024年04月26日
    瀏覽(27)
  • 【linux】進(jìn)行間通信——共享內(nèi)存+消息隊(duì)列+信號(hào)量

    【linux】進(jìn)行間通信——共享內(nèi)存+消息隊(duì)列+信號(hào)量

    進(jìn)程間通信方式目前我們已經(jīng)學(xué)了匿名管道,命名管道。讓兩個(gè)獨(dú)立的進(jìn)程通信,前提是看到同一份資源。匿名管道適用于血緣關(guān)系的進(jìn)程,一個(gè)打開寫端一個(gè)打開讀端實(shí)現(xiàn)的。命名管道適用于完全獨(dú)立的進(jìn)程,打開同一份文件實(shí)現(xiàn)的。 接下來(lái)我們看看剩下的實(shí)現(xiàn)進(jìn)程間通信

    2024年02月05日
    瀏覽(21)
  • 一文搞定Linux線程間通訊 / 線程同步方式-互斥鎖、讀寫鎖、自旋鎖、信號(hào)量、條件變量、信號(hào)等等

    目錄 線程間通訊 / 線程同步方式 鎖機(jī)制 互斥鎖(Mutex) 讀寫鎖(rwlock) 自旋鎖(spin) 信號(hào)量機(jī)制(Semaphore) 條件變量機(jī)制 信號(hào)(Signal) 線程間通訊 / 線程同步方式 p.s 以下有很多段落是直接引用,沒(méi)有使用 markdown 的 “引用” 格式,出處均已放出。 參考 / 引用: 100as

    2024年02月10日
    瀏覽(24)
  • 【Linux從入門到精通】信號(hào)量(信號(hào)量的原理與相關(guān)操作接口)詳解

    【Linux從入門到精通】信號(hào)量(信號(hào)量的原理與相關(guān)操作接口)詳解

    ? 本篇文章重點(diǎn)對(duì) 信號(hào)量的概念,信號(hào)量的申請(qǐng)、初始化、釋放、銷毀等操作進(jìn)行講解。同時(shí)舉例把信號(hào)量應(yīng)用到生產(chǎn)者消費(fèi)者模型來(lái)理解 。希望本篇文章會(huì)對(duì)你有所幫助。 目錄 一、信號(hào)量概念 1、1 什么是信號(hào)量 1、2 為什么要有信號(hào)量 1、3 信號(hào)量的PV操作 二、信號(hào)量的相

    2024年02月08日
    瀏覽(57)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包