在linux中,協定堆疊是電腦網路協定套件的一個具體的軟體實現,是網路中各層協定的總和;協定套件中的一個協定通常是只為一個目的而設計的,這樣可以使得設計更容易,協定棧反映了一個網路中檔案傳輸的過程。
本教學操作環境:linux7.3系統、Dell G3電腦。
協定堆疊(英文:Protocol stack),又稱協定堆疊,是電腦網路協定套件的一個具體的軟體實作。協議套件中的一個協議通常是只為一個目的而設計的,這可以使得設計更容易。因為每個協定模組通常都要和上下兩個其他協定模組通信,它們通常可以想像成是協定棧中的層。最低級的協定總是描述與硬體的物理交互作用。每個高階的層次增加更多的特性。用戶應用程式只是處理最上層的協定。
解釋:網路中各層協定的總和,反映了一個網路中檔案傳輸的過程
#linux儲存協定堆疊簡介:
資料流程:
應用程式透過系統呼叫發出一個寫入請求,最終的目的是要把資料寫到磁碟上,
應用程式透過系統呼叫存取檔案。例如open呼叫
使用者應用程式存取並使用核心所提供的各種服務的途徑即是系統呼叫。
核心提供了一組系統呼叫接口,透過這組接口應用程式可以存取系統硬體及作業系統資源。
應用程式呼叫系統呼叫介面->核心->操作硬體->返回核心->應用程式
與儲存系統相關的主要是read、write、open
“mmap()將檔案(由檔案句柄fd所指定)從偏移offset的位置開始的長度為length的一個區塊映射到記憶體區域中,從而將檔案的某一段映射到進程的位址空間,這樣程式就可以透過存取內存的方式去存取檔案了。」
「典型的例子就是利用/dev/mem可以將一些MMU能存取的實體位址對應為應用程式層虛擬位址,從而可以在應用程式層直接存取某些實體位址,實現一些簡單的驅動開發。」
透過使用一組通用API,linux可以在多種裝置支援多種檔案系統。
檔案系統是一種對儲存裝置上的文件,數據,進行儲存與組織的機制。
linux支援是多種檔案系統
「虛擬檔案系統透過在各種特定的檔案系統上建立一個抽象層,屏蔽了不同檔案系統間的差異,透過虛擬檔案系統分層架構),我們在對文件進行操作時,便不需要去關心相關文件所在的具體文件系統細節。」
「正是虛擬文件系統使得這種跨越不同存儲設備和不同文件系統的操作成為了可能」
VFS所提供的常用API有:
mount(), umount() … open(),close() … mkdir() …
檔案系統這一層相信大家都再熟悉不過了,目前大多Linux發行版本預設使用的檔案系統一般是ext4,另外,新一代的btrfs也呼之欲出,不管什麼樣的檔案系統,都是由一系列的mkfs.xxx指令來創建,如:
mkfs.ext4 /dev/sda mkfs.btrfs /dev/sdb
核心所支援的檔案系統類型,可以透過核心目錄樹fs 目錄中的內容來檢視。
這一層的作用,不同的硬碟驅動,會提供不同的IO接口,核心認為這種雜亂的接口,不利於管理,需要把這些接口抽像一下,形成一個統一的對外接口,這樣,不管你是什麼硬碟,什麼驅動,對外而言,它們所提供的IO接口沒什麼區別,都一視同仁的被看作塊設備來處理。
所以,如果在一層做的任何修改,將會直接影響到所有檔案系統,不管是ext3,ext4還是其它檔案系統,只要在這一層次做了某種修改,對它們都會產生影響。
常見的硬碟類型有PATA, SATA和AHCI等,在Linux系統中,對不同硬碟所提供的驅動模組一般都存放在內核目錄樹drivers /ata中,而對於一般通用的硬碟驅動,也許會直接被編譯到核心中,而不會以模組的方式出現,可以透過檢視/boot/config-xxx.xxx檔來確認。
推薦學習:Linux影片教學
#以上是linux的協定棧是什麼東西的詳細內容。更多資訊請關注PHP中文網其他相關文章!