操作系統筆記07

第 七 、八 章    文件與磁盤空間管理

7.1 文件、文件系統

文件管理:把所管理的程序和數據組織成一系列的文件,並能進行合理的存儲、使用等操作。
1 )基本概念
數據項:描述對象某種屬性的字符集;是數據組織中可以命名的最小邏輯數據單位。
記錄:一組相關數據項集合,描述對象某方面的屬性;
關鍵字:一個記錄中的一個或幾個數據項的集合,用於唯一的標識一個記錄。
文件:由創建者定義的、具有文件名的一組相關元素的集合。
有結構:由相關記錄組成
無結構:字符流的形式
屬性:類型、長度、物理位置、創建時間

2 )文件類型

不同的系統對文件的管理方式不同
大多用擴展名標誌文件類型,按如下幾種方式分類文件
按用途:系統、用戶、庫文件
按數據形式:源文件、目標文件、可執行文件
按存取控制屬性:只執行、只讀、讀寫
按組織和處理方式:普通文件、目錄文件、特殊(設備)文件

3)文件系統模型

系統管理文件模型

4)文件操作
最基本的操作
創建/刪除文件:分空間,形成FCB及目錄(名,地址)
讀、寫:按名檢索目錄,找到文件地址,開始讀、寫
設置文件讀寫位置,實現隨機存取(尤其適用於記錄文件)

還需要:“打開”與“關閉”:
文件讀/寫操作 = 檢索 + 讀/寫。
每次讀寫前都要重複檢索增大開銷。所以爲了方便對同一文件的多次讀寫,一次檢索到文件後就在內存中記錄其位置,避免重複檢索。被記錄下位置的文件就是“打開”文件;
不需要再操作文件時,通過“關閉”這個系統調用關閉文件——即從打開文件表上刪除其路徑信息即可。
其他操作:改名、改所屬用戶、改訪問權限等屬性的操作。

 

7.2 文件結構、外存分配

文件系統設計的關鍵要素:
如何構成一個文件,以及如何存儲在外存。
文件結構:
文件的邏輯結構file logical structure:按用戶觀點如何組織數據;又稱文件組織file organization
基本要求:檢索速度高、方便修改、降低存儲空間費用(不連續)
文件的物理結構:根據外存上的物理塊的分配機制,記錄文件外存的存儲結構。用戶感知不到的。

1)文件邏輯結構的類型

有結構文件(記錄式)
①定長記錄
②變長記錄
如何組織記錄:

  • 順序文件。系統需按該類型記錄“長度”,通常定長。
  • 索引文件。系統需爲文件建立索引表。
  • 索引順序文件。建索引表,記錄每組記錄的第一個記錄位置。

無結構文件(字符流式)

  • 字節爲單位,利用讀寫指針依次訪問。
  • 系統對該類文件不需格式處理。

 

目標:有效利用外存空間,提高文件訪問速度
常用三種方式:

  • 連續分配
  • 鏈接分配(不連續)
  • 索引分配

通常一個系統中僅採用一種方式
採用的磁盤分配方式決定了文件的“物理結構”

  • 順序結構;
  • 鏈接式結構;
  • 索引式結構。

*** FAT表的相關計算

MS-DOS文件分配結構爲例:
        一個1.2M的磁盤,盤塊512B大小;若文件系統採用FAT格式,則FAT表大小如何?
表項個數     =  盤塊個數
        =  容量 / 盤塊大小 = 1.2 *220 / 29 = 1.2 *211 個
表項大小,決定於盤塊數量編號需要的位數=12 位;
FAT表大小 = 表項個數 * 表項大小
           = 1.2 *211 * 12 bit
           = 1.2 *211 * 1.5B = 3.6KB
以半字節(0.5B=4b)爲基本單位,表項需12位(1.5B)
由上述公式,若容量爲200M的磁盤,盤塊仍爲512B,FAT表大小如何?

FAT表表項有200K≈218 (個)
表項需20位,即2*8+4,2.5字節
FAT表需內存大小爲200*2.5=500KB

 

***多級索引下的文件大小

若兩級索引,盤塊1KB,盤塊號佔4字節
一個盤塊可存放的盤塊號數有多少個
1KB/4B = 210/4 = 28 = 256(個)
二級索引下的文件可分配的最大盤塊數
256 * 256 =26×210=64 K(個)
文件最大長度爲
            64K(個)*1KB=64MB
若盤塊大小爲4KB,單級索引允許文件最大長度爲4MB(4K/4*4KB),二級索引則文件最大可達4GB(1K*1K*4KB)。

 

7.3 目錄、存儲空間管理

