操作系統(tǒng)(4) -- 文件管理、IO管理

內(nèi)容大綱

  • 1、文件管理;
  • 2、文件系統(tǒng)管理
  • 3、輸入/輸出管理
  • 4、緩沖區(qū)

1 文件管理

文件

  • 文件是指記錄在外存上的具有文件名的一組相關(guān)信息的集合。
  • 系統(tǒng)運行時,以進程作為基本單位,用戶輸入輸出時,以文件為基本單位。
  • 可分為有結(jié)構(gòu)文件和無結(jié)構(gòu)文件兩種。有結(jié)構(gòu)文件是由若干個相關(guān)記錄組成,而無結(jié)構(gòu)文件則被看成一個字符流。
    圖片1.png

文件的邏輯結(jié)構(gòu)

  • 有結(jié)構(gòu)的記錄式文件
    • 文件構(gòu)成:由一組相似記錄(如:考生信息記錄)構(gòu)成。
    • 記錄長度:分為定長和變長。
    • 分類(按記錄的組織):
      順序文件(適用定長記錄)
      索引文件(變長,建立一張索引表)
      直接/哈希文件(鍵值確定物理地址)
  • 無結(jié)構(gòu)的流式文件
    • 文件構(gòu)成:由字符流構(gòu)成。
    • 長度:字節(jié)為單位
    • 訪問:讀寫指針,通過窮舉搜索的方式訪問.

