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

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

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

進程之前的通信方式

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

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

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

進程之前的通信方式

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

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

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

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

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您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 剛剛成功領取
相關推薦HOT