傳統的Linux中IPC通訊原理

2021-10-12 20:20:34 字數 547 閱讀 6413

linux 中跨程序通訊有一些幾個基本的概念

程序隔離

程序空間劃分: 使用者空間(user space) & 核心空間(kernel space)

系統呼叫: 使用者態 & 核心態

linux 使用兩級保護機制: 0 級供系統核心使用, 3 級供使用者程式使用

通常做法是將訊息傳送方要傳送的資料放在記憶體快取區中, 通過系統圖呼叫進入核心態, 然後核心程式在核心空間分配記憶體, 開闢一塊核心快取區, 呼叫copy_from_user()函式將資料從使用者空間的記憶體快取區 copy 到核心空間的核心快取區中. 同樣的接收方程序在接收資料時在自己的使用者空間開闢一塊記憶體快取去, 然後核心程式呼叫copy_to_user()函式將資料從核心快取區 copy 到接收程序的記憶體快取區. 這樣資料傳送方程序和資料接收方程序就完成了一次資料傳輸. 也就是完成了一次程序間通訊.

傳統的 ipc 通訊方式有兩個問題

linux程序通訊(ipc)

1 管道 半雙工管道是最常用的ipc 只能在有關係的程序間才能使用,shell上常用 2 命名管道 在檔案系統中命名管道式以特殊檔案的形式存在的。不在同一程序組的兩個程序通訊可以使用命名管道。3 訊息佇列 核心空間中的內部鍊錶,通過linux核心在各個程序之間傳遞內容 4 訊號 用於在乙個或多個程序...

Linux程序間通訊 IPC

linux下的程序通訊手段基本上是從unix平台上的程序通訊手段繼承而來的。而對unix發展做出重大貢獻的兩大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序間通訊方面的側重點有所不同。前者對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v...

Linux程序間通訊(IPC)

程序通訊有例如以下一些目的 a 傳輸資料 乙個程序須要將它的資料傳送給還有乙個程序。傳送的資料量在乙個位元組到幾m位元組之間 b 共享資料 多個程序想要操作共享資料。乙個程序對共享資料的改動,別的程序應該立馬看到。c 通知事件 乙個程序須要向還有乙個或一組程序傳送訊息。通知它 它們 發生了某種事件 ...