日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统 —— 文件管理

發布時間:2024/7/19 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统 —— 文件管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1. 文件的簡介
    • 1.1. 文件的屬性
    • 1.2. 文件的分類
      • 1.2.1. 無結構文件(流式文件)
      • 1.2.2. 有結構文件(記錄式文件)
    • 1.3 操作系統應向上提供哪些功能
  • 2. 文件的邏輯結構
    • 2.1 邏輯結構 vs 物理結構
    • 2.2 有結構文件的邏輯結構
      • 2.2.1 順序文件
        • 順序文件的查找
      • 2.2.2. 索引文件
      • 2.2.3. 索引順序文件
  • 3. 文件目錄
    • 3.1. 文件控制塊
      • 3.1.1. 對目錄進行的操作
    • 3.2. 目錄結構
      • 3.2.1. 單級目錄結構
      • 3.2.2. 兩級目錄結構
      • 3.2.3. 多級目錄結構
      • 3.2.4. 無環圖目錄結構
      • 3.2.5. 索引結點(FCB的改進)
  • 4. 文件的物理結構
    • 4.1. 文件塊和磁盤塊
      • 4.1.1. 磁盤塊
      • 4.1.2. 文件塊
    • 4.2. 文件分配方式 —— 連續分配
    • 4.3. 文件分配方式 —— 鏈接分配
      • 4.3.1. 隱式鏈接
      • 4.3.2. 顯式鏈接
        • 實現文件的邏輯塊號到物理塊號的轉變
    • 4.4. 文件分配方式 —— 索引分配
      • 4.4.1. 實現文件的邏輯塊號到物理塊號的轉變
      • 4.4.2. 鏈接方案
      • 4.4.3. 多層索引
      • 4.4.4. 混合索引
  • 5. 文件存儲空間管理
    • 5.1. 空閑表法
    • 5.2. 空閑鏈表法
      • 5.2.1 空閑盤塊鏈
      • 5.2.2. 空閑盤區鏈
    • 5.3 位示圖法
    • 5.4. 成組鏈接法
  • 6. 文件的基本操作
    • 6.1. 創建文件
    • 6.2. 刪除文件
    • 6.3. 打開文件
      • 6.3.1. 打開文件表
    • 6.4. 關閉文件
    • 6.5. 讀文件
    • 6.6. 寫文件
  • 7. 文件共享
    • 7.1. 基于索引結點的共享方式
    • 7.2. 基于符號鏈的共享方式
  • 8. 文件保護
    • 8.1. 口令保護
    • 8.2. 加密保護
    • 8.3. 訪問控制

1. 文件的簡介

1.1. 文件的屬性

文件名、標識符、類型、位置、大小、創建時間、上次修改時間、文件所有者信息、保護信息

1.2. 文件的分類

1.2.1. 無結構文件(流式文件)

文件內部的數據是由一系列的二進制或字符流組成,如文本文件(.txt文件)

1.2.2. 有結構文件(記錄式文件)

由一組相似的記錄文件組成,每條記錄又由若干個數據項組成,如數據庫表。一般來說,每條記錄有一個數據項作為關鍵字。根據各條記錄的長度(占用的存儲空間)是否相等,又可分為定長記錄可變長記錄

記錄是一組相關數據項的集合

1.3 操作系統應向上提供哪些功能

create、delete、open、close、read、write 系統調用

2. 文件的邏輯結構

2.1 邏輯結構 vs 物理結構

邏輯結構:指在用戶看來,文件內部的數據應該是如何組織起來的。

物理結構:指的是在操作系統看來,文件的數據是如何存放在外存的。

2.2 有結構文件的邏輯結構

根據有結構文件中的各條記錄在邏輯上如何組織,可以分為三類。

2.2.1 順序文件

文件中的記錄一個接一個地順序排列(邏輯上),記錄可以是定長的可變長的。各個記錄在物理上可以順序存儲鏈式存儲

順序存儲

  • 邏輯上相鄰的記錄物理上也相鄰。

