首頁 >運維 >linux運維 >linux什麼是管線?

linux什麼是管線?

青灯夜游
青灯夜游原創
2019-12-25 18:27:578438瀏覽

linux什麼是管線?

管道是Linux由Unix繼承過來的進程間的通訊機制,它是Unix早期的一個重要通訊機制。其思想是,在記憶體中創建一個共享文件,從而使通信雙方利用這個共享文件來傳遞訊息。由於這種方式具有單向傳遞資料的特點,所以這個作為傳遞訊息的共享檔案就叫做「管道」。

在管道的特定實作中,根據通訊所使用的檔案是否具有名稱,有「匿名管道」和「命名管道」。

管道與共享記憶體的區別

#乍一看,感覺管道和共享記憶體並不是區別很大,這裡介紹一下兩者之間的區別:

● 管道需要在內核和用戶空間進行四次的資料拷貝:由用戶空間的buf中將資料拷貝到核心中-> 核心將資料拷貝到記憶體中-> 記憶體到核心-> ; 核心到使用者空間的buf。而共享記憶體則只拷貝兩次資料:使用者空間到記憶體 -> 記憶體到使用者空間。

● 管道用循環佇列實現,連續傳送資料可以不限大小。共享記憶體每次傳遞資料大小是固定的;

● 共享記憶體可以隨機存取被映射檔案的任意位置,管道只能順序讀寫;

##● 管道可以獨立完成資料的傳遞和通知機制,共享記憶體需要藉助其他通訊方式進行訊息傳遞。

也就是說,兩者之間最大的區別就是: 共享記憶體區是最快的可用IPC形式,一旦這樣的記憶體區映射到共享它的進程的位址空間,這些進程間資料的傳遞,就不再透過執行任何進入核心的系統呼叫來傳遞彼此的數據,節省了時間。

相關文章教學推薦:

linux教學#

以上是linux什麼是管線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn