1. 程式人生 > >Linux 檔案系統概念

Linux 檔案系統概念

常見的linux檔案系統有minifs,ext4fs,yaffs... 

Flash分割槽概念,一個分割槽就是一個獨立的檔案系統(當然分割槽也可以沒有檔案系統,只是單純的二進位制資料),類似於windows中的概念,分割槽資訊記錄在MBR中,通常我們在燒寫嵌入式系統時,就是根據完整的分割槽資訊去燒寫的. 

根檔案系統概念:首先根檔案系統可以是任何kernel支援的檔案系統型別(ext4,yaffs等),然後它必須包含linux核心啟動時所必需的檔案(根檔案系統必需存在的目錄 /dev /bin /sbin 等等,看到的/下的目錄都屬於根檔案系統目錄),不然系統啟動會失敗. 根檔案系統是之所以有個根(/)字,是因為它是linux系統啟動時掛載(mount,所以掛載,就是在記憶體中建立一個虛擬的檔案對應具體的flash分割槽的過程,掛載是不會儲存資訊,下次啟動時得重新掛載)的第一個檔案系統,啟動完成後可以自動(配置etc/fstab)或者手動的方式將其它檔案系統(分割槽)掛載到根檔案系統中.

下面這張圖完美的闡述了檔案訪問的過程. 檔案系統這個概念我一直理解得比較模糊,主要是沒搞清使用者層,核心層,flash上的資料 到底每個環節做了什麼,到底是怎麼樣的,主要是很多時候資料沒有很直白的語言去描述它,按照我的理解,說白了,檔案系統 就是一種 資料的組織方式而已,不同的檔案系統就是資料的組織方式不一致. 而在linux核心層已經支援了不同檔案系統的訪問,所以在應用層可以不用關心訪問的是具體什麼檔案系統,只管用系統呼叫介面或者更高階封裝的使用者介面去訪問便是了.所以說整個檔案系統框架應該包含,flash上的資料,linux kernel,使用者空間訪問介面,首先使用者空間寫一個檔案,這時候使用者空間的程式只需要關於檔名和所寫的內容,到了核心層,它需要關心這個檔案所處的檔案系統型別,然後這種檔案系統型別的介面去寫入資料,讀資料類似.  

過有通常所說的製造linux根檔案系統,就是生成檔案一系列核心的必需檔案然後製成某種檔案系統的格式.