【文章內容簡介】
個指向下一個物理塊的指針。 文件管理 鏈接分配 ? 隱式鏈接: 251 2 305 6 7491011813 14 151217 18 191621 22 23202526272429 30 3128f i le s t a r t e n dj e e p 9 25目錄101 116? 只適合順序訪問 文件管理 鏈接分配 ? 顯式鏈接: ? 把用于鏈接文件各物理塊的指針,顯式地存放在內存的一張鏈接表中。該表在整個磁盤僅設置一張,表的序號是物理盤塊號,每個表項中的鏈接指針即是下一個盤塊號。該表稱為文件分配表 FAT。 ? 某一文件的第一個盤塊號,作為文件地址被填入相應文件的 FCB的“物理地址”字段中。 ? 查找記錄的過程在內存中進行,因此能顯著提高檢索速度,減少訪問磁盤次數。 文件管理 鏈接分配 ? 顯式鏈接: 012345物理塊號2F C B F A T0451文件管理 鏈接分配 ? 顯式鏈接: MS- DOS物理結構 6E O F11105E O F0123456789F A TF C B A4F C B B9文件管理 文件控制塊和索引結點 ? 假定磁盤塊的大小為 1K,對于 800M的硬盤,其文件分配表 FAT需要占用多少存儲空間? ? 由題目條件可知,硬盤大小為 800M,磁盤塊的大小為 1K,所以該硬盤共有盤塊: 800M / 1K= 800K(個 ) ? 又 512K800K1024K,故 800K個盤塊號要用 20位二進制表示,即文件分配表的每個表目為 。 ? FAT要占用的存儲空間總數為: * 800K = 2022K 文件管理 索引分配 ? 單級索引分配 ? 鏈接分配方式雖然解決了連續(xù)分配方式所存在的問題, 但又出現了另外兩個問題, 即: ? 1) 不能支持高效的直接存取。要對一個較大的文件進行直接存取,須首先在 FAT中順序地查找許多盤塊號。 ? 2) FAT需占用較大的內存空間。 ? 實際上在打開某個文件時,只需把該文件占用的盤塊的編號調入內存即可,完全沒有必要將整個 FAT調入內存。 文件管理 索引分配 ? 單級索引分配 ? 索引分配方法,為每個文件分配一個索引塊(表),再把分配給該文件的所有盤塊號,都記錄在該索引塊中,因而該索引塊就是一個含有許多盤塊號的數組,在建文件時,便在相應的文件目錄項中,填上指向該索引塊的指針。 ? 索引分配方式支持直接訪問。 ? 索引分配方式的主要問題是:可能要花費較多的外存空間,小文件的索引塊的利用率是極低的。 文件管理 索引分配 ? 單級索引分配 1 2 305 6 7491011813 14 151217 18191621 2223202526272429 303128c o u n tf i le 塊序號j e e p 19目錄91611025- 1- 1- 119文件管理 索引分配 ? 多級索引分配 ? 如文件很大,一個索引塊已滿,則 OS便再為該文件分配新的索引塊,各索引塊按序連接。顯然索引塊太多時,這種方法是低效的。 ? 解決辦法:為這些索引塊再建立一級索引,形成稱二級索引。 文件管理 索引分配 ? 多級索引分配 012……………105106254356357985105106254740356357…1125985360740…1125…主索引360第二級索引磁盤空間文件管理 索引分配 ? 多級索引分配 ? 假設:每個盤塊的大小為 1KB,每個盤塊號占 4個字節(jié),則一個索引塊中可存放 256個盤塊號。所允許的文件最大長度為 256K(256 1K) ? 二級索引最多盤塊號總數 N: =256 256=64K個盤塊號,有此可得出結論:采用兩級索引時,所允許的文件最大長度為 64MB(64K 1K) ? 倘若盤塊的大小為 4KB,單級索引,一個索引塊中可存放 1024個盤塊號,所允許的文件最大長度為 4MB(1024 4K) ? 采用兩級索引時所允許的文件最大長度可達 4GB(1024 1024 4K) 文件管理 索引分配 ? 混合索引分配方式 m o d eo w n e r s ( 2 )t i m e s t a m p s ( 3 )s i z eb lo c k c o u n ti . a d d r ( 0 )i . a d d r ( 1 )d ir e c t b l o c k ss i n g l e i n d ir e c td o u b le in d ir e c tt r ip l e in d i r e c td a t ad a t ad a t ad a t a……d a t ad a t a………d a t ad a t ad a t ad a t a? 指將多種分配方式相結合而 形成的一種分配方式。如系 統既采用直接地址,又采用 一級索引、二級索引、甚至 三級索引的分配方式。 文件管理 目錄管理 ? 目錄管理 ? ? 實現“按名存取”。 ? 提高對目錄的檢索速度。 ? 文件共享。 ? 允許文件重名。 文件管理 文件控制塊和索引結點 ? 目錄管理 ? 為了能對一個文件進行正確的存取,必須為文件設置用于描述和控制文件的數據結構,稱為“文件控制塊 (FCB)”。 ? 文件控制塊 (FCB)存放了管理文件所需的所有信息 (文件名,文件屬性 ) ? 一個文件有一個文件控制塊。文件控制塊的有序集合稱為文件目錄。 文件管理 文件控制塊和索引結點 ? 文件控制塊 ? 基本信息類 ? ① 文件名 ; ② 文件物理位置 ; ? ③ 文件邏輯結構 ; ④ 文件的物理結構 ? 存取控制信息類 ? 文件主的存取權限、核準用戶的存取權限以及一般用戶的存取權限。 ? 使用信息類 ? 文件的建立日期和時間、文件上一次修改的日期和時間及當前使用信息。 文件管理 文件控制塊和索引結點 ? 文件控制塊 ? MSDOS中的文件控制塊, FCB的長度為 32個字節(jié),對 360KB的軟盤,總共可包含 112個 FCB,共占 4KB的存儲空間 文件名擴展名屬性備用時間日期第一塊號盤塊數文件管理 文件控制塊和索引結點 ? 索引結點 ? 引入: ? 文件目錄通常存放在磁盤上,當文件很多時,文件目錄可能要占用大量的盤塊 ? 過程:先將存放目錄文件的第一個盤塊中的目錄調入內存,然后把用戶所給定的文件名與目錄項中的文件名逐一比較。若未找到指定文件,便將下一個盤塊中的目錄項調入內存。 ? 若目錄文件所占用的盤塊數為 N,按此方法查找,則查找一個目錄項平均需要調入盤塊 (N+1)/2次。 文件管理 文件控制塊和索引結點 ? 索引結點 ? 引入: ? 設一個 FCB為 64B,盤塊大小為 1KB,則每個盤塊中只能存放 16個 FCB;若一個文件目錄中共有 640個 FCB,需占用 40個盤塊,平均查找一個文件需要啟動磁盤 20次。 ? 檢索目錄文件時,目錄項的所有內容都必須嗎? ? 在檢索目錄文件的過程中,只用到了文件名 ? 解決:把 FCB分成兩部分 – 文件名和文件屬性( i結點) 文件管理 文件控制塊和索引結點 UNIX的文件目錄 一個 FCB占 16B, 1KB盤塊存放 64個目錄項,若一個文件目錄中共有 640個 FCB,需占用 10個盤塊。平均查找一個文件需啟動磁盤 5次 (原來 40個盤塊, 20次)。 文件名 索引節(jié)點編號 文件名 1 文件名 2 . . . . . . 14字節(jié) 2字節(jié) 文件管理 文件控制塊和索引結點 ? 磁盤索引結點 (i 結點 ) ? 文件所有者標識 : iuid,igid ? 文件類型: i_type ? 文件存取許可權: i_mode ? 文件聯結數目: i_ilink ? 文件存取時間: i_time ? 文件長度: i_size ? 地址索引表: i_addr[13] UNIX中磁盤索引結點放入磁盤中約定的位置,在物理上連續(xù)存放,并順序編號。 所有者: mjb 用戶組: os 類型: