第10章 檔案系統 (file system)
基本觀念 對於使用者來說,在跟作業系統接觸的過程中最常遇到的就是檔案(file) 檔案可以用來儲存程式與資料,通常作業系統都會含有一個檔案系統,主掌檔案與目錄(directory)的管理,例如微軟公司Windows作業系統中的[檔案總管]
檔案的用途 使用者可以透過檔案來儲存資料 長時間保存的文件可以放在檔案中歸檔 程式語言利用檔案來儲存可執行的程式碼 幾乎各種場合中都有用到檔案的機會
檔案目錄結構是一種樹狀結構
微軟Windows作業系統中對於 磁碟的管理
檔案名稱的組成
常見的檔案類型
檔案的分享(file sharing) 多個使用者分享檔案 透過遠端的檔案系統 檔案分享的一致性問題
檔案描述(file descriptor)的 資料結構 檔案名稱 : 一般使用者所知道的該檔案的名稱。 所有者(owner) : 建立檔案的處理元所屬的使用者,檔案的所有權(ownership)有時候可以經由系統轉移。 使用者(user) : 目前打開檔案的所有處理元。 檔案鎖(file locks) : 可以用來鎖定檔案進行讀或寫的動作。 目前的狀態 : 記載檔案目前使用的狀態。 是否可共享 (sharable) : 決定是否多個處理元可以同時開啟檔案使用。 保護的設定 : 決定檔案的所有者與使用者能對檔案進行的操作。 其他的屬性 : 包括檔案的長度、建立的時間、上回使用的時間、使用的次數與檔案在儲存裝置上存取的細節等資訊。
byte-stream檔案的操作 開啟檔案(檔案名稱) 關閉檔案(檔案指定名稱) 讀取(檔案指定名稱,緩衝區,長度) 寫入(檔案指定名稱,緩衝區,長度) 搜尋(檔案指定名稱,檔案位置)
檔案的結構與 存取方法(access methods) 結構化檔案 結構化序列檔案 索引循序檔案 倒轉檔案 (inverted file)
不具結構與具有結構的檔案 之間的差異
儲存層次之間存在的轉換問題
UNIX系統中處理元存取的檔案 stdin : 輸入裝置(input device)的檔案抽象代表(file abstraction) 。 stdout : 輸出裝置(output device)的檔案抽象代表(file abstraction) 。 stderr : 錯誤記錄檔案(error log file) 。
方塊串轉譯(stream-block translation)的機制
檔案系統的種類 低階(low-level)的檔案系統 : 只提供stream-block的轉譯功能,也就是把方塊串(block stream)轉成位元組串(byte stream)就好了。 結構化(structured) 的檔案系統 : 也稱為高階(high-level)的檔案系統,提供record-stream的轉譯功能。
DBMS對於檔案系統的使用關係
開啟檔案的作業流程
實體儲存方塊(physical storage block)的管理與配置方式 當做儲存媒體上連續的方塊。 當做用連結(link)彼此關聯的方塊。 當做用檔案索引(file index)彼此關聯的方塊。
分享時檔案存取的類型 讀取(read):從檔案讀取資料。 寫入(write):將資料寫入檔案中。 附加(append):將資料寫入到檔案的尾端。 執行(execute):將檔案載入(load)到記憶體中執行。 刪除(delete):刪除檔案並且清除所占有的空間。 列表(list):列出檔案的名稱與相關屬性。
使用者的類型 擁有者(owner) 群組(group) 全部(universe)
UNIX系統中的檔案權限
掛載的程序
掛載的實例(掛載前)
掛載的實例(掛載後)