linux 成功的關鍵之一是它具有和其他作業系統和諧共存的能力5個標準檔案型別:
1、普通檔案
2、目錄檔案
3、符號鏈結檔案
4、裝置檔案
5、管道檔案
虛擬檔案系統(virtual filesystem):核心軟體層,用來處理與unix標準檔案系統相關的所有系統呼叫。健壯性表現在能為各種檔案系統提供乙個通用的介面。
vfs支援的檔案系統可以分為三種主要型別:
1、磁碟檔案系統:
a、linux使用的ext2、ext3,以及reiser檔案系統(reiserfs);
b、unix家族的檔案系統,如sysv檔案系統(system v, coherent, xenix)、ufs(bsd、solaris、nextstep),minix檔案系統及 veritas vxfs (sco unixware )
c、window的檔案系統,如ms-dos,vfat,ntfs
d、iso9660 cd-rom 檔案系統和通用磁碟格式(udf)的***檔案系統
e、其他有專利權的檔案系統,如hpfs(ibm公司的os/2)、hfs(蘋果公司的macintosh)、affs、adfs
f、起源於非linux系統的其他日誌檔案系統,如ibm的jfs、sgi、xfs
2、網路檔案系統
這些檔案系統允許輕易的訪問屬於其他網路計算機的檔案系統所包含的檔案。虛擬檔案系統所支援的一些著名的網路檔案系統有:nfs、coda、afs、cifs(window的通用網路檔案 系統)以及ncp
3、特殊檔案系統
這些檔案系統不管理本地或者遠端磁碟空間。/proc 檔案系統是特殊檔案系統的乙個典範。
通用檔案模型:
1、能表示所有支援的檔案系統
2、要實現每個具體的檔案系統,必須將其物理組織結構轉換為虛擬檔案系統的通用檔案模型。
檔案分配表(file allocation table,fat):基於目錄的檔案系統
讀取檔案:
當我們呼叫read函式時,核心會呼叫相應的sys_read()服務例程,在sys_read()中檔案有結構file結構來表示,其包含乙個f_op欄位,這個字段包含了讀取各種檔案系統的方法
例如:file->f_op->read(), 針對不同的檔案系統,由不同的read方法來讀取
磁碟快取記憶體:屬於軟體機制,允許核心將原本存在磁碟上的某些資訊儲存在ram中,以便對這些資料的進一步訪問能快速進行,不必慢速訪問磁碟。
a、目錄項快取記憶體
b、索引節點快取記憶體
c、頁快取記憶體
硬體快取記憶體:是乙個快速靜態ram,它加快了直接對慢速動態ram的請求。
記憶體快取記憶體:是一種軟體機制,引入它是為了繞過核心記憶體分配器(參見slab分配器)
檔案系統的註冊:乙個檔案系統要能夠被使用,需要將他的型別註冊到乙個單向鍊錶中。
linux的根檔案系統:核心在引導階段直接安裝,並擁有系統初始化指令碼以及最基本大系統程式。
安裝點(mount point):安裝檔案系統的目錄。
程序的命名空間:每個程序可以擁有自己的已安裝檔案系統樹。
檔案系統的安裝:
1、多數類unix核心中,每個檔案系統只能安裝一次;例如 存放在/dev/fd0 軟磁碟上的ext2檔案系統通過命令(mount -t ext2 /dev/fd0 /flp)安裝在/flp
在通過umount解除安裝之前,所有作用在/dev/fd0的安裝命令都會失效。
2、linux不同,同乙個檔案系統可以被安裝多次。
3、不管乙個檔案系統被安裝了多少次,它都只有乙個超級塊物件。
4、同乙個安裝點可以安裝多個檔案系統
5、後安裝的會隱藏先安裝的,當頂層頂安裝被刪除後,下面的系統又變為可現
檔案系統的解除安裝:umount()
路徑名查詢:
1、路徑如果是以『\』開頭,是絕對路徑,從 current->fs->root開始搜尋
2、否則是相對路徑,從current->fs->pwd開始搜尋
標準路徑名查詢:
父路徑名查詢:
符號鏈結的查詢:需要注意迴圈引用,採用計數器解決。
檔案加鎖:
linux 檔案加鎖:
fl_flock鎖 和fl_posix鎖:
Linux核心 虛擬檔案系統
1.虛擬檔案系統是核心子系統,為使用者空間的程式提供了檔案和檔案系統的介面 2.vfs使得使用者可以直接使用系統呼叫而無需考慮具體檔案系統和實際物理介質 3.vfs定義了所有檔案系統都支援的介面和資料結構,同時檔案系統也將自身的一些概念在形式上和vfs保持一致 4.其實在核心中,除了檔案系統本身,其...
深入理解Linux核心 核心同步
核心基本的同步機制 搶占核心的主要特點 乙個在核心態執行的程序,可能在執行核心函式期間被另外乙個程序取代。核心搶占 linux 2.6允許使用者在編譯核心的時候配置十分啟用 程序臨界區 每個程序中訪問臨界資源 一次僅允許乙個程序使用的共享資源 的那段 稱為臨界區。優化屏障 保證編譯程式不會混淆放在原...
深入理解linux核心手記
linux的段式管理是對應於程式結構的,是一種自然的想法,linux共有6個段暫存器,其中有3個專門的段暫存器 cs 段暫存器 ss 程式棧段暫存器 ds 資料段暫存器 程式需要6個段 bss 存放未初始化資料,只有名稱和大小 段 資料段 存放已初始化資料 棧段,堆段。段式管理段缺點 相比喻頁式管理...