1. 程式人生 > >作業系統——第七章筆記(二)

作業系統——第七章筆記(二)

檔案目錄
5.目錄管理
1)對檔案實施有效的管理,必須對它們加以妥善組織,主要是兩大操作:
 基本資訊記錄(FCB,目錄項)
 方便檢索、管理(目錄操作)
2)目錄管理的要求如下:
實現“按名存取”;(最基本功能)
提高對目錄的檢索速度;
檔案共享;
允許檔案重名。
5.1檔案控制塊—FCB
為了能對一個檔案進行正確的存取,必須為檔案設定用於描述和控制檔案的資料結構,稱之為“檔案控制塊”(FCB)
 檔案與檔案控制塊一一對應
 記錄檔名及其存放地址、檔案的說明和控制資訊。(是誰?在哪裡?什麼權?)
 檔案管理程式藉助於檔案控制塊中的資訊對檔案施以各種操作。
把檔案控制塊的有序集合稱為檔案目錄,即一個檔案控制塊就是一個目錄項。通常一個檔案目錄也被看作是一個檔案,稱為目錄檔案。
5.1.1 FCB內容
在檔案控制塊中,通常含有以下三類資訊。
1)基本資訊類
 包括檔名,檔案物理位置(對於連續檔案:檔案起始塊號;對於連結檔案:指向第一個物理塊的指標;對於索引檔案:索引表地址。),檔案邏輯結構(流式、記錄式),檔案的物理結構。
2)存取控制資訊類
 包括檔案主的存取許可權,核准使用者的存取許可權和一般使用者的存取許可權。
3)使用資訊類
 建立日期和時間、檔案上次修改的日期和時間
 當前使用資訊:開啟該檔案的程序數、是否被程序鎖住、是否已修改等。
5.1.2關於檔案檢索的速度:
 檔案FCB組成的“目錄”檔案存放於磁碟;需要時,要從磁碟將目錄內容調入記憶體進行檢索和使用。
5.2索引結點
5.2.1索引結點的引入
1)檔案目錄佔越大量的盤塊,需進行的磁碟讀寫開銷越大。減少實際檢索的資訊量就減少移動磁頭的開銷,提高速度;
2)目錄一般是按名檢索。而直到找到正確檔案前,只關心檔名,不需要其它的檔案描述資訊,目錄中這部分內容的調入不是必須的。
3)所以:將檔名、檔案具體資訊分開,使檔案描述資訊單獨形成一個索引結點。
5.2.2索引結點由外存到記憶體的過程中有不同的形式:
1)磁碟索引結點
 存放在磁碟上的索引結點。主要包括以下內容:檔案主識別符號、檔案型別、檔案存取許可權、檔案實體地址、檔案長度、檔案連線計數、檔案存取時間。
2)記憶體索引結點
 檔案被開啟後,將磁碟索引結點拷貝到記憶體索引結點中以便使用。比磁碟索引結點增加了以下內容:索引結點編號、狀態、訪問計數、檔案所屬檔案系統的邏輯裝置號、連結指標。
5.3目錄結構
目錄結構的組織,關係到檔案系統的存取速度,也關係到檔案的共享性和安全性。
組織好檔案的目錄,是設計好檔案系統的重要環節。
目前常用的目錄結構形式有
5.3.1單級目錄結構
 最簡單的目錄結構。
 整個檔案系統中只建立一張目錄表,每個檔案一個目錄項,含有檔案相關資訊。
1)每建立一個新檔案:
 先檢索所有的目錄項,保證檔名唯一。
 獲得一空白目錄項,填入相關資訊,修改狀態位(表明每個目錄項是否空閒)。
2)刪除一個檔案:
 找到對應目錄項,回收檔案所佔用空間
 清除目錄項
3)優點:簡單、能實現目錄管理的基本功能——按名存取。
4)缺點:
 檔案檢索時需搜遍整個目錄檔案,範圍大速度慢。
 不允許重名。名字過多難於記憶,對於多使用者環境重名難以避免。
 不便於實現檔案共享(因為不能重名,不同使用者使用的共享檔案必須不同名字,標識哪些使用者共享檔案也不方便),一般只適用單機環境。
5.3.2兩級目錄結構(主檔案目錄+使用者目錄)
1)為每一個使用者建立一個單獨的使用者檔案目錄UFD,UFD由使用者所有檔案的檔案控制塊組成。
2)系統建立一個主檔案目錄MFD, MFD中每個使用者目錄檔案都佔有一個目錄項,其中包括使用者名稱和指向UFD的指標。
3)基本克服了單級目錄的缺點,並具有以下優點:
 提高了檢索目錄的速度。
 在不同的目錄中可重名。
 不同使用者還可以使用相同/不同的檔名來訪問系統中的同一個共享檔案。
