程序間通訊介紹
1.unix系統上各種通訊和同步工具,並根據功能將他們分成了三類
(1)通訊:這些工具關注程序之間的資料交換
(2)同步: 這些程序關注程序和執行緒操作之間的同步
(3)訊號:儘管訊號的主要作用並不在此,但在特定場景下可以將它作為一種同步技術
2.資料傳輸工具:為了通訊,乙個程序將資料寫入ipc工具,另乙個從中讀取資料。這些工具要求在使用者記憶體和核心記憶體之間進行兩次資料傳輸:一次傳輸時寫入時從使用者記憶體到核心記憶體,另一次傳輸是在讀取時候從核心記憶體到使用者記憶體
3.共享記憶體:共享記憶體允許程序通過將資料放到有程序間共享的一塊記憶體中以完成資訊的交換。
4.資料傳輸分為兩大類:位元組流(管道,fifo,資料報socket),訊息(兩種訊息佇列以及資料報socket)
5.共享記憶體:訊號量用來作為同步的方法
6.訊號量:乙個訊號量是乙個核心維護的整數,其值永遠不會小於0.乙個程序可以增加或減小乙個訊號量的值。如果乙個程序試圖將訊號量的值減小到小於0,那麼核心會阻塞該操作直至訊號量的增長到允許執行該操作的程度(或者非阻塞,直接返回錯誤)。乙個程序減小乙個訊號量是為了預約對共享資源的獨佔訪問,在完成了使用之後可以增加訊號量。二元訊號量使用較多,但處理一類共享資源擁有多個例項的應用程式需要使用最大值等於共享資源數量的訊號量
7.檔案鎖:檔案鎖是設計用來協調操作同乙個檔案的多個程序的動作的一種同步方法。檔案鎖分為讀鎖和寫鎖。
8.互斥體和條件變數:這些同步工具通常用於posix執行緒
9.ipc永續性:只有噹噹顯示的刪除ipc物件或系統關閉,該物件才會被銷毀,否則該物件會一直存在
《Linux Unix設計思想》讀書筆記
這只是我自己的總結,其中一些我沒有深刻印象的東西就沒有列出來。其他的 1.nih not invented here 非我發明就要自己寫,要利用別人的優秀 2.三個系統 1 第乙個,初創系統 簡單,做出之前沒有的東西 2 第二個,專家系統 功能全,臃腫 3 第三個,改進系統 大幅優化,顛覆性,最優體...
Linux Unix設計思想 讀書筆記
初識erlang時感覺怪異的方法命名,寫shell指令碼時的恍然大悟,原來一切源頭都在 linux unix 設計思想 下面是我的讀書筆記,按照我自己的理解重新梳理了一下 盡快建立原型,尋找90 的解決方案,先執行起來再說 保持程式的小巧,一次做好一件事情 站在巨人的肩膀上 在原有軟體的基礎上進行加...
讀書筆記 之五
筆者的話 接觸硬體較少,很多術語都是字面翻譯,讀者請見諒.我盡量帶上英文原詞,避免歧義.2.2 磁碟驅動器元件 磁碟驅動器使用快速移動的臂來在大唱片一樣的覆蓋著小磁粒的碟片上讀寫資料的.資料從磁碟片上通過r w頭傳輸到計算機中.多個碟片,讀寫頭和控制器被組合在一起,通常這被稱為是硬碟驅動器 hard...