鏈式存儲

  • 邏輯上相鄰的記錄物理上不一定相鄰。

根據記錄之間的順序與關鍵字是否有關又可將順序文件分為

串結構:記錄之間的順序與關鍵字無關(通常按照記錄存入的時間決定記錄的順序)

順序結構:記錄之間的順序按關鍵字順序排列

順序文件的查找

順序文件的缺點是增加/刪除一個記錄比較困難(如果是串結構則相對簡單)

2.2.2. 索引文件

2.2.3. 索引順序文件

  • 當記錄過多的時候可以建立多級索引表

3. 文件目錄

即我們很熟悉的Windows操作系統的 ”文件夾“。

3.1. 文件控制塊

  • 目錄本身就是一種有結構文件,由一條條記錄組成。每條記錄對應一個在該目錄下的文件。
  • 目錄文件中的一條記錄就是一個文件控制塊(FCB)
  • FCB 實現了文件名和文件之間的映射。使用戶程序可以實現 ” 按名存取 “。

FCB中包含

1、文件的基本信息( 文件名、物理地址、邏輯地址、物理結構等)

2、存取控制信息(是否可讀/可寫、禁止訪問的用戶名單等)

3、使用信息(如文件的建立時間、修改時間等)

3.1.1. 對目錄進行的操作

搜索、創建文件、刪除文件、顯示目錄、修改目錄

3.2. 目錄結構

3.2.1. 單級目錄結構

早期的操作系統并不支持多級目錄,整個系統只建立一張目錄表,每個文件占一個目錄項。

單級目錄實現了 " 按名存取 ",但是不允許文件重名。

單級目錄不支持多用戶操作系統。

3.2.2. 兩級目錄結構

早期的多用戶操作系統采用兩級目錄結構,分為主文件目錄 (MFD,Master File Directory)和用戶文件目錄(UFD,User File Directory)。

優點:兩級目錄允許不同用戶的文件重名,也可以在目錄上實現訪問限制(檢查此時登錄的用戶名是否匹配)。

缺點:缺乏靈活性,用戶不能對自己的文件進行分類。

3.2.3. 多級目錄結構

又稱樹形目錄結構

用戶(或用戶進程)要訪問某個文件時要用文件路徑名標識文件,文件路徑名是個字符串。各級目錄之間用“/”隔開。從根目錄出發的路徑稱為絕對路徑。從當前目錄出發的路徑稱為相對路徑

系統根據絕對路徑一層一層地找到下一級目錄。剛開始從外存讀入根目錄的目錄表;找到“照片”目錄的存放位置后,從外存讀入對應的目錄表;再找到“2015-08”目錄的存放位置,再從外存讀入對應目錄表;最后才找到文件“白拍.jpg”的存放位置。整個過程需要3次讀磁盤I/O操作

  • 相對路徑可以減少磁盤 I/O 操作次數。

優點:樹形目錄結構可以很方便地對文件進行分類,層次結構清晰,也能夠更有效地進行文件的管理和保護。

缺點:樹形結構不便于實現文件的共享。

對此,提出了“ 無環圖目錄結構 ”。

3.2.4. 無環圖目錄結構

在樹形目錄結構的基礎上,增加一些指向同一節點的有向邊,使整個目錄成為一個有向無環圖。

可以更方便地實現多個用戶間的文件共享

可以用不同的文件名指向同一個文件,甚至可以指向同一個目錄(共享同一目錄下的所有內容)。

需要為每個共享結點設置一個共享計數器,用于記錄此時有多少個地方在共享該結點。用戶提出刪除結點的請求時,只是刪除該用戶的FCB、并使共享計數器減1,并不會直接刪除共享結點。

3.2.5. 索引結點(FCB的改進)

將除了文件名之外的文件描述信息都放到索引結點中。由于目錄項長度減小,因此每個磁盤塊可以存放更多各目錄項,可以大大提升文件檢索速度