順序文件的優(yōu)缺點

  • 優(yōu)點
    • 順序存取速度較快(批量存?。?。
    • 定長記錄,還可方便實現(xiàn)直接存取。
  • 缺點
    • 對變長記錄,直接存取低效
    • 不利于文件的動態(tài)增長。


      定長文件順序存放

索引文件

引入—為解決變長記錄文件的順序存取低效問題。
索引文件—為變長記錄文件建立一張索引表。


image.png

索引文件的特點

  • 優(yōu)點
    • 通過索引表可方便地實現(xiàn)直接存取,具有較快的檢索速度。
    • 易于進行文件的增刪
  • 缺點
    • 索引表的使用增加了存儲開銷
    • 索引表的查找策略對文件系統(tǒng)的效率影響很大
  • 注:若索引表很大,可建多級索引

目錄結(jié)構(gòu)

與文件管理系統(tǒng)和文件集合相關(guān)聯(lián)的是文件目錄。包含文件的相關(guān)信息,如:屬性、位置和所有權(quán)等。
對目錄管理的要求如下:

  • 實現(xiàn)“按名存取”
  • 提高對目錄的檢索速度
  • 文件共享
  • 允許文件重名

文件控制塊和索引結(jié)點

從文件管理角度看,文件由FCB和文件體(文件本身)兩部分組成。

文件控制塊(FCB)

文件控制塊是操作系統(tǒng)為管理文件而設(shè)置的數(shù)據(jù)結(jié)構(gòu),存放了文件的有關(guān)說明信息,是文件存在的標志。
FCB中的信息:

  • 基本信息類:文件名、文件長度、類型、屬性文件物理位置
  • 存取控制信息類:文件存取權(quán)限、用戶名、口令、共享計數(shù)
  • 使用信息類:文件的建立日期、最后修改日期、保存期限、最后訪問日期

文件目錄
把所有的FCB組織在一起,就構(gòu)成了文件目錄,即文件控制塊的有序集合。
目錄項
構(gòu)成文件目錄的項目(目錄項就是FCB)
目錄文件
為了實現(xiàn)對文件目錄的管理,通常將文件目錄以文件的形式保存在外存,稱為目錄文件。

圖片2.png

單級目錄

所有的用戶使用一個目錄


image.png
  • 優(yōu)點: 簡單,易實現(xiàn),按名存取
  • 缺點:
    • 限制了用戶對文件的命名(即易重名)
    • 文件平均檢索時間長(查找速度慢),不支持分類。
    • 不便于實現(xiàn)文件共享
    • 只適用于單用戶環(huán)境

二級目錄

為每個用戶創(chuàng)建一個單獨的目錄


image.png
  • 優(yōu)點:
    • 提高了檢索目錄的速度;
    • 不同用戶目錄中可重名;
    • 不同用戶可用不同文件名來訪問系統(tǒng)中一共享文件
  • 缺點:
    • 限制了各用戶對文件的共享
    • 增加了系統(tǒng)開銷,缺乏靈活性,無法反映真實世界復雜的文件結(jié)構(gòu)形式。不能支持文件分組。

樹形目錄

在兩級目錄中若允許用戶建立自己的子目錄,則形成3級或多級目錄結(jié)構(gòu)(即樹型目錄結(jié)構(gòu))


image.png
  • 路徑名
    • 訪問數(shù)據(jù)文件的一條路徑。絕對路徑、相對路徑、當前路徑
  • 優(yōu)點
    • 層次結(jié)構(gòu)清晰,實現(xiàn)分組,便于管理和保護;
    • 解決重名問題;
    • 查找速度加快。
  • 缺點
    • 查找一個文件按路徑名逐層檢查,由于每個文件都放在外存,多次訪盤影響速度。

文件系統(tǒng)管理

一盤磁帶、一張光盤片、一個硬盤分區(qū)或一張軟盤片都稱為一,卷是存儲介質(zhì)的物理單位。一個卷可以保存一個文件或多個文件,也可以一個文件保存在多個卷上。
是存儲介質(zhì)上連續(xù)信息所組成的一個區(qū)域,也叫做物理記錄。塊是主存儲器和輔助存儲設(shè)備進行信息交換的物理單位,每次總是交換一塊或整數(shù)塊信息。

磁盤結(jié)構(gòu)

1.png

image.png

分配方法

  • 連續(xù)分配
  • 鏈接分配
  • 索引分配

連續(xù)分配

每個文件在磁盤上占用一組連續(xù)的物理塊。磁盤地址構(gòu)成一個線性空間,文件邏輯塊順序與文件物理塊順序相同。

  • 優(yōu)點如下:
    • 順序訪問容易,對定長記錄,可方便實現(xiàn)直接存取。
    • 順序訪問速度快,適合連續(xù)批量訪問。
  • 缺點如下:
    • 要求有連續(xù)的存儲空間,不利于文件動態(tài)增長。
    • 須事先知道文件的長度,尋找適當空間較費時。
    • 對變長記錄,不能很好地支持直接存取。
    • 存在“碎片”問題。


      2.png

      image.png

磁盤空間的連續(xù)分配

image.png

鏈接分配

磁盤塊分配方法:

  • 每個文件是一個磁盤塊的鏈接列表:塊可以分散在磁盤各處。
  • 按所需分配磁盤塊,鏈接在一起。
  • 在每個塊中有指向下一個塊的指針
  • 只需要起始地址。

可以通過合并(consolidation)將一個文件的各個簇連續(xù)存放,以提高I/O訪問性能。

3.png

優(yōu)點
1、無外部碎片,沒有磁盤空間浪費
2、無需事先知道文件大小。文件動態(tài)增長時,可動態(tài)分配空閑塊。對文件的增、刪、改十分方便。
*3、不需緊縮磁盤空間。
缺點
1、不能支持高效隨機/直接訪問,僅對順序存取特有效
2、需為指針分配空間。---塊/簇 (隱式鏈接)
3、可靠性較低(指針丟失/損害)

鏈接表FAT,每項保存下一塊鏈接地址,整個磁盤僅設(shè)置一張。


圖片3.png

索引分配

單級索引分配

鏈接分配方式雖然解決了連續(xù)分配方式所存在的問題, 但又出現(xiàn)了另外兩個問題, 即:

  • 不能支持高效的直接存取。要對一個較大的文件進行直接存取,須首先在FAT中順序地查找許多盤塊號。
  • FAT需占用較大的內(nèi)存空間。

為每一個文件分配一個索引塊(表),再把分配給該文件的所有塊號,都記錄在該索引塊中。故索引塊就是一個含有許多塊號地址的數(shù)組。

  • 該索引塊的地址由該文件的目錄項指出。
  • 支持隨機/直接存取。
  • 不會產(chǎn)生外部碎片。
  • 適用于較大的文件。

優(yōu)點:

  • 不要求物理塊連續(xù),便于直接存取,便于文件 的增、刪、改。

缺點:

  • 增加了索引表的空間開銷和查找時間。

索引順序文件

  • 索引順序文件是與索引文件結(jié)構(gòu)類似,不同之處在于索引表不是為每個記錄建立一個表項,而是為一組記錄建立一個表項。


    image.png

    圖片4.png
  • 在UNIX系統(tǒng)中,還采用了混合索引分配方式,可以同時采用一級、二級、三級索引分配結(jié)構(gòu),以滿足不同大小文件的需要。

  • 每個文件的索引表為13個索引項,每項4個字節(jié),登記一個存放文件信息的物理塊號。最前面10項直接登記存放文件信息的物理塊號,叫直接尋址。

  • 如果文件大于10塊,則利用第11項指向一個物理塊,該塊中最多可放256個文件物理塊的塊號,叫做一次間接尋址。對于更大的文件還可利用第12和第13項作為二次和三次間接尋址。

  • UNIX中采用了三級索引結(jié)構(gòu)后,文件最大可達16兆個物理塊。

混合索引:UNIX(每塊4KB)

image.png

練習題
UNIX中有10個直接塊,1個一級間接塊, 1個二級間接塊, 1個三級間接塊,每個塊的大小4KB,UNIX系統(tǒng)中地址所占空間為4B。若以下問題都建立在該索引結(jié)點已經(jīng)在內(nèi)存中的前提下:
1.文件的大小為多大時可以只用直接塊?
2.該索引結(jié)點能訪問的地址空間總共多大?
3.若要讀取一個文件的第10000B的內(nèi)容,需要訪問磁盤多少次?
4.若要訪問一個文件的第10MB的內(nèi)容,需訪問磁盤多少次?

image.png

image.png

3 輸入/輸出管理

  • I/O 設(shè)備種類繁多,功能和速度差異巨大,機電特性各不相同。
  • 系統(tǒng)提供I/O指令,控制設(shè)備實現(xiàn)I/O操作。
  • 設(shè)備管理的功能
    (1)監(jiān)視系統(tǒng)中所有設(shè)備的狀態(tài)。
    (2)設(shè)備分配。
    (3)設(shè)備控制是設(shè)備管理的另一功能,它包括設(shè)備驅(qū)動和設(shè)備中斷處理,具體的工作過程是在設(shè)備處理的程序中發(fā)出驅(qū)動某設(shè)備工作的I/O指令后,再執(zhí)行相應(yīng)的中斷處理。

數(shù)據(jù)傳送控制方式

  • 程序直接控制方式(輪詢)
  • 中斷控制方式
  • DMA方式
  • 通道控制方式

程序直接控制方式-輪詢(Polling)

程序直接控制方式是指由程序直接控制內(nèi)存或CPU和外圍設(shè)備之間進行信息傳送的方式。通常又稱為“忙—等”方式或循環(huán)測試方式。
(1)把一個啟動位為“1”的控制字寫入該設(shè)備的控制狀態(tài)寄存器。
(2)將需輸出數(shù)據(jù)送到數(shù)據(jù)緩沖寄存器。
(3)測試控制狀態(tài)寄存中的“完成位”,若為0,轉(zhuǎn)(2),否則轉(zhuǎn)(4)。
(4)輸出設(shè)備將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)取走進行實際的輸出。