4)不提供子目錄操作,還不方便;各使用者之間被完全隔離的話使用者訪問其他使用者檔案時,不方便合作。
5.3.3多級目錄結構
1)適用於較大的檔案系統管理。又稱為樹狀目錄(tree-like)
2)在檔案數目較多時,便於系統和使用者將檔案分散管理。
 層次結構更清晰、提供更靈活的許可權管理等
 但目錄級別太多時也會增加路徑檢索層次,增加磁碟訪問時間。
3)相關名詞:
 目錄結構:
主目錄稱為根目錄,資料檔案為樹葉,其它目錄為結點。多級目錄縮小檢索範圍提高檢索速度和檔案系統的效能。
 路徑名:
從根目錄到任何資料檔案都只有一條唯一通路。目錄檔名和資料檔名依次用“/”連線起來,即構成資料檔案的路徑名。
 當前目錄:
a)為每個程序設定一個“當前目錄”,又稱“工作目錄”。
b)從當前目錄開始,逐級經過中間的目錄檔案,最後達到要訪問的資料檔案。這一路徑上的目錄和資料檔名用“/”連線成路徑名,稱為相對路徑名。
c)從根開始的路徑名稱為絕對路徑名
5.4目錄查詢技術
5.4.1使用者要訪問一個已存檔案
 目錄資料調入記憶體;
 按名檢索:系統利用提供的檔名對目錄(根據目錄層次,需要做的檢索次數也不同)進行查詢
 找該檔案控制塊
 讀FCB或對應索引結點;
 從檔案實體地址換算出檔案在磁碟上的物理位置;
 最後通過磁碟驅動程式,將所需檔案讀入記憶體。
5.4.2目錄查詢方式:線性檢索法和Hash方法。
1)線性檢索法(又稱為順序檢索法)
 單級目錄中
使用者提供檔名,順序查詢檔案目錄。
 樹型目錄中
使用者提供路徑名,如/user/ast/mbox
對多級目錄進行逐層查詢。
2)Hash方法
 曾介紹的Hash檔案。
 如果建立了一張Hash索引檔案目錄,便可利用Hash方法進行查詢
 系統將使用者提供的檔名變換為檔案目錄的索引值,再利用該索引值到目錄中去查詢,將顯著的提高檢索速度。
 對於使用萬用字元的檔案名系統無法利用Hash法檢索目錄,還是需用線性查詢法。

