檔案目錄(MOOC)
1.知識總覽
2.檔案控制塊 (FCB file control block)
FCB的有序集合稱為“檔案目錄”,一個FCB就是一個檔案目錄項。
FCB中包含了檔案的基本資訊(檔名、實體地址、邏輯結構、物理結構等),存取控制資訊(是否可讀/可寫、使用者訪問許可權等),使用資訊(如檔案的建立時間、修改時間等)。
最重要最基本的是檔名,檔案存放的實體地址。
FCB實現了檔名和檔案之間的對映。使使用者(使用者程式)可以實現“按名存取”。
3.目錄操作
搜尋:當使用者要使用一個檔案時,系統要根據檔名搜尋目錄,找到該檔案對應的目錄項。
建立檔案:建立一個新檔案時,需要在其所屬的目錄中增加一個目錄項。
刪除檔案:當刪除一個檔案時,需要在目錄中刪除相應的目錄項。
顯示目錄:使用者可以請求顯示目錄的內容,如顯示該目錄中的所有檔案及相應屬性。
修改目錄:某些檔案屬性儲存在目錄中,因此這些屬性變化時需要修改相應的目錄項(如:檔案重新命名)。
4.目錄結構
-
4.1單級目錄結構
早期的作業系統並不支援多級目錄,整個系統中只建立一張目錄表,每個檔案佔一個目錄項。
- 單級目錄實現了按名存取,但是不允許檔案重名。在建立一個新檔案時,需要先檢查目錄表中有沒有重名檔案,確定不重名後才能允許建立檔案,並將新檔案對應的目錄項插入目錄表中。單級目錄結構不適用於多使用者作業系統。
-
4.2兩級目錄結構
早期的多使用者作業系統,採用兩級目錄。分為主檔案目錄(MFD,Master File Directory)和使用者檔案目錄(UFD,User File Directory)。
- 兩級目錄結構允許不同使用者的檔案重名,也可以在目錄上實現訪問限制(檢查此時登陸的使用者名稱是否匹配)。但是兩級目錄結構依然缺乏靈活性,使用者不能對自己的檔案進行分類。
-
4.3多級目錄結構(樹形目錄結構)
使用者或使用者程式要訪問某個檔案時要用檔案路徑名識別符號檔案,檔案路徑名是個字串。各級目錄之間用“/”隔開。從根目錄出發的路徑稱為絕對路徑。
系統會根據絕對路徑一層層地找到下一級目錄。
很多時候,使用者會連續訪問同一目錄內地多個檔案。如果每次都從根目錄開始查詢,則效率很低下。可以設定一個“當前目錄”。比如,當前開啟了“照片”的目錄檔案,即“照片”目錄表已調入記憶體,則可以把其設定為“當前目錄”。當使用者想要訪問當前目錄下的某個檔案時,即可以使用從當前目錄出發的相對路徑。
在Linux中,“.”表示當前目錄。
-
4.4無環圖目錄
樹形目錄可以很方便地對檔案進行分類,層次結構清晰,也能夠更有效地進行檔案地管理和保護。但是,樹形結構不便於實現檔案共享。為此,進一步提出了無環圖目錄結構。
在樹形目錄結構地基礎上,增加一些指向同一節點的有向邊,使整個目錄成為一個有向無環圖。可以更方便地實現多個使用者間的檔案共享。
可以用不同的檔名指向同一個檔案,甚至指向同一個目錄(共享同一目錄下的所有內容)。需要為每個共享結點設定一個共享計數器,用於記錄此時有多少個地方在共享該結點。使用者提出刪除結點的請求時,只是刪除該使用者的FCB、並使共享計數器減1,並不會直接刪除共享節點。
注意:共享檔案不同於複製檔案。在共享檔案中,由於各使用者指向的是同一個檔案,因此只要其中一個使用者修改了檔案資料,那麼所有的使用者都可以看到檔案資料的變化。
5.索引節點(FCB的改進)
索引節點包含了檔名之外的檔案描述資訊。
當找到檔名對應的目錄項時,才需要將索引節點調入記憶體,索引節點中記錄了檔案的各種資訊,包括檔案在外存中存放的位置。
存放在外村中的索引節點稱為磁碟索引節點,當索引節點放入記憶體後稱為記憶體索引節點。記憶體索引節點需要增加一些資訊,例如檔案是否被修改,此時有幾個程式正在訪問該檔案等。
6.總結
相關文章
- 檔案目錄配置
- Docker 檔案目錄Docker
- Redhat:檔案目錄管理Redhat
- laravel檔案目錄樹Laravel
- Linux檔案目錄Linux
- 檔案管理 檔案目錄概念
- Ionic檔案目錄說明
- 檔案目錄許可權操作
- mysql修改資料檔案目錄MySql
- IDA檔案目錄簡介
- Java實現檔案目錄操作書目錄Java
- DedeCMS模板目錄的檔案目錄結構
- idea訪問resources檔案目錄Idea
- iOS沙盒檔案目錄介紹iOS
- [PY3]——IO——檔案目錄操作
- 【Linux檔案目錄命令】rm命令Linux
- tomcat配置虛擬檔案目錄Tomcat
- 更改MySQL資料檔案目錄位置MySql
- MySQL檔案目錄格式及存放位置MySql
- Oracle 11g RAC檔案目錄Oracle
- 檔案的邏輯結構、檔案目錄
- Linux訪問Windows共享檔案目錄LinuxWindows
- linux的部分檔案目錄操作語句Linux
- 解析Linux作業系統檔案目錄Linux作業系統
- ORA-09817 trace檔案目錄滿了
- Linux中操作工作目錄和檔案目錄Linux
- Spark輸出自定義檔案目錄踩坑(Java)SparkJava
- iOS 常見的系統檔案目錄介紹iOS
- Java 如何監控檔案目錄的變化 【轉】Java
- Oracle在Linux下的安裝,檔案目錄OracleLinux
- 鴻蒙前端開發1-檔案目錄結構鴻蒙前端
- Android安全開發之ZIP檔案目錄遍歷Android
- C標準庫之檔案目錄操作函式——_tempnam函式
- Windows MySQL load data 命令中的infile 檔案目錄WindowsMySql
- java基礎:遞迴應用---遍歷檔案目錄Java遞迴
- rhel4_oracle_oratab_oraInst.loc檔案目錄OracleAI
- vue專案目錄結構Vue
- vue 路由自動化[讀取vue檔案目錄][支援children]Vue路由