unix核心程式設計原理 二

2021-08-22 19:52:54 字數 744 閱讀 6393

檔案系統篇

建立乙個新檔案的過程:

1,儲存屬性    檔案屬性的儲存:核心先找到乙個空的i-節點,假如編號是47。核心把檔案的資訊記錄其中。

2,儲存資料   根據檔案的大小,分配相應數目的塊

3,記錄分配情況    檔案內容按順序存放在塊中,核心在i-節點的磁碟分布區記錄了上述的塊序列。磁碟分布區是乙個磁碟塊序號的列表,這3個編號放在最開始的3個位置。

4,新增檔名到目錄   假設檔名是usrlist,核心將入口(47,usrlist)新增到目錄檔案。檔名和i-節點號之間的對應關係將檔名和檔案的內容及屬性連線了起來。

當用cat命令檢視檔案內容時,首先在目錄檔案中根據檔名usrlist找到所在記錄的包含編號為47的i-節點號。定位i-節點號47並讀取其內容。核心在檔案系統中的i-節點區域找到i-節點47.i節點包含資料塊編號的列表。然後cat不斷的呼叫read函式,使得核心不斷將位元組從磁碟複製到核心緩衝區,進而到達使用者空間。

可以得到一下結論:

目錄包含的是檔案的引用,每個引用被稱為連線。檔案的內容儲存在資料塊,檔案的屬性被記錄在乙個被稱為i-節點的結構中,i-節點的編號和檔名儲存在目錄中。「目錄包含子目錄」的原理與此相同。

磁碟空間不足的概念:

乙個unix檔案系統有乙個i-節點區域和乙個資料區域。因此,即使資料區有空間,i-節點空間也有可能不足。當unix上安裝了乙個新的磁碟,需要將磁碟分成i-節點表和資料區。檔案系統的每個檔案都需要乙個i-節點。i-節點表越大,則留給檔案內容的空間越小。

UNIX網路程式設計(二)

udp不保證udp資料報會到達其最終目的地,不保證各個資料報的先後順序跨越網路後保持不變,也不保證每個資料報只到達一次。tcp提供客戶與伺服器之間的連線,還提供了可靠性。建立乙個tcp連線會發生三次握手 伺服器必須準備好接受外來的連線。這通常通過socket bind listen這三個函式來完成。...

UNIX網路程式設計 鎖(二)

1.3 訊號量讀寫鎖的實現 此部落格是關於一篇訊號量的文章,訊號量提供程序間互斥,很方便。用mutex來實現訊號量的功能,必須將mutex建立在共享記憶體上才能實現。所以當需要執行緒間互斥的時候,最好是用mutex 當用程序間互斥的時候,用sem。歸結起來,mutex直接用到程序上,顯得無用 sem...

Unix 核心概述

核心本身並不是乙個程序,而是程序的管理者。程序 核心模式假定 請求核心服務的程序使用所謂系統調 system call 的特殊程式設計機制。每個系統呼叫都設定了乙個組識別程序請求的引數,然後執行與硬體相關的cpu指令完成從使用者態到核心態的轉換。unix系統還包括幾個所謂核心執行緒 kernel t...