中斷控制方式

(1)進程需要數(shù)據(jù)時,將允許啟動和允許中斷的控制字寫入設(shè)備控制狀態(tài)寄存器中,啟動該設(shè)備進行輸入操作。
(2)該進程放棄處理機,等待輸入的完成。操作系統(tǒng)進程調(diào)度程序調(diào)度其他就緒進程占用處理機。
(3)當輸入完成時,輸入設(shè)備通過中斷請求線向CPU發(fā)出中斷請求信號。CPU在接收到中斷信號之后,轉(zhuǎn)向中斷處理程序。
(4)中斷處理程序首先保護現(xiàn)場,然后把輸入緩沖寄存器中的數(shù)據(jù)傳送到某一特定單元中去,同時將等待輸入完成的那個進程喚醒,進入就緒狀態(tài),最后恢復現(xiàn)場,并返回到被中斷的進程繼續(xù)執(zhí)行。
(5)在以后的某一時刻,操作系統(tǒng)進程調(diào)度程序選中提出的請求并得到獲取數(shù)據(jù)的進程,該進程從約定的內(nèi)存特定單元中取出數(shù)據(jù)繼續(xù)工作。


圖片1.png

DMA方式

DMA方式又稱直接內(nèi)存訪問(Direct Memory Access)方式。其基本思想是在外設(shè)和主存之間開辟直接的數(shù)據(jù)交換通路。DMA采用總線周期挪用實現(xiàn)I/O。

