核心學習之程序間通訊(五)

2021-08-21 10:12:07 字數 533 閱讀 1893

管道與命名管道(fifo):

最適合在程序之間實現生產者/消費者的互動,有些程序從管道寫資料,而另外一些程序在管道中讀資料

管道是程序間的單向資料流,linux使用乙個描述符時,不必把另外乙個描述符關閉

管道確定:無法開啟已經存在的管道,即任意兩個程序不能共享同乙個管道,除非兩個管道有同乙個祖先

命名管道:新寫入的位元組總是先讀出的特殊檔案型別

跟管道的不同點:

1.索引節點出現在系統目錄樹而不是pipefs特殊檔案系統中

2.是乙個雙向的通訊管道

訊號量:

如果資源是可用的,那麼訊號量的值是正值,如果資源不可用,則訊號量的值為0,要訪問資源的程序試圖將訊號量減一,如果當前訊號量為0時,則核心阻塞這個程序,知道程序釋放受保護的資源後,該程序才能被喚醒

訊息:允許程序在預定義的訊息佇列中讀和寫訊息來互動訊息

共享記憶體:

允許程序通過共享記憶體塊來交換資訊,在共享大量資料的應用中,可能是最高效的程序通訊方式

套接字:

允許不同計算機程序在網路中交換資料

Linux程序間通訊(五)

共享記憶體 使得多個程序可以訪問同一塊記憶體空間,是最快的可用ipc形式。是針對其他通訊機制執行效率較低而設計的。往往與其它通訊機制,如訊號量結合使用,來達到程序間的同步及互斥。示例 comm.h 1 pragma once 2 3 include4 include5 include6 7 defi...

程序間通訊之

共享記憶體的概述 共享記憶體就是允許兩個不相關的程序訪問同乙個邏輯記憶體。共享記憶體是在兩個正在執行的程序之間共享和傳遞資料的一種非常有效的方式。不同程序之間共享的記憶體通常安排為同一段物理記憶體。程序可以將同一段共享記憶體連線到它們自己的位址空間中,所有程序都可以訪問共享記憶體中的位址,就好像它們...

筆記 Linux核心學習 三 之程序排程

程序排程 在可執行態程序之間分配有限處理器時間資源的核心子系統。1程序型別 i o消耗型程序 大部分時間用來提交i o請求或是等待i o請求,經常處於可執行狀態,但執行時間短,等待請求過程時處於阻塞狀態。如互動式程式。處理器消耗型程序 時間大都用在執行 上,除非被搶占否則一直不停的執行。綜合型 既是...