當找到文件名對應的目錄項時,才需要將索引結點調入內存,索引結點中記錄了文件的各種信息,包括文件在外存中的存放位置,根據“ 存放位置 ”即可找到文件。

存放在外存中的索引結點稱為“磁盤索引結點”,當索引結點放入內存后稱為“內存索引結點”。

相比之下內存索引結點中需要增加一些信息,比如:文件是否被修改、此時有幾個進程正在訪問該文件等。

4. 文件的物理結構

即文件數據應該怎樣存放在外存中。

4.1. 文件塊和磁盤塊

4.1.1. 磁盤塊

類似于內存分頁,磁盤中的存儲單元也會被分為一個個 ” 塊 / 磁盤塊 / 物理塊 “。

很多操作系統中,磁盤塊的大小與內存塊、頁面的大小相同。

內存與磁盤之間的數據交換(即 讀/寫操作、磁盤I/O)都是以” 塊 “ 為單位進行的。

即每次讀入一塊,或每次寫出一塊

4.1.2. 文件塊

在內存管理中, 進程的邏輯地址空間被分為一個個的頁面

同樣的, 在外存管理中, 為了方便對文件數據的管理, 文件的邏輯地址空間也被分為了一個個的文件塊

于是文件的邏輯地址也可以表示為 (邏輯塊號, 塊內地址)的形式

4.2. 文件分配方式 —— 連續分配

連續分配方式要求每個文件在磁盤上占有一組連續的塊

文件目錄中記錄存放的起始塊號和長度(總共占用幾個塊)

用戶給出要訪問的邏輯塊號,操作系統找到文件對應的目錄項(FCB)

物理塊號 = 起始塊號 + 邏輯塊號

需要檢查邏輯塊號是否合理,當邏輯塊號 ≥ 長度就不合法

操作系統可以直接算出邏輯塊號對應的物理塊號,因此連續分配支持順序訪問和直接訪問( 隨機訪問 )

優點:連續分配的文件在順序讀/寫時速度最快

缺點:采用連續分配的文件不方便拓展存儲利用率低,會產生難以利用的磁盤碎片。( 可以采用緊湊的方法來處理碎片, 但是需要耗費很大的時間代價 )

4.3. 文件分配方式 —— 鏈接分配

鏈接分配采取離散分配的方式,可以為文件分配離散的磁盤塊。

4.3.1. 隱式鏈接

優點:很方便文件拓展 ;所有的空閑磁盤塊都可以被利用,不會有碎片問題外存利用率高

缺點:只支持順序訪問,不支持隨機訪問,查找效率低,指向下一個盤塊的指針也需要耗費少量的存儲空間。

4.3.2. 顯式鏈接

把用于鏈接文件各物理塊的指針顯式地存放在一張表中。即文件分配表(FAT,File Allocation Table)。

  • 一個磁盤僅設置一張 FAT。>
  • 開機時,將 FAT 讀入內存,并常駐內存
  • FAT 的各個表項在物理上連續存儲,且每一個表項長度相同,因此 ” 物理塊號 “ 字段可以是隱含的

實現文件的邏輯塊號到物理塊號的轉變

1、用戶給出要訪問的邏輯塊號i,操作系統找到該文件對應的目錄項(FCB)

2、從目錄項中找到起始塊號,若i > 0,則查詢內存中的文件分配表FAT,往后找到i號邏輯塊對應的物理塊號。 邏輯塊號轉換成物理塊號的過程不需要讀磁盤操作

結論:

采用顯式鏈接方式的文件,支持順序訪問,也支持隨機訪問(想訪問i號邏輯塊時,并不需要依次訪問之前的0~ i-1號邏輯塊)。

由于塊號轉換的過程不需要訪問磁盤,因此相比于隱式鏈接來說,訪問速度快很多。

4.4. 文件分配方式 —— 索引分配

索引分配允許文件離散地分配在各個磁盤塊中,系統會為每個文件建立一張索引表,索引表中記錄了文件的各個邏輯塊對應的物理塊(索引表的功能類似于內存管理中的頁表一―建立邏輯頁面到物理頁之間的映射關系)。索引表存放的磁盤塊稱為索引塊。文件數據存放的磁盤塊稱為數據塊