DMA方式的特點是:
  • 數(shù)據(jù)傳送的基本單位是數(shù)據(jù)塊。
  • 所傳送的數(shù)據(jù)是從設(shè)備送內(nèi)存,或者相反。
  • 僅在傳送一個或多個數(shù)據(jù)塊的開始和結(jié)束時,才需中斷CPU,請求干預,整塊數(shù)據(jù)的傳送是在DMA控制器控制下完成的。
DMA控制器的組成
圖片2.png
DMA方式的工作流程
圖片3.png

4 緩沖區(qū)

緩沖(Buffering) - 在設(shè)備之間傳送數(shù)據(jù)時,(暫時)保存數(shù)據(jù)。

  • 協(xié)調(diào)數(shù)據(jù)到達速度與數(shù)據(jù)離去速度不匹配的問題。
  • 協(xié)調(diào)數(shù)據(jù)大小不一致的問題。
  • 確保數(shù)據(jù)的 “復制語義”。
  • 減少對CPU的中斷次數(shù)
  • 提高CPU和I/O設(shè)備之間的并行性

單緩沖

單緩沖是操作系統(tǒng)提供的最簡單的一種緩沖形式。每當一個進程發(fā)出一個I/O請求時,操作系統(tǒng)便在主存中為之分配一個緩沖區(qū),該緩沖區(qū)用來臨時存放輸入/輸出數(shù)據(jù)。
設(shè)備先把數(shù)據(jù)寫入緩沖區(qū),然后用戶進程從緩沖區(qū)讀走數(shù)據(jù)。


image.png

雙緩沖

  • 在雙緩沖方案中,設(shè)置兩個緩沖區(qū)1和2,直到緩沖區(qū)1滿才輸入到緩沖區(qū)2,此時操作系統(tǒng)可以從緩沖區(qū)1讀取數(shù)據(jù)放入用戶進程。
  • 雙緩沖方式和單緩沖方式相比,雙緩沖方式能進一步提高CPU和外設(shè)的并行程度。但是在實際系統(tǒng)中很少采用這一方式,這是因為在計算機系統(tǒng)中的外設(shè)很多,又有大量的輸入和輸出,同時雙緩沖很難匹配設(shè)備和CPU的處理速度。因此現(xiàn)代計算機系統(tǒng)中一般使用環(huán)形緩沖或緩沖池結(jié)構(gòu)。


    image.png

環(huán)形緩沖

  • 環(huán)形緩沖包含了多個大小相等的緩沖區(qū)。在主存中分配一組大小相等的存儲區(qū)作為緩沖區(qū),并將這些緩沖區(qū)鏈接起來,每個緩沖區(qū)中有一個指向下一個緩沖的指針,最后一個緩沖區(qū)的指針指向第一個緩沖區(qū),這樣n個- 緩沖區(qū)就成了一個環(huán)形。環(huán)形緩沖區(qū)結(jié)構(gòu)如圖所示。
  • 需要兩個指針in和out。in指向可以輸入數(shù)據(jù)的第一個空緩沖區(qū),out指向可以提取數(shù)據(jù)的第一個滿緩沖區(qū)。


    image.png

