文章目錄
文件及其邏輯結構
文件概念:由創建者所定義、具有文件名的一組相關元素的集合,可分爲結構文件和無結構文件兩種。
文件邏輯結構概念:文件的邏輯結構是從用戶觀點出發所觀察到的文件組織形式,是用戶可以直接處理的數據及其結構,它獨立於文件的物理特性,又稱爲文件組織。
順序文件
- 順序文件由數據依次排列組成。
- 順序文件可分爲串結構文件和有序結構文件。、
- 串結構文件按記錄存入文件的時間先後排列。
- 有序結構按關鍵字值大小排列。
- 順序文件又分爲定長記錄文件和變長記錄文件。
索引文件
若順序文件是變長記錄文件,可按記錄號或關鍵字爲每條記錄建立一個索引文件,存儲記錄在順序文件中的位置信息。
索引文件是定長的文件。
索引順序文件
- 索引文件太長會要求更多的I/O次數,直接影響了文件的讀/寫效率。
- 索引順序文件先對順序文件按記錄號或關鍵字排序分組,然後對組的第一個記錄索引。
直接文件和哈希文件
-
直接文件是一種特殊的哈希文件,記錄關鍵字值決定了記錄在順序文件中的位置。
-
哈希文件則由關鍵字值通過哈希函數計算獲得記錄在順序文件中的位置。
目錄的要求
- 實現“按名存取”。
- 提高對目錄的檢索速度。
- 文件共享。
- 允許文件重名。
文件的物理結構(***)
概念:文件的物理結構指文件的外存分配組織管理方式
文件佔用的外存空間以塊或簇等邏輯單位計量
連續分配
文件數據連續存儲可以提高存取速度,但限制了文件動態增長。
鏈接分配
隱式鏈接,鏈接指針包含在給文件分配的塊中,目錄中僅包含文件的起始塊和結束塊(或長度)。
- 鏈接指針分散在多個塊中,不利於安全措施的實現
顯示鏈接:將所有的鏈接信息提取放到文件分配表中
索引分配
-
在鏈接分配中,文件塊鏈接指針離散存儲,造成文件佔用塊號解析效率不高。
-
索引分配方式就是將塊號集中存放。
單級索引(一級索引)
用一個塊來記錄文件佔用的所有塊號,我們稱之爲索引塊
二級索引
因爲一個索引塊的大小有限,但是多級索引需要檢索多次,會影響性能
混合索引(直接地址、-級索引、兩級索引、三級索引方式)
空閒空間管理
空閒表法
- 若干連續的空閒塊組合成一個空閒區。
- 空閒表法將所有的空閒區記錄在一張表裏, 包括項號、起始空閒塊號、空閒塊數等。
空閒鏈表法
空閒鏈表法是以空閒塊或空閒區爲結點構成一個鏈表結構。
位視圖法(***)
用一位二進制表示,1代表已分配,0代表空閒。
- 塊號從0開始,BitsOfLine 是一行有多少位,如char類型爲8位
- block = line X BitsOfLine + column
- line = block/BitsOfLine
- column = block%BitsOfLine
成組鏈表法
用樹的結構表示
文件系統軟件模型
對象及其屬性
- 文件系統對象
- 超級塊對象
- 文件
- 目錄
- 索引結點
- 數據塊
對對象操縱和管理的軟件集合
- 對文件的讀/寫
- 對目錄文件的讀/寫
- 對磁盤空閒空間的管理
- 將文件的邏輯地址轉換爲物理地址
- 對文件的保護與共享;
文件系統接口
- 基於文件名(路徑)、文件邏輯地址(相對於文件起始地址的偏移)給用戶提供各種操作。
- 常用的文件操作有,創建文件、刪除文件、讀文件、寫文件、設置文件讀1寫位置、打開文件、關閉文件等。
文件共享
- 基於索引結點的共享方式
- 基於符號鏈的共享方式
課本習題
-
11 在 UNIX 中,如果一個盤塊的大小爲 1KB ,每個盤塊號佔 4 個字節,即每塊可放 256個地址。請轉換下列文件的字節偏移量爲物理地址。
⑴ 9999 ; ⑵ 18000 ;⑶ 420000
答:首先將邏輯文件的字節偏移量轉換爲邏輯塊號和塊內偏移量 ,就是將 [字節偏移量 ]/[ 盤塊大小 ],商爲邏輯塊號,
餘數是塊內偏移量
。在 FCB 中,第 0-9 個地址爲直接地址,第 10 個爲一次間接地址,第 11 個地址爲二次間接地址,第 12 個地址爲三次間接地址。再將文件的邏輯塊號轉換爲物理塊號。使用多重索引結構,在索引節點中根據邏輯塊號通過直接索引或間接索引找到對應的物理塊號。
-
9999/1024=9餘 783 ,則邏輯塊號爲9 ,直接索引第9個地址得到物理塊號,塊內偏移地址爲 783 。
-
18000/1024=17 餘 592 ,則邏輯塊號爲10<17<10+256,通過一次間接索引在第10個地址可得到物理塊號,塊內偏移地址爲592 。
-
420000/1024=410 餘160 ,則邏輯塊號爲 10+256<410 ,通過二次間接索引在第 11 個地址可得到一次間址,再由此得到二次間址,再找到物理塊號,其塊內偏移地址160 。
-
-
某操作系統磁盤文件空間共 500 塊,若用字長爲 32 位的位示圖管理磁盤空間,試問:
(1)位示圖需要多少字?
(2)第 i 字第 j 位對應的塊號是多少?
(3)給出申請 /歸還一塊的工作流程。
答:
(1)位示圖需要的字數計算: INT ( 500/32 ) =16個字。
(2)塊號 b=(i-1)*32+j
(3 )申請的過程:順序掃描位示圖、找到空閒塊並分配、修改位示圖map[i,j]=1 。歸還的過程:找到回收盤塊在位示圖中的行和列,修改位示圖map[i,j]=0 。