作業系統筆記

王滔發表於2015-04-21
虛擬檔案系統當時的設計目的是為了網路檔案系統而設計的。
虛擬檔案系統,是一個抽象層。所以一個分割槽可以同時存在多個檔案系統
的原因就是,有個抽象層。。

Windows沒有這個,不需要這樣子做。它靠碟符來確定檔案系統
網路檔案系統的缺點:
需要鎖機制。

無狀態性。客戶端並沒有記錄開啟的檔案。為什麼不記錄開啟項呢?
其實是把服務端做為一個子目錄來使用的。
 
 
現在終於明白為什麼linux沒有分割槽的概念了。window 之所以要進行分割槽。就是因為,它需要區分不同的檔案系統。當你請求一個檔案時,給出路徑,作業系統就能知道向哪個檔案系統去請求,就是因為分割槽。一個分割槽只能有一個檔案系統。window通過碟符來確定檔案系統。
Linux不需要分割槽。因為它做了一個抽象層。來管理所有檔案系統。
作業系統針對這個抽象層來獲取資料
使用掛載的方式。a 和b兩個磁碟可以掛載到同一個目錄下去。讀取檔案的時候,關心的是所有檔案系統的抽象層操作,可以理解成介面。

檔案系統的設計方式
 
 
按需分配。開啟的檔案屬性才放入記憶體中。
關鍵點是記錄某個檔案用到哪幾塊磁碟地址。一個檔案可能佔多個磁碟塊,可能是一個。關鍵在於檔案的的大小

檔名,磁碟塊地址,多個。
連續分配:一個檔案佔據了3個磁碟塊。是連續在一起的。
讀的效能很好,讀一個檔案的內容只要一次操作,找到第一個磁碟塊,後面的磁碟塊就知道了。不用繼續旋轉。
缺點是,磁碟碎片多。要想避免碎片,要多進行碎片整理(不顯示,太耗費效能)。所以這種方式不適合變化大小的檔案。適合固定大小。比如CD檔案。
連結串列分配:解決磁碟碎片。檔案佔用三個磁碟塊,這三個磁碟塊可以在任意位置,很方便擴充檔案的容量。比如檔案增加內容,要加一個磁碟塊,隨便去哪裡拖一個磁碟塊掛上去。有一個指標指向磁碟塊地址。
缺點是,隨機讀寫耗費效能。比如要讀一個檔案的第6個磁碟塊的內容,必須從找到檔案的第一個磁碟塊然後順著順序第二,第三.....第五全部讀到,才能知道第六個磁碟塊在哪裡。
為了提高速度。把檔案的連結串列放到記憶體中。
在記憶體中儲存連結串列。
多少個檔案。就要多少個連結串列項嗎?
為了解決佔用記憶體過多問題(磁碟容量比記憶體大多了。




疑問,這個連結串列項是如何設計的呢。
連結串列這種資料結構要看看。。
檔名,目錄是特殊的檔案。
目錄下有子目錄如何實現的。檔案最終在目錄下
 
 
 
 
在作業系統概念中,對cpu的抽象就是程式。對記憶體進行抽象就是程式空間。而檔案是程式建立資訊的基本邏輯單元。
 
理解透徹三個概念,學習作業系統非常關鍵。
 
程式(其中包括執行緒)、地址空間、檔案

相關文章