4.4.1. 實現文件的邏輯塊號到物理塊號的轉變

1、用戶給出要訪問的邏輯塊號i,操作系統找到該文件對應的目錄項(FCB)

2、從目錄項中可知索引表存放位置,將索引表從外存讀入內存,并查找索引表即可知道 i 號邏輯塊在外存中的存放位置。

可見,索引分配方式可以支持隨機訪問文件拓展也很容易實現(只需要給文件分配一個空閑塊,并增加一個索引表項即可)。

4.4.2. 鏈接方案

如果索引表太大,一個索引塊裝不下,那么可以將多個索引塊鏈接起來存放。

4.4.3. 多層索引

建立多層索引(原理類似于多級頁表)。使第一層索引塊指向第二層的索引塊。還可根據文件大小的要求再建立第三層、第四層索引塊。

4.4.4. 混合索引

多種索引分配方式的結合。

例如,一個文件的頂級索引表中,既包含直接地址索引(直接指向數據塊),又包含一級間接索引(指向單層索引表)、還包含兩級間接索引(指向兩層索引表)。

5. 文件存儲空間管理

5.1. 空閑表法

適用于連續分配方式。

5.2. 空閑鏈表法

5.2.1 空閑盤塊鏈

以盤塊為單位組成一組空閑鏈

適用于離散分配的物理結構。

5.2.2. 空閑盤區鏈

以盤區為單位組成一條空閑鏈

離散分配、連續分配都使用。

為一個文件分配多個盤塊時效率更高

5.3 位示圖法

如何分配

若文件需要K個塊

① 順序掃描位示圖,找到K個相鄰或不相鄰的“O”;

② 根據字號、位號算出對應的盤塊號,將相應盤塊分配給文件;

③ 將相應位設置為“1”。

如何回收

① 根據回收的盤塊號計算出對應的字號、位號;

② 將相應二進制位設為“ 0 ”。

5.4. 成組鏈接法

空閑表法、空閑鏈表法不適用于大型文件系統,因為空閑表或空閑鏈表可能過大。

UNIX 系統中采用了成組鏈接法對磁盤空閑塊進行管理。

文件卷的目錄區中專門用一個磁盤塊作為 “超級塊”,當系統啟動時需要將超級塊讀入內存。

并且要保證內存與外存中的 “超級塊” 數據一致。

博客講解

6. 文件的基本操作

6.1. 創建文件

進行 " create 系統調用 "

需要提供的參數:

? 1、所需的外存空間大小(如:一個盤塊,即1KB)

? 2、文件存放路徑(“D:/Demo”)

? 3、文件名(這個地方默認為“新建文本文檔.txt”)

1、在外存中找到文件所需的空間(例如使用空閑鏈表法、位示圖等管理策略,找到空閑空間)

2、根據文件的存放路徑的信息找到該目錄對應的目錄文件,在目錄中創建該文件對應的目錄項 。目錄項中包含了文件名,文件在外存中的存放位置等信息。

6.2. 刪除文件

進行 " delete 系統調用 "

需要提供的參數:

? 1、文件存放路徑(“ D:/Demo ”)
? 2、文件名 (“ test.txt ”)

1、根據文件存放路徑找到相應的目錄文件,從目錄中找到文件名對應的目錄項

2、根據該目錄項記錄的文件在外存的存放位置、文件大小等信息,回收文件占用的磁盤塊。(回收磁盤塊時,根據空閑表法、空閑鏈表法、位圖法等管理策略的不同,需要做不同的處理)

3、從目錄表中刪除文件對應的目錄項

6.3. 打開文件

進行 ” open 系統調用 “

需要提供的要參數:
1、文件存放路徑 (“D:/Demo”)

? 2、文件名 (“test.txt”)

? 3、要對文件的操作類型(如:r只讀;rw讀寫等)

