15、文件系統(tǒng)3(操作系統(tǒng)筆記)

四、文件系統(tǒng)的安全性

這里我們討論如何確保未經(jīng)授權(quán)的用戶不能存取某些文件?

4.1 文件保護機制

  • 用于提供安全性、特定的操作系統(tǒng)機制
  • 對擁有權(quán)限的用戶,應(yīng)該讓其進行相應(yīng)的操作,否則,應(yīng)禁止
  • 防止其他用戶冒充對文件進行操作

于是在實現(xiàn)的時候需要考慮用戶身份驗證和訪問控制。對于用戶身份我們可以采用比如密碼、口令等方式。

4.2 文件的訪問控制

有不同的訪問控制手段,比如主動控制(使用訪問控制表)和能力表(使用權(quán)限表)。

  • 主動控制
    每個文件一個
    記錄用戶ID和訪問權(quán)限
    用戶可以是一組用戶
    文件可以是一組文件

  • 能力表
    每個用戶一個
    記錄文件名及訪問權(quán)限
    用戶可以是一組用戶
    文件可以是一組文件

4.3 UNIX的文件訪問控制

采用文件的二級存取控制,審查用戶的身份、審查操作的合法性

  • 第一級:對訪問者身份的識別
    對用戶分類:

    • 文件主(owner
    • 文件主的同組用戶(group
    • 其他用戶(other
  • 第二級:對操作權(quán)限的識別
    對操作分類:

    • 讀操作(r
    • 寫操作(w
    • 執(zhí)行操作(x
    • 不能執(zhí)行任何操作(-

五、文件系統(tǒng)的性能

5.1 文件系統(tǒng)的性能問題

  • 磁盤服務(wù):速度成為系統(tǒng)性能的主要瓶頸之一。因此,在設(shè)計文件系統(tǒng)時應(yīng)盡可能減少磁盤訪問次數(shù)

  • 提高文件系統(tǒng)性能的方法:
    目錄項(FCB)分解、當前目錄、磁盤碎片整理、塊高速緩存、磁盤調(diào)度、提前讀取、合理分配磁盤空間、信息的優(yōu)化分布、RAID技術(shù)等等

5.2 提高文件系統(tǒng)性能:塊高速緩存(BLOCK CACHE)

又稱為文件緩存、磁盤高速緩存、緩沖區(qū)高速緩存。是指在內(nèi)存中為磁盤塊設(shè)置的一個緩沖區(qū),保存了磁盤中某些塊的副本。當對文件系統(tǒng)進行操作的時候:

  • 檢查所有的讀請求,看所需塊是否在塊高速緩沖中
  • 如果在,則可直接進行讀操作;否則,先將數(shù)據(jù)塊讀入塊高速緩存,再拷貝到所需的地方。
  • 由于訪問的局部性原理,當一數(shù)據(jù)塊被讀入塊高速緩存以滿足一個I/O請求時,和可能將來還會再次訪問到這一數(shù)據(jù)塊。

5.3 如何實現(xiàn)塊高速緩存

  • 塊高速緩存的組織方式

    1

    說明:在塊高速緩存中有若干個數(shù)據(jù)塊,首先將這些塊使用一個雙向鏈表組織起來,當要訪問這個鏈的時候就將其從此鏈中拿出來,然后掛接到鏈尾,而我們對于某個文件使用的塊要檢查其是否在高速緩存中,所以這里又使用塊號進行散列以提高檢查速度。

  • 塊高速緩存的置換問題(修改LRU
    因為此緩存的空間肯定是不會很大的,所以當其滿時我們需要對其進行置換。對于以后可能會再次使用的塊我們將其放在鏈尾,而對于使用概率很小的塊可能就需要將其剔除。

  • 塊高速緩存的寫入策略
    在文件系統(tǒng)中,我們需要考慮該塊是否會影響文件系統(tǒng)的一致性。這里如前面所講,不同的操作系統(tǒng)采用了不同的一致性解決方案。

  • 提前讀取

    • 思路:每次訪問磁盤,多讀入一些磁盤塊
    • 依據(jù):程序執(zhí)行的空間局部性原理
    • 開銷:較小(只有數(shù)據(jù)傳輸時間)
    • 具有針對性

5.4 Windows的文件訪問方式

一般有下面三種方式:

  • 不使用文件緩存

    • 普通方式
    • 通過Windows提供的FlushFileBuffer函數(shù)實現(xiàn)
  • 使用文件緩存(塊高速緩存)

    • 預讀取。每次讀取的塊大小、緩沖區(qū)大小、置換方式
    • 寫回。寫回時機選擇、一致性問題
  • 異步模式

    • 不再等待磁盤操作的完成。
    • 使處理器和I/O并發(fā)工作

用戶對磁盤的訪問通過訪問文件緩存來實現(xiàn):

  • WindowsCache Manager實現(xiàn)對緩存的控制

    • 讀取數(shù)據(jù)的時候預取
    • Cache滿時,根據(jù)LRU原則清除緩存的內(nèi)容
    • 定期更新磁盤內(nèi)容使其與Cache一致(每秒)
  • write-back機制

    • 在用戶要對磁盤寫數(shù)據(jù)時,只更改Cache中的內(nèi)容,由Cache Manager決定何時將更新反映到磁盤
      2

5.5 提高文件系統(tǒng)性能:合理分配磁盤空間

分配磁盤塊時,把有可能順序存取的塊放在一起(盡量分配在同一柱面上,從而減少磁盤臂的移動次數(shù)和距離)

3

說明:我們讀取文件系統(tǒng)時,每次都要先找到i節(jié)點區(qū),然后再去找到文件位置,如果i節(jié)點區(qū)在最外道,而相關(guān)文件在最里道,則在讀取的時候磁臂就需要不斷的移動,這樣顯示效率低下。一種解決方案如(a),我們將i節(jié)點區(qū)和相關(guān)文件放在距離較近的磁道上;另一種是如(b),首先將磁道分成了若干組,然后將i節(jié)點區(qū)也劃分成若干部分,每一組磁道都有一個i節(jié)點區(qū),而每個文件都和其i節(jié)點區(qū)在同一組,這樣磁臂也不需要很大的移動。

5.6 提高文件系統(tǒng)性能:磁盤調(diào)度

當有多個訪盤請求等待時,采用一定的策略,對這些請求的服務(wù)順序調(diào)整安排,從而降低平均磁盤服務(wù)時間,達到公平、高效的目的。

  • 公平
    一個IO請求在有限時間內(nèi)滿足
  • 高效
    減少設(shè)備機械運動帶來的時間開銷

一次訪盤時間 = 尋道時間 + 旋轉(zhuǎn)延遲時間 + 傳輸時間

  • 減少尋道時間
  • 減少延遲時間

5.7 磁盤調(diào)度算法

例子:假設(shè)磁盤訪問序列:98、183、37、122、14、124、65、67,這些數(shù)字表示柱面號或磁道號。讀寫頭起始位置為53。請計算磁頭服務(wù)序列和磁頭移動總距離(道數(shù))。下面使用幾種算法進行計算:

  • 1、先來先服務(wù)(FCFS
    按訪問請求到達的先后次序服務(wù)

    • 優(yōu)點:簡單、公平
    • 缺點:效率不高,相鄰兩次請求可能會造成最內(nèi)到最外的柱面尋道,使磁頭反復移動,增加了服務(wù)時間,對機械也不利。
      4

      磁道服務(wù)序列和訪問序列一致,磁頭移動總距離為640,平均80。
  • 2、最短尋道時間優(yōu)先(Shortest Seek Time First
    優(yōu)先選擇距當前磁頭最近的訪問請求進行服務(wù),主要考慮尋道優(yōu)先。

    • 優(yōu)點
      改善了磁盤平均服務(wù)時間
    • 缺點
      造成某些訪問請求長期等待而得不到服務(wù)


      5
  • 3、掃描算法(SCAN電梯算法)
    當設(shè)備無訪問請求時,磁頭不動;當有訪問請求時,磁頭按一個方向移動,在移動過程中遇到的訪問請求進行服務(wù),然后判斷該方向上是否有訪問請求,如果有則繼續(xù)掃描;否則改變移動方向,并為經(jīng)過的訪問請求服務(wù),如此反復。其實是一種對距離和方向的折中算法。

    6

  • 4、單向掃描算法(C-SCAN
    這是對掃描算法的一種改進。

    • 總是從零號柱面開始向里掃描
    • 按柱面(磁道)位置選擇訪問者
    • 移動臂到達最后一個柱面后,立即帶動讀寫磁頭快速返回到零號柱面
    • 返回時不為任何的等待訪問者服務(wù)
    • 返回后可再次進行掃描

主要的目的是減少了新請求的最大延遲。

  • 5、N-step-SCAN策略
    • 把磁道請求隊列分成長度為N的子隊列,每一次用SCAN處理一個子隊列
    • 在處理某一個隊列時,新請求添加到其他子隊列中
    • 如果最后剩下請求數(shù)小于N,則它們?nèi)慷紝⒃谙乱淮螔呙钑r處理
    • N值比較大時,其性能接近SCAN;當N = 1時,即FIFO

主要是為了解決磁頭臂的粘性問題。

  • 6、FSCAN策略
    • 使用兩個子隊列
    • 掃描開始時,所有請求都在一個隊列中,而另一個隊列為空
    • 掃描過程中,所有新到的請求都放入另一個隊列中
    • 對新請求的服務(wù)延遲到處理完所有老請求之后

主要是為了解決磁頭臂的粘性問題。本算法及以上都是對磁臂移動的優(yōu)化算法。

  • 7、旋轉(zhuǎn)調(diào)度算法
    根據(jù)延遲時間來決定執(zhí)行次序的調(diào)度。一般有三種情況:
    • 若干等待訪問請求訪問同一磁頭上的不同扇區(qū)
    • 若干等待訪問請求訪問不同磁頭上的不同扇區(qū)
    • 若干等待訪問請求訪問不同磁頭上的相同扇區(qū)
      解決方案:
    • 對于前兩種情況:總是讓首先到達讀寫磁頭位置下的扇區(qū)先進行傳送操作
    • 對于第三種情況:這些扇區(qū)同時到達讀寫磁頭位置下,可任意選擇一個讀寫磁頭進行傳送操作

5.8 提高文件系統(tǒng)性能:信息優(yōu)化分布

記錄在磁道上的排列方式也會影響輸入輸出操作的時間。

7

說明:如果信息是按左邊那樣分布的,那么如果首先讀到1號記錄,然后花5ms處理,但是此時磁盤已經(jīng)轉(zhuǎn)到了4號記錄,于是如果我們要處理2號記錄,則必須將4、5、6、7、8都旋轉(zhuǎn)過去之后才能處理2號記錄;而如果信息是按右邊那樣分布的,當處理完1號記錄,而此時磁盤也剛好旋轉(zhuǎn)到了2號記錄處,這樣就能極大的提高文件系統(tǒng)的性能。

5.9 提高文件系統(tǒng)性能:記錄的成組與分解

  • 記錄的成組
    把若干個邏輯記錄合成一組存放在一塊的工作
  • 進行成組操作時必須使用內(nèi)存緩沖區(qū),緩沖區(qū)的長度等于邏輯記錄長度乘以成組的塊因子(成組的長度)。
  • 成組的目的:提高了存儲空間的利用率;減少了啟動外設(shè)的次數(shù),提高系統(tǒng)的工作效率。
  • 記錄的分解
    從一組邏輯記錄中把一個邏輯記錄分離出來

典型的例子就是目錄文件的存儲。

5.10 提高文件系統(tǒng)性能:RAID技術(shù)

起始就是獨立磁盤冗余陣列(Redundant Arrays of Independent Disks),就是將多塊磁盤按照一定要求構(gòu)成一個獨立的存儲設(shè)備。目的就是提高可靠性和性能。在實現(xiàn)時,需要考慮存儲系統(tǒng)的速度、容量、容錯、數(shù)據(jù)災難發(fā)生后的數(shù)據(jù)恢復。

  • 數(shù)據(jù)是如何組織的

    • 通過把多個磁盤組織在一起,作為一個邏輯卷提供磁盤跨越功能
    • 通過把數(shù)據(jù)分成多個數(shù)據(jù)塊,并行寫入/讀出多個磁盤,以提高數(shù)據(jù)傳輸率(數(shù)據(jù)分條stripe
    • 通過鏡像或校驗操作,提供容錯能力(冗余信息的保存)
    • 最簡單的組織方式是鏡像,最復雜的是塊交錯校驗。
  • 例1:RAID 0 - 條帶化

    • 數(shù)據(jù)分布在陣列的所有磁盤上
    • 有數(shù)據(jù)請求時,同時多個磁盤并行操作
    • 充分利用總線寬帶,數(shù)據(jù)吞吐率提高,驅(qū)動器負載均衡


      8

      這種方式?jīng)]有冗余信息保存,即無差錯控制,性能是最佳的。

  • 例2:RAID 1-鏡像

    • 最大限度保證數(shù)據(jù)安全和可恢復性
    • 所有數(shù)據(jù)同時存在與兩塊磁盤的相同位置
    • 磁盤利用率為50%
      9

      數(shù)據(jù)的安全性是最好的,但是磁盤利用率較低。
  • 例3:RAID 4-交錯塊奇偶校驗

    • 帶奇偶校驗
    • 以數(shù)據(jù)塊為單位


      10

      數(shù)據(jù)保存在前四塊盤上,而校驗信息保存在第五塊盤上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容