Linux Linux作業系統對檔案系統的管理

2021-08-22 06:14:40 字數 1720 閱讀 2447

在虛擬檔案系統的支援下,linux可以支援迄今為止的大多數檔案系統。但是,linux並不是在初始化時就把所有檔案系統全部都裝入,而只是安裝乙個檔案系統(通常是ext2)作為根檔案系統。根檔案系統在整個系統執行過程中是不能被拆卸的,是系統的基本組成部分。通常,根檔案系統上主要安裝了保證系統正常工作執行的作業系統**檔案以及若干語言編譯程式、命令解釋程式和相應的命令處理程式等檔案。其他檔案系統則都定義成可安裝模組,以便使用者需要時動態地進行安裝。

所謂安裝,就是在虛擬檔案系統中建立乙個超級塊super_block,並用被安裝檔案系統超級塊中的相關資訊填寫super_block,然後用被安裝檔案系統的根目錄代替系統現有目錄結構的乙個空目錄,從而把子系統與原檔案系統連線起來。

為使系統在安裝之前了解待安裝檔案子系統的基本資訊(例如超級塊的位置),必須向系統檔案登錄檔提交乙個資料結構進行註冊。

把乙個檔案系統安裝到根檔案系統的乙個節點上的示意圖如下所示:

由於不同的檔案系統具有不同的特點,因此其安裝過程也不盡相同。為了正確地安裝乙個檔案系統,被安裝的檔案系統在安裝之前必須向系統進行註冊,以便使系統感知和了解待安裝檔案系統的型別及安裝相關的資訊。

系統通過呼叫檔案的初始化例程來填寫乙個叫做file_system_type的資料結構,並呼叫函式register_filesystem()把該資料結構加入到由系統維護的已註冊檔案系統的鍊錶中。如下圖所示:

資料結構file_system_type的定義如下:

struct file_system_type ;
當系統試圖安裝乙個子檔案系統時,系統會呼叫函式mount()首先在檔案系統註冊鍊錶中查詢與使用者提供名稱相匹配的註冊檔案系統,如果找到,則在該檔案系統的file_system_type中獲得與檔案系統對應的超級塊的指標,並用超級塊中的相關資訊填寫系統分配給該系統的vfs超級塊,並把這個超級塊加入到vfs超級塊鍊錶中。接下來就要填寫乙個系統分配給該檔案系統的vfsmount資料結構,以儲存已被安裝的檔案系統的基本安裝資訊,從而把該檔案系統的根節點安裝到選定的vfs索引節點上。vfsmount結構的定義如下:

struct vfsmount ;
所有已經被安裝的系統都有乙個對應的vfsmount資料結構,結構中的指標mnt_mountpoint指向掛接點的目錄,而指標mut_root指向被安裝系統的根目錄,所以結構vfsmount是子系統與父系統之間的橋梁。該資料結構一旦被填寫,系統便認為該結構所對應的檔案系統已經被安裝。

所以,已經被安裝的系統的vfsmount資料結構,在系統中也是用乙個鍊錶來管理的。

拆卸乙個檔案子系統的過程基本與安裝的過程相反。系統首先驗證檔案子系統是否為可拆卸的:如果該檔案子系統的檔案正在被使用,則該系統時不可拆卸的;否則,釋放該檔案子系統所占用的vfs超級塊和安裝點,從而卸下該檔案子系統。

Linux Linux作業系統簡介與與版本的選擇

作業系統就是溝通使用者和硬體之間傳遞資訊的工具或程式。是計算機中負責支撐應用程式執行環境以及作業系統環境的基礎系統軟體,同時也是計算機系統的核心。常見的作業系統 windows unix linuxunix是乙個強大的多使用者 多工作業系統。windows遠端不支援多使用者同時連線 unix支援多種...

Linux Linux系統(檔案操作)

linux有三種檔案型別,普通檔案,目錄,裝置檔案 檢視檔案 使用命令ls獲取ll,檢視檔案列表,引數 l 列表形式 a 展示隱藏檔案 使用元字元 檢視匹配的檔案列表,例如 ll a 展示以a開頭的檔案 使用cat命令,檢視檔案內容,引數 b顯示行號,檔名 使用wc命令,統計當前檔案的行數 單詞數 ...

對作業系統的思考

作業系統是乙個軟體。在編寫過裸機程式之後就知道乙個程式跑起來是需要怎樣的資源與怎樣的環境的。這個時候組織這個環境與資源分配的便是作業系統。作業系統就是乙個執行在裸機上的程式。作業系統為上層應用提供介面。乙個作業系統可以為上層應用提供介面,這個時候程式設計師使用介面的時候就不是面對裸機了,而是面對抽象...