天天看點

作業系統筆記

虛拟檔案系統當時的設計目的是為了網絡檔案系統而設計的。

虛拟檔案系統,是一個抽象層。是以一個分區可以同時存在多個檔案系統

的原因就是,有個抽象層。。

Windows沒有這個,不需要這樣子做。它靠盤符來确定檔案系統

網絡檔案系統的缺點:

需要鎖機制。

無狀态性。用戶端并沒有記錄打開的檔案。為什麼不記錄打開項呢?

其實是把服務端做為一個子目錄來使用的。

現在終于明白為什麼linux沒有分區的概念了。window 之是以要進行分區。就是因為,它需要區分不同的檔案系統。當你請求一個檔案時,給出路徑,作業系統就能知道向哪個檔案系統去請求,就是因為分區。一個分區隻能有一個檔案系統。window通過盤符來确定檔案系統。

Linux不需要分區。因為它做了一個抽象層。來管理所有檔案系統。

作業系統針對這個抽象層來擷取資料

使用挂載的方式。a 和b兩個磁盤可以挂載到同一個目錄下去。讀取檔案的時候,關心的是所有檔案系統的抽象層操作,可以了解成接口。

檔案系統的設計方式

按需配置設定。打開的檔案屬性才放入記憶體中。

關鍵點是記錄某個檔案用到哪幾塊磁盤位址。一個檔案可能占多個磁盤塊,可能是一個。關鍵在于檔案的的大小

檔案名,磁盤塊位址,多個。

連續配置設定:一個檔案占據了3個磁盤塊。是連續在一起的。

讀的性能很好,讀一個檔案的内容隻要一次操作,找到第一個磁盤塊,後面的磁盤塊就知道了。不用繼續旋轉。

缺點是,磁盤碎片多。要想避免碎片,要多進行碎片整理(不顯示,太耗費性能)。是以這種方式不适合變化大小的檔案。适合固定大小。比如CD檔案。

連結清單配置設定:解決磁盤碎片。檔案占用三個磁盤塊,這三個磁盤塊可以在任意位置,很友善擴充檔案的容量。比如檔案增加内容,要加一個磁盤塊,随便去哪裡拖一個磁盤塊挂上去。有一個指針指向磁盤塊位址。

缺點是,随機讀寫耗費性能。比如要讀一個檔案的第6個磁盤塊的内容,必須從找到檔案的第一個磁盤塊然後順着順序第二,第三.....第五全部讀到,才能知道第六個磁盤塊在哪裡。

為了提高速度。把檔案的連結清單放到記憶體中。

在記憶體中存儲連結清單。

多少個檔案。就要多少個連結清單項嗎?

為了解決占用記憶體過多問題(磁盤容量比記憶體大多了。

疑問,這個連結清單項是如何設計的呢。

連結清單這種資料結構要看看。。

檔案名,目錄是特殊的檔案。

目錄下有子目錄如何實作的。檔案最終在目錄下

在作業系統概念中,對cpu的抽象就是程序。對記憶體進行抽象就是程序空間。而檔案是程序建立資訊的基本邏輯單元。

了解透徹三個概念,學習作業系統非常關鍵。

程序(其中包括線程)、位址空間、檔案

繼續閱讀