例題:有一檔案系統如圖1所示。圖中的框表示目錄,圈表示普通檔案。每個磁碟塊有512個位元組。普通檔案的一頁與盤塊大小等長。根目錄常駐記憶體,目錄檔案物理結構組織成連結檔案,每個目錄檔案磁碟塊最後4個位元組供連結使用。目錄表目指示下一級檔名及其磁碟地址(各佔2個位元組,共4個位元組)。若下級檔案是目錄檔案,指示其第一個磁碟塊地址。若下級檔案是普通檔案,指示其檔案控制塊的磁碟地址。(一個盤塊可存放127個目錄項)普通檔案組織成索引檔案。(一個索引盤塊512B,可存放256個盤塊索引2B)下級檔案在上級目錄檔案中的次序在圖中為自左至右。
在這裡插入圖片描述
a.前10個地址直接指示該檔案前10頁的地址。
b.第11個地址指示1級索引表地址,一級索引表中每個磁碟地址指示一個檔案頁地址;
c.第12個地址指示2級索引表地址,二級索引表中每個地址指示一個一級索引表地址;
d.第13個地址指示3級索引表地址,三級索引表中每個地址指示一個二級索引表地址。
問:

  1. 一個普通檔案最多可有多少個檔案頁?
  2. 若要讀檔案J中某一頁,最多啟動磁碟多少次?
  3. 若要讀檔案W中某一頁,最少啟動磁碟多少次?
  4. 就上一問而言,為最大限度減少啟動磁碟次數,可採用什麼方法?此時,磁碟最多啟動多少次?
    答案:
  5. 普通檔案組織成索引檔案,普通檔案的一頁與盤塊大小等長,混合索引結構下可以支援的盤塊數量最多有: C=10+256+2562+2563(個)
  6. 由於根目錄常駐記憶體,下級檔案在上級目錄檔案中的次序在圖中為自左至右。考慮最壞情況,J檔案很大,最壞的情況是需要讀三級索引下的資料盤塊,則最多需啟動磁碟塊數為: 讀入A目錄檔案的第一塊,讀入D目錄檔案的第一塊,讀入J的索引盤塊,讀索引盤塊三級索引下的盤塊(主索引1次,2級索引1次,3級索引1次,最後讀入資料盤塊),故:1+1+1+1+1+1+1=7次
  7. 讀入C,I,P,U,讀入W的索引盤塊,讀W的第一個直接盤塊:1+1+1+1+1+1=6次。
  8. 儘量減少目錄項內容使一塊能存放更多目錄項/常用目錄快取、多級目錄常駐記憶體、則目錄檢索則最多5/0次磁碟操作,啟動次數就決定於檔案佔用的盤塊數。
    6.檔案共享與保護
    6.1檔案共享
    6.1.1 多個使用者共享一份檔案,只保留檔案的一份副本,節約儲存空間
    6.1.2 共享範圍:單機系統/多主機系統/網路範圍
    6.1.3 20世紀六七十年代,出現了若干檔案早期共享方法,繞彎路法、連訪法等,逐漸發展為現代一些共享方式
    1)索引結點法:
     基本FCB法:
    a)名+詳細資訊。
    b)直接在檔案目錄中包含檔案的實體地址,該方法實現的共享不適用檔案動態變化。一個使用者對檔案的修改(如物理塊號增加),對其他使用者不可見,共享檔案的FCB資訊記錄同步更新困難。
     檔名+索引結點指標。
    a)一個使用者修改指標指向地址裡的內容,指標不變,其他使用者通過指標總能感知索引結點中的最新內容
    b)索引結點中增加count計數
    c)主人刪除操作問題:刪,共享使用者訪問錯誤;不刪,計費問題。
    2)符號鏈
     建立一個link型別的檔案:“檔名+共享檔案路徑”(類似快捷方式)
     檔案主人刪除檔案,共享者只會出現找不到檔案錯誤。不會發生共享檔案刪除後出現懸空指標的情況。
     該方法適用於網路檔案共享,但根據路徑檢索共享檔案的目標位置增加了訪問開銷,link檔案獨佔索引結點也耗費一定的空間。
     無論哪種共享,連結就對應一個檔案,如果遍歷複製整個目錄內的檔案,可能會從多條路徑對共享檔案進行多次訪問
    6.2檔案保護
    6.2.1 保護域(Protection Domain)
    1)影響檔案安全的因素:
     人為因素:過失或有益破壞;----〉採用存取控制機制
     系統因素:故障等; -----〉容錯技術
     自然因素:磁碟的有效期。------〉後備系統
    2)保護域:他指出了程序所能訪問的物件,程序僅在保護域內執行。
    3)須知原則:不不允許他訪問所有的物件,只允許程序訪問那些它必須去訪問的物件。
    4)訪問權: 可用有序對(物件名,權集)表示,如(F1,{r|w}).
    5)域:是一組物件訪問權的集合。
    6.2.2訪問矩陣
    1)訪問矩陣:描述系統的存取控制的矩陣。其行代表域,列代表物件。矩陣中的每一項是由一組訪問權組成。每一項訪問權access(i,j)定義了在域Di中執行的程序能對物件Qj施加的操作集。
    2)程序與域的兩種聯絡
     靜態聯絡:指程序的可用資源集在程序的整個生命期中是固定的。但應允許修改域的內容,如,把操作檔案的許可權從r改為rw.
     動態聯絡:指程序的可用資源集在程序的整個生命期中是變化的。程序在執行期間可能從一個保護域切換到另一保護域。
    6.2.3訪問矩陣的修改
    1)拷貝權(Copy Right) :
     在系統中建立了訪問矩陣後,隨著系統的發展,使用者的增加和改變,必然經常要對訪問矩陣進行修改。可通過在訪問權中增加拷貝權、擁有權及控制權的方法實現。
     將某域所擁有的訪問權access(i,j)擴充套件到同一列的其它域中。訪問權上的表示,執行在i域上的程序,能將其物件j的訪問權,複製成任何域對同一物件的訪問權。拷貝訪問權的兩種型別:
    a)轉換拷貝權:由access(i.j)拷貝成access(k,j)後,取消access(i.j).
    b)限制拷貝:把帶
    的拷貝權如R*,由access(i.j)拷貝成access(k,j)後,建立的訪問權是R,而不是R*,即執行在Dk上的程序不能再將其擴充套件。
    2)所有權(Owner Right):
     利用所有權實現增加和刪除某域中訪問權。擁有所有權的的程序可以增加和刪除在任何其它域中執行的程序對物件j的訪問權。
     拷貝權和所有權都是用於改變矩陣內在同一列中的各項訪問權,或者說是用於改變執行在不同域中的程序對同一物件的訪問權。
    3)控制權(Control Right):
     控制權可用於改變矩陣內同一行中各項的訪問權,亦即改變某個域中執行的程序對不同物件的訪問權。
     如在access(i,j)中包含了控制權,則在域Di中執行的程序,可以刪除在域Dj中執行的程序對各物件的任何訪問權。
    6.2.4訪問矩陣的實現
     理論上存取控制方法可用存取控制矩陣,它是一個二維矩陣,一維列出計算機的全部使用者,另一維列出系統中的全部檔案,矩陣中每個元素Aij是表示第i個使用者對第j個檔案的存取許可權。通常存取許可權有可讀、可寫、可執行以及它們的組合。
     存取控制矩陣在概念上是簡單清楚的,但實現上卻有困難。單發一個系統使用者數和檔案數很大是,二維矩陣要佔很大的儲存空間,驗證過程也費時。
    6.2.5訪問矩陣的實現
    1)訪問控制表(Access Control List)
    存取控制矩陣由於太大而往往無法實現。一個改進的辦法是對訪問矩陣按列(物件)劃分,為每一列建立一張訪問控制表ACL,當物件是檔案時,按使用者對檔案的訪問權力的差別對使用者進行分類,由於某一檔案往往只與少數幾個使用者有關,所以這種分類方法可使存取控制表大為簡化。由於存取控制表對每個檔案將使用者分類,所以該存取控制表可存放在每個檔案的檔案控制塊(即目錄表目)或索引結點中,作為該檔案的存取控制資訊。
    2)訪問許可權表
    對訪問矩陣按行(域)劃分,為每一行建立一張訪問許可權表,表中的每一項即為該域某一物件的訪問許可權。當域為使用者(程序),物件為檔案時,訪問許可權表便可用來描述一個使用者(程序)對每一個檔案所能執行的一組操作。
    6.2.6分級安全管理
    實際系統中,用四個方面對檔案實行安全性管理。
     系統級管理;
     使用者級管理;
     目錄級管理;
     檔案級管理。
    1)系統級安全管理
    系統級安全管理的主要任務是,不允許未經允許的使用者進入系統,從而防止他人非法地使用系統中的各類資源。實現方法有以下幾種:
     註冊
     登入
     其它措施:
    a)要求使用者定期修改密碼;
    b)限定使用者在規定時間上機;
    c)限定使用者在指定的終端上上機。
    2)使用者級安全管理
    使用者級安全管理是為了給使用者分配“檔案訪問許可權”而設計的。
     使用者分類
    不同的系統分法不同,如把使用者分為:(1)檔案主 (2)夥伴 (3)一般使用者
    另一分法把使用者分為:(1)超級使用者 (2)系統操作員 (3)使用者 (4)顧客
     檔案訪問權
    不同使用者可以有不同的訪問權。
    (1)建立©
    (2)刪除(D)
    (3)開啟(O)
    (4)讀®
    (5)寫(W)
    (6)查詢(S)
    (7)修改(M)
    (8)父權§:允許建立/改名/刪除子目錄。
    3)目錄級安全管理
     目錄級安全管理,是為保護系統中的各種目錄而設計的,它與使用者許可權無關,為保證目錄的安全,規定只有系統核心才具有目錄的許可權。
     讀許可權表示允許程序讀目錄。
     寫許可權表示允許程序請求核心為之建立新目錄項,或撤銷已有的目錄項。
     執行許可權表示允許程序檢索目錄。
    4)檔案級安全管理
    檔案級安全管理,是通過系統管理員或檔案主對檔案屬性的設定,來控制使用者對檔案的訪問。有以下屬性:
     只執行(EO):只允許使用者執行該檔案。
     隱含(H):指示檔案是隱含檔案。
     索引(I):指示檔案是索引檔案。
     修改(M):指示檔案自上次備份後是否已被修改。
     只讀(RO):只允許使用者讀檔案。
     讀/寫(RW):允許使用者對檔案進行讀和寫。
     共享(SHA):指示檔案是可被共享的檔案。
     系統(SY):指示檔案是系統檔案。

PS:
 作業系統中對資訊進行管理的部分叫:檔案系統。
 檔案系統是:檔案、管理檔案的軟體及資料結構的總體。
 從使用者角度看,檔案系統的主要目的是:實現對檔案的按名存取。
 按檔案的邏輯結構將檔案分為兩大類:記錄式檔案和流式檔案。
 為了解決不同使用者的檔案“命名衝突”問題,通常在檔案系統中採用:多級目錄結構。
 按物理結構劃分,檔案主要有三類:順序檔案、連結檔案、索引檔案。
 作業系統實現按名存取的關鍵在於:解決檔名與檔案儲存地址的轉換。
 存放在磁碟上的檔案訪問順序如何:既可隨機訪問,又可順序訪問。