爲實現存儲空間分配,系統需要:
記住空閒存儲空間使用情況;爲空間設置相應的數據結構;
提供對存儲空間分配、回收的操作手段。
典型的管理方法:
1)空閒表和空閒鏈表法
2)位示圖法
3)成組鏈接法

1)空閒表法和空閒鏈表法

空閒表法
常用於連續分配管理方式
1.數據結構
系統爲外存上的所有空閒區建立一張空閒表
每個空閒區對應一個空閒表項
(表項包括序號、空閒區的第一個盤塊號、空閒盤塊數等。)
將所有空閒區按其起始盤塊號遞增的次序排列,如右圖。

2.存儲空間的分配與回收操作
與內存的動態分配類似,同樣可採用首次適應算法、循環首次適應算法等。
回收主要解決對數據結構的數據修改。
應該說明,雖然很少採用連續分配方式,然而在外存的管理中,由於它具有較高的分配速度,可減少訪問磁盤的I/O頻率,故它在諸多分配方式中仍佔有一席之地。(如實現虛擬用的部分外存就是連續分配方式)

 

空閒鏈表法
將所有空閒盤區拉成一條空閒鏈。
1.數據結構:鏈
根據構成鏈所用基本元素的不同,可把鏈表分成兩種形式:

  • 空閒盤塊鏈
  • 空閒盤區鏈

 

2)位示圖法——位示圖

利用二進制的一位來表示一個盤塊的使用情況。
值爲0表示對應的盤塊空閒,爲1表示已分配。有的系統則相反。
磁盤上的所有盤塊都有一個二進制位與之對應,這樣由所有盤塊所對應的位構成一個集合,稱爲位示圖。
總塊數=m*n。可用m*n個位數來構成位示圖,可看成是二維數組(數據結構)。

根據位示圖進行盤塊分配:
順序掃描位示圖。找到爲0的二進制位。
將所找到的一個或一組二進制位,轉換成與之對應的盤塊號。進行分配操作。
盤塊號計算公式爲:盤塊號 = 列總數*(i-1)+ j;
(注意下標i,j從1開始)
修改位示圖。


根據位示圖進行盤塊回收:
將回收盤塊的盤塊號轉換成位示圖中的行號和列號。轉換公式爲:i=(盤塊號-1)div列數+1;j=(盤塊號-1)mod列數+1
Div 求商,mod 取餘,公式中的i、j都是從1開始的
(如12號盤塊轉換後爲1,12)
修改位示圖。

3)成組鏈接法

大型文件系統,空閒表或空閒鏈表太長不方便管理操作。
UNIX系統中採用成組鏈接法,這是將兩種方法結合而形成的一種空閒盤塊管理方法。
中心思想:

  • 所有盤塊按規定大小劃分爲組;
  • 組間建立鏈接;
  • 組內的盤塊藉助一個系統棧可快速處理,且支持離散分配回收。

文件控制塊—FCB

在文件控制塊中,通常含有以下三類信息。
基本信息類
包括:

文件名

  • 文件物理位置
  • 文件邏輯結構
  • 文件的物理結構

存取控制信息類

包括文件主的存取權限,覈准用戶的存取權限和一般用戶的存取權限。

使用信息類

  • 建立日期和時間、文件上次修改的日期和時間
  • 當前使用信息:打開該文件的進程數、是否被進程鎖住、是否已修改等。

 

目錄管理

對文件實施有效的管理,必須對它們加以妥善組織,主要是兩大操作:

  • 基本信息記錄(FCB,目錄項)
  • 方便檢索、管理(目錄操作)

目錄管理的要求如下:

  • 實現“按名存取”;(最基本功能)
  • 提高對目錄的檢索速度;
  • 文件共享;
  • 允許文件重名。

 

7.4 共享、保護、一致性

1)文件共享
多個用戶共享一份文件,只保留文件的一份副本,節約存儲空間
共享範圍:單機系統/多主機系統/網絡範圍
20世紀六七十年代,出現了若干文件早期共享方法,繞彎路法、連訪法等,逐漸發展爲現代一些共享方式

  • 索引結點
  • 符號鏈

2)磁盤容錯

SFT,system fault tolerance
防止磁盤故障造成的文件不安全
SFT I:磁盤表面故障
雙目錄、雙文件分配表(空間冗餘)
寫後讀校驗、熱修復重定向(時間操作冗餘)
寫入磁盤後再讀回內存做一致性校驗
熱修復寫過程:從壞道重定向到專區並記錄
SFT II:磁盤驅動器、控制器故障
驅動器故障:磁盤鏡像
控制器故障:磁盤雙工——並行控制器,分離搜索加快讀取

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章