1、根據文件存放路徑找到相應的目錄文件,從目錄中找到文件名對應的的目錄項,并檢查該用戶是否有指定的操作權限。

2、將目錄項復制到內存中的“打開文件表”中。并將對應表目的編號返回給用戶。之后用戶使用打開文件表的編號來指明要操作的文件

6.3.1. 打開文件表

  • 打開計數器:記錄此時有多少個進程打開了此文件。
  • 讀寫指針:記錄該進程對文件的讀/寫操作進行到的位置。
  • 訪問權限:如果打開文件時聲明的是 ” 只讀 “,則該進程不能對文件進行寫操作。

6.4. 關閉文件

進行 ” close 系統調用 “

1、將進程的打開文件表相應表項刪除。

2、回收分配給該文件的內存空間等資源。

3、系統打開文件表的打開計數器 count 減1,若count = 0,則刪除對應表項。

6.5. 讀文件

進行 ” read 系統調用 “

需要提供的參數

? 需要指明是哪個文件(在支持“打開文件”操作的系統中,只需要提供文件在打開文件表中的索引號即可), 還需要指明要讀入多少數據(如:讀入1KB)、指明讀入的數據要放在內存中的什么位置。

操作系統在處理read系統調用時,會從讀指針指向的外存中,將用戶指定大小的數據讀入用戶指定的內存區域中。

6.6. 寫文件

進行 ” write 系統調用 “

需要提供的參數

? 需要指明是哪個文件(在支持“打開文件”操作的系統中,只需要提供文件在打開文件表中的索引號即可), 還需要指明要寫出多少數據(如:寫出1KB)、寫回外存的數據放在內存中的什么位置

7. 文件共享

操作系統為用戶提供文件共享功能,可以讓多個用戶共享地使用同一個文件。

注意:多個用戶共享同一個文件,意味著系統中只有 “一份” 文件數據 。并且只要某個用戶改了該文件的數據,其他用戶也可以看到文件數據的變化。

7.1. 基于索引結點的共享方式

索引結點中設置一個鏈接計數變量count,用于表示鏈接到本索引結點上的用戶目錄項數。

若 count =2,說明此時有兩個用戶目錄項鏈接到該索引結點上,或者說是有兩個用戶在共享此文件。

若某個用戶決定“ 刪除 ”該文件,則只是要把用戶目錄中與該文件對應的目錄項刪除,且索引結點的 count 值減1。

若 count > 0,說明還有別的用戶要使用該文件,暫時不能把文件數據刪除,否則會導致指針懸空。

當 count = 0 時系統負責刪除文件。

7.2. 基于符號鏈的共享方式

當 User3 訪問 “ ccc ” 時,操作系統判斷文件 “ ccc ” 屬于 Link 類型文件,于是會根據其中記錄的層層查找目錄,最終找到 User1的目錄表中的 “ aaa ” 表項,于是就找到了文件1的索引結點。

8. 文件保護

8.1. 口令保護

為文件設置一個 “ 口令 ” (如: abc112233),用戶請求訪問該文件時必須提供 “ 口令 ”。

  • 口令一般存放在文件對應的 FCB 或索引結點中。

  • 用戶訪問文件前需要先輸入“口令”,操作系統會將用戶提供的口令與FCB中存儲的口令進行對比。

  • 如果正確,則允許該用戶訪問文件。

優點:保存口令的空間開銷不多,驗證口令的時間開銷也很小。

缺點:正確的 “口令” 存放在系統內部,不夠安全。

8.2. 加密保護

使用某個 “ 密碼 ” 對文件進行加密,在訪問文件時需要提供正確的 “ 密碼 ” 才能對文件進行正確的解密。

8.3. 訪問控制

在每個文件的 FCB (或索引結點)中增加一個訪問控制列表(Access-Control List, ACL),該表中記錄了各個用戶可以對該文件執行哪些操作。

總結

以上是生活随笔為你收集整理的操作系统 —— 文件管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。