国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術(shù)干貨  > 進程之前的通信方式

進程之前的通信方式

來源:千鋒教育
發(fā)布人:wjy
時間: 2022-09-07 16:57:02 1662541022

(1)管道通信管道是一種最基本的進程間通信機制。管道就是操作系統(tǒng)在內(nèi)核中開辟的一段緩沖區(qū),進程1可以將需要交互的數(shù)據(jù)拷貝到這段緩沖區(qū),進程2就可以讀取了。管道的特點:只能單向通信只能血緣關(guān)系的進程進行通信依賴于文件系統(tǒng)生命周期隨進程面向字節(jié)流的服務管道內(nèi)部提供了同步機制

(2)消息隊列通信消息隊列就是一個消息的列表。用戶可以在消息隊列中添加消息、讀取消息等。消息隊列提供了一種從一個進程向另一個進程發(fā)送一個數(shù)據(jù)塊的方法。 每個數(shù)據(jù)塊都被認為含有一個類型,接收進程可以獨立地接收含有不同類型的數(shù)據(jù)結(jié)構(gòu)。可以通過發(fā)送消息來避免命名管道的同步和阻塞問題。但是消息隊列與命名管道一樣,每個數(shù)據(jù)塊都有一個最大長度的限制。使用消息隊列進行進程間通信,可能會收到數(shù)據(jù)塊最大長度的限制約束等,這也是這種通信方式的缺點。如果頻繁的發(fā)生進程間的通信行為,那么進程需要頻繁地讀取隊列中的數(shù)據(jù)到內(nèi)存,相當于間接地從一個進程拷貝到另一個進程,這需要花費時間。

進程之前的通信方式

(3)信號量通信共享內(nèi)存最大的問題就是多進程競爭內(nèi)存的問題,就像類似于線程安全問題。我們可以使用信號量來解決這個問題。信號量的本質(zhì)就是一個計數(shù)器,用來實現(xiàn)進程之間的互斥與同步。例如信號量的初始值是 1,然后 a 進程來訪問內(nèi)存1的時候,我們就把信號量的值設為 0,然后進程b 也要來訪問內(nèi)存1的時候,看到信號量的值為 0 就知道已經(jīng)有進程在訪問內(nèi)存1了,這個時候進程 b 就會訪問不了內(nèi)存1。所以說,信號量也是進程之間的一種通信方式。

(4)信號通信信號(Signals )是Unix系統(tǒng)中使用的最古老的進程間通信的方法之一。操作系統(tǒng)通過信號來通知進程系統(tǒng)中發(fā)生了某種預先規(guī)定好的事件(一組事件中的一個),它也是用戶進程之間通信和同步的一種原始機制。

(5)共享內(nèi)存通信共享內(nèi)存就是映射一段能被其他進程所訪問的內(nèi)存,這段共享內(nèi)存由一個進程創(chuàng)建,但多個進程都可以訪問(使多個進程可以訪問同一塊內(nèi)存空間)。共享內(nèi)存是最快的 IPC 方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號量,配合使用,來實現(xiàn)進程間的同步和通信。

(6)套接字通信上面說的共享內(nèi)存、管道、信號量、消息隊列,他們都是多個進程在一臺主機之間的通信,那兩個相隔幾千里的進程能夠進行通信嗎?答是必須的,這個時候 Socket 這家伙就派上用場了,例如我們平時通過瀏覽器發(fā)起一個 http 請求,然后服務器給你返回對應的數(shù)據(jù),這種就是采用 Socket 的通信方式了。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關(guān)推薦HOT
軟件定制開發(fā)中的敏捷開發(fā)是什么?

軟件定制開發(fā)中的敏捷開發(fā)是什么軟件定制開發(fā)中的敏捷開發(fā),從宏觀上看,是一個高度關(guān)注人員交互,持續(xù)開發(fā)與交付,接受需求變更并適應環(huán)境變化...詳情>>

2023-10-14 13:24:57
什么是PlatformIo?

PlatformIO是什么PlatformIO是一個全面的物聯(lián)網(wǎng)開發(fā)平臺,它為眾多硬件平臺和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

2023-10-14 12:55:06
云快照與自動備份有什么區(qū)別?

1、定義和目標不同云快照的主要目標是提供一種快速恢復數(shù)據(jù)的方法,它只記錄在快照時間點后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動備份的主要目標...詳情>>

2023-10-14 12:48:59
服務器為什么要用Linux?

服務器為什么要用Linux作為服務器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務器操作系統(tǒng)的優(yōu)選,有其獨特的優(yōu)勢和特點。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19