緩沖池

從自由主存中分配一組緩沖區(qū)即可構(gòu)成緩沖池。

緩沖池的組成
  • 緩沖池中的緩沖區(qū)可以形成3個隊列:空閑緩沖區(qū)、裝輸入數(shù)據(jù)的緩沖區(qū)和裝輸出數(shù)據(jù)的緩沖區(qū)。
  • 緩沖池中還有4種工作緩沖區(qū),收容輸入數(shù)據(jù)的工作緩沖區(qū)hin,提取輸入數(shù)據(jù)的工作緩沖區(qū)sin,收容輸出數(shù)據(jù)的工作緩沖區(qū)sout,提取輸出數(shù)據(jù)的工作緩沖區(qū)hout。
緩沖池的工作方式

緩沖區(qū)可以在收容輸入、提取輸入、收容輸出和提取輸出四種方式下工作。


image.png
  • 收容輸入:從空白緩沖區(qū)隊列中取出一個緩沖號為number的空白緩沖區(qū),將其作為收容輸入緩沖區(qū)hin,當hin中裝滿了由輸入設(shè)備輸入的數(shù)據(jù)之后,將該緩沖區(qū)插入到裝滿輸入數(shù)據(jù)的輸入緩沖隊列 in中。
  • 收容輸出:從空白緩沖區(qū)隊列中取出一個空白緩沖區(qū)number作為收容輸出緩沖區(qū)hout,待hout中裝滿輸出數(shù)據(jù)之后,將該緩沖區(qū)插入裝滿輸出數(shù)據(jù)的輸出緩沖隊列 out中。
  • 提取輸入:從裝滿輸入數(shù)據(jù)的輸入緩沖隊列 in中取出一個裝滿輸入數(shù)據(jù)的緩沖區(qū)number作為輸入緩沖區(qū)sin,當CPU從中提取完所需數(shù)據(jù)之后,將該緩沖區(qū)釋放并插入空白緩沖隊列emq中。
  • 提取輸出:從裝滿輸出數(shù)據(jù)的輸出緩沖隊列 out中取出裝滿輸出數(shù)據(jù)的緩沖區(qū)number,將其作為sout。當sout中數(shù)據(jù)輸出完畢時,系統(tǒng)將該緩沖區(qū)插入空白緩沖隊列emq中。
緩沖池中的3種緩沖隊列
1.png

F指向隊首,L指向隊尾。(emq指空緩沖區(qū)隊列,inq裝滿輸入數(shù)據(jù)的輸入緩沖隊列 ,out裝滿輸出數(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)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,302評論 2 89
  • 操作系統(tǒng)概論 操作系統(tǒng)的概念 操作系統(tǒng)是指控制和管理計算機的軟硬件資源,并合理的組織調(diào)度計算機的工作和資源的分配,...
    野狗子嗷嗷嗷閱讀 12,477評論 3 34
  • 01 這變幻萬千的世界,多么奇妙。金木水火、螻蟻草芥、花鳥魚蟲、天地星辰,他們屬性各異、外形獨特,看起來是多么的不...
    深藍色的金閱讀 548評論 0 3
  • 北方的天空劈過了幾道閃電,陣陣悶雷襲來。 有什麼東西好像徹底粉碎了。 我至今仍不敢同人講起我的自卑。 下雨了,每次...
    可愛的靈魂閱讀 218評論 0 0
  • 本書分為上下兩冊,共650頁,作者熊逸。 介紹王陽明和他的心學的文章網(wǎng)上有很多,我就不多寫了,借著這本書以筆記的形...
    筱歷閱讀 1,422評論 0 1

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