操作系統(tǒng)課件-文件系統(tǒng).ppt
《操作系統(tǒng)課件-文件系統(tǒng).ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《操作系統(tǒng)課件-文件系統(tǒng).ppt(62頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1 第五章文件管理 2 用戶(hù)總是把長(zhǎng)期要保存的或暫時(shí)要保存的大量信息 組織成文件的形式存放在輔助存儲(chǔ)器中 成為計(jì)算機(jī)系統(tǒng)中的軟件資源 用戶(hù)希望的是能夠 按名存取 操作系統(tǒng)給我們提供了第五個(gè)功能 文件管理 主要有以下內(nèi)容 5 1文件管理基本理論5 2Linux文件系統(tǒng)5 3Ext系列文件系統(tǒng)5 4虛擬文件系統(tǒng) 3 5 1文件管理基本理論 文件是具有名字的一組相關(guān)信息的有序集合 存放在外部存儲(chǔ)器中 組成 文件名 屬性 文件體文件名 有限長(zhǎng)度的字符串 注意DOS Windows Linux系統(tǒng)文件名 文件屬性 包括文件類(lèi)型 大小 物理位置 存取控制 建立或修改日期 文件體 4 文件分類(lèi)不同的系統(tǒng)對(duì)文件的管理方式不同 按文件的性質(zhì)和用途 系統(tǒng)文件 庫(kù)文件 用戶(hù)文件按文件中的數(shù)據(jù)形式 源文件 目標(biāo)文件 可執(zhí)行文件按存取權(quán)限 r w x按照文件的內(nèi)容 普通文件 目錄文件 特別文件 Linux系統(tǒng)中將設(shè)備也當(dāng)作文件對(duì)待 5 文件系統(tǒng)是操作系統(tǒng)的一個(gè)重要組成部分 實(shí)現(xiàn)文件管理的一組程序和所管理的全部文件 文件與目錄的集合 以及管理文件所需要的一些數(shù)據(jù)結(jié)構(gòu)的集合 文件系統(tǒng)通常以磁盤(pán)分區(qū)劃分 每個(gè)分區(qū)對(duì)應(yīng)一個(gè)獨(dú)立的文件系統(tǒng) 文件系統(tǒng)管理的對(duì)象 文件 目錄 磁盤(pán)存儲(chǔ)空間對(duì)對(duì)象操縱和管理的軟件集合 文件管理系統(tǒng)的核心部分 文件系統(tǒng)的功能 按名存取 存儲(chǔ)空間管理 共享和保護(hù)等 大多是在這一層實(shí)現(xiàn)的 6 1文件控制塊 為了管理文件 文件系統(tǒng)為每個(gè)文件建立一個(gè)文件控制塊 FileControlBlock FCB FCB記錄了其的使用者和管理者所關(guān)心的所有信息 PCB 包括文件名 大小 存儲(chǔ)位置 修改和訪問(wèn)時(shí)間 權(quán)限等 一個(gè)FCB就是一個(gè)文件目錄項(xiàng) 創(chuàng)建新文件時(shí) 建立FCB 隨著文件的操作 FCB的內(nèi)容動(dòng)態(tài)更新 文件被刪除時(shí) 其FCB刪除 計(jì)算機(jī)系統(tǒng)中通常存有大量的文件 系統(tǒng)須采用某種有效的形式來(lái)組織和管理這些文件 由于文件與文件的FCB一一對(duì)應(yīng) 因此 管理文件就是管理文件的FCB 2目錄 文件系統(tǒng)采用目錄來(lái)組織文件 目錄是FCB的有序集合 通過(guò)目錄將所有的FCB分層分類(lèi)地組織在一起 方便了文件的檢索操作 目錄本身需要長(zhǎng)久保存的 也需以文件的形式存在 即目錄文件 內(nèi)容是一組FCB列表 每個(gè)表項(xiàng) 目錄項(xiàng) 是一個(gè)文件的FCB 由于目錄本身也是文件 因此目錄的FCB也可以作為另一個(gè)目錄中的目錄項(xiàng) 從而構(gòu)成目錄的層次關(guān)系 目錄的主要功能之一 實(shí)現(xiàn)文件的 按名存取 即用戶(hù)只需提供文件名就可以對(duì)文件進(jìn)行各種操作 在查找目錄過(guò)程中 先將存放目錄文件的第一個(gè)盤(pán)塊中目錄調(diào)入內(nèi)存然后把用戶(hù)所給定的文件名與目錄項(xiàng) 每個(gè)文件的FCB 中的文件名逐一比較 若未找到指定文件 便將下一個(gè)盤(pán)塊中的目錄項(xiàng)調(diào)入內(nèi)存 很顯然 如果存放FCB的目錄文件過(guò)大 占多個(gè)磁盤(pán)塊 將會(huì)導(dǎo)致匹配文件名的過(guò)程要多次訪問(wèn)磁盤(pán) 導(dǎo)致問(wèn)題產(chǎn)生的原因就是目錄文件的每個(gè)目錄項(xiàng)即FCB占空間 如何改善 檢索目錄文件過(guò)程中只用到文件名 僅當(dāng)找到一個(gè)目錄項(xiàng)時(shí)才從該目錄項(xiàng)中讀出該文件的物理地址 而其它一些對(duì)該文件進(jìn)行描述的信息在檢索目錄時(shí)不會(huì)用到 故這些信息不需調(diào)入內(nèi)存 于是 可以將文件名和文件描述信息分開(kāi) 引入索引結(jié)點(diǎn) 將文件目錄中的每個(gè)目錄項(xiàng)組成改為文件名和指向該文件所對(duì)應(yīng)結(jié)點(diǎn) 索引結(jié)點(diǎn) IndexNode I節(jié)點(diǎn) 其中存放文件描述信息單獨(dú)形成 的指針?biāo)鶚?gòu)成 引入I結(jié)點(diǎn)后 文件目錄僅由文件名及指向該文件所對(duì)應(yīng)的i結(jié)點(diǎn)的指針?biāo)鶚?gòu)成 目錄的主要功能之二 合理地組織文件 單級(jí)目錄 最簡(jiǎn)單的文件目錄結(jié)構(gòu)是在系統(tǒng)中建立一張目錄線(xiàn)性表 每個(gè)文件占一表目 由文件名和文件的說(shuō)明和管理信息組成 即其FCB或文件目錄項(xiàng) 單級(jí)目錄能夠?qū)崿F(xiàn) 按名存取 但存在查找速度慢 不允許重名 主要問(wèn)題 不便于共享等問(wèn)題 兩級(jí)目錄 系統(tǒng)設(shè)置一個(gè)主目錄 MFD 后 再為每個(gè)用戶(hù)設(shè)立一個(gè)用戶(hù)目錄 UFD MFD的每一項(xiàng)對(duì)應(yīng)一個(gè)用戶(hù)的目錄文件 UFD每一項(xiàng)對(duì)應(yīng)一個(gè)文件的FCB 多級(jí)目錄結(jié)構(gòu) 將兩級(jí)目錄結(jié)構(gòu)的層次關(guān)系加以推廣 就形成了多級(jí)目錄結(jié)構(gòu) 即樹(shù)形目錄結(jié)構(gòu) 系統(tǒng)中有一個(gè)根目錄 或根目錄文件 在這個(gè)目錄中可登記一般文件 也可以登記目錄文件 在每個(gè)目錄文件中可以登記一般文件 也可以登記目錄文件 現(xiàn)在 幾乎所有的操作系統(tǒng)都采用樹(shù)形目錄結(jié)構(gòu) 3文件的組織 文件的組織有兩種 文件的邏輯結(jié)構(gòu) 用戶(hù)對(duì)文件的組織方式 是指用戶(hù)思維中文件的結(jié)構(gòu) 文件的物理結(jié)構(gòu) 文件在存儲(chǔ)介質(zhì)上的組織形式 主要是指磁盤(pán)上文件的結(jié)構(gòu) 文件的邏輯結(jié)構(gòu)記錄式文件 有結(jié)構(gòu)式文件 文件是記錄的集合 每個(gè)記錄由彼此相關(guān)的域構(gòu)成 記錄可按順序編號(hào)為記錄1 記錄2 又分定 不定長(zhǎng)記錄文件 流式文件 無(wú)結(jié)構(gòu)文件 是相關(guān)的有序字符的集合 在其內(nèi)部不再對(duì)信息進(jìn)行組織劃分 文件的長(zhǎng)度為所含字符數(shù) 文件的物理結(jié)構(gòu)一個(gè)文件存儲(chǔ)介質(zhì) 格式化后就分成許多大小相等的單位 存儲(chǔ)塊 物理盤(pán)塊 在現(xiàn)代計(jì)算機(jī)系統(tǒng)中 一般來(lái)說(shuō) 每個(gè)物理塊是一個(gè)磁盤(pán)的扇區(qū) 512字節(jié) 并給每個(gè)存儲(chǔ)塊有個(gè)編號(hào) 稱(chēng)為物理塊號(hào) 文件的物理結(jié)構(gòu)目前有三種基本結(jié)構(gòu) 即連續(xù)文件結(jié)構(gòu) 串聯(lián)文件結(jié)構(gòu)和索引文件結(jié)構(gòu) 連續(xù)文件結(jié)構(gòu) 文件的數(shù)據(jù)存放在連續(xù)的物理存儲(chǔ)塊中 優(yōu)點(diǎn) 結(jié)構(gòu)簡(jiǎn)單 實(shí)現(xiàn)容易缺點(diǎn) 不利于文件動(dòng)態(tài)擴(kuò)充 創(chuàng)建文件時(shí)要求給出文件大小 用戶(hù)不方便 串聯(lián)文件結(jié)構(gòu) 文件信息存于若干不一定連續(xù)的磁盤(pán)塊中 每個(gè)物理塊的最末一個(gè)字 或第一個(gè)字 作為鏈接字 指出后繼塊號(hào) 鏈?zhǔn)字羔槾嬖谖募﨔CB中 文件的結(jié)尾塊的指針為 優(yōu)點(diǎn) 文件動(dòng)態(tài)擴(kuò)充和修改容易 圖中藍(lán)線(xiàn) 外存空間利用率高 缺點(diǎn) 順序存取效率高 隨機(jī)存取效率太低 如果訪問(wèn)文件最后的內(nèi)容 實(shí)際上是訪問(wèn)整個(gè)文件 參考上圖 理解這句話(huà) 鏈接文件更適合于小型文件系統(tǒng) 為了克服串聯(lián)文件的存取效率太低的問(wèn)題 引入文件映照技術(shù) 即把串聯(lián)文件中的鏈接字集中在一結(jié)構(gòu)中 DOS WINDOWS系統(tǒng)采用 文件分配表 文件分配表 FileAllocationTable FAT 磁盤(pán)格式化后建立 用于記錄外存分配 FAT每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)盤(pán)塊 標(biāo)記為0至N 1 其中用來(lái)存放分配給文件的下一個(gè)盤(pán)塊號(hào) 放在內(nèi)存中 整個(gè)系統(tǒng)一張F(tuán)AT 分配給某文件的所有物理塊都在該表中標(biāo)出 文件的首塊號(hào)記入FCB 顯示鏈接 引入FAT的問(wèn)題 FAT需占用較大的內(nèi)存空間 只有將整個(gè)FAT表調(diào)入內(nèi)存才能找到對(duì)應(yīng)的盤(pán)塊號(hào) 示例 若磁盤(pán)大小為1 2M 每個(gè)物理塊大小為512B 則共有2 4K個(gè)FAT表項(xiàng) 則 回顧存儲(chǔ)管理的單級(jí)頁(yè)表的問(wèn)題 索引結(jié)構(gòu) 不連續(xù)分配 每個(gè)文件建立一張索引表 每個(gè)表目指出文件內(nèi)容與磁盤(pán)塊號(hào)的對(duì)應(yīng)關(guān)系索引結(jié)構(gòu)是當(dāng)代計(jì)算機(jī)操作系統(tǒng)中普遍采用的結(jié)構(gòu) 如UNIX系統(tǒng) LINUX系統(tǒng) 優(yōu)點(diǎn) 具備串聯(lián)結(jié)構(gòu)所有的優(yōu)點(diǎn) 適合與隨機(jī)存放缺點(diǎn) 增加了索引的開(kāi)銷(xiāo) 存取文件時(shí)首先要取得索引表 這樣就要增加一次訪盤(pán)操作 降低了文件訪問(wèn)的速度 索引表是在建立文件時(shí)由文件管理機(jī)構(gòu)自動(dòng)建立的 并存放在與文件相同的文件卷 如同一磁帶或同一盤(pán)片 上 乍一看來(lái) 存取索引文件要訪問(wèn)2次外存 why Infact 在訪問(wèn)索引文件之前 總是首先 打開(kāi) 其對(duì)應(yīng)的索引表文件 把其索引表文件的一部分讀入主存 因此其后對(duì)文件的絕大多數(shù)訪問(wèn)只要1次訪外 僅當(dāng)更新索引表到另一部分時(shí) 才發(fā)生1次二度訪外的情況 回顧快表機(jī)制 回顧頁(yè)表地址映射 第1次訪問(wèn)索引表文件 第2次根據(jù)索引得到的物理塊號(hào)再度訪問(wèn)外存 索引表是在建立文件時(shí)由文件管理機(jī)構(gòu)自動(dòng)建立的 并存放在與文件相同的文件卷 如同一磁帶或同一盤(pán)片 上 乍一看來(lái) 存取索引文件要訪問(wèn)2次外存 why Infact 在訪問(wèn)索引文件之前 總是首先 打開(kāi) 其對(duì)應(yīng)的索引表文件 把其索引表文件的一部分讀入主存 因此其后對(duì)文件的絕大多數(shù)訪問(wèn)只要1次訪外 僅當(dāng)更新索引表到另一部分時(shí) 才發(fā)生1次二度訪外的情況 回顧快表機(jī)制 回顧頁(yè)表地址映射 第1次訪問(wèn)索引表文件 第2次根據(jù)索引得到的物理塊號(hào)再度訪問(wèn)外存 AnotherQuestion 回顧多級(jí)頁(yè)表 引入多級(jí)索引和混合索引 混合索引應(yīng)用 UNIXsystem 系統(tǒng)UNIXsystem 混合索引動(dòng)畫(huà)演示按文件的長(zhǎng)度 占據(jù)數(shù)據(jù)塊的個(gè)數(shù) 分為小文件 中文件 大文件 巨文件 分別對(duì)應(yīng)直接 一次間接 二次間接 三次間接的編址方式 系統(tǒng)支持的最大文件 10 256 2562 2563 512B 4文件存儲(chǔ)空間的管理 無(wú)論程序還是數(shù)據(jù)都是以文件形式存放在外存上 外存上文件存放的空間叫作 文件存儲(chǔ)空間 回顧內(nèi)存空間的管理對(duì)文件存儲(chǔ)空間的管理工作包括 建立文件時(shí)為文件分配存儲(chǔ)空間 刪除文件時(shí)去配 以及修改文件時(shí)動(dòng)態(tài)更新外存空間 系統(tǒng)將外存空間分成若干大小相等的物理塊 以塊 or簇 為單位來(lái)交換信息 文件存儲(chǔ)空間的管理 實(shí)際上就是一個(gè)空閑塊的組織和管理問(wèn)題 三種常用的管理方法 空閑塊表 空閑塊鏈 位示圖 空閑塊表用空閑區(qū)表來(lái)管理文件存儲(chǔ)空間 做法是系統(tǒng)設(shè)置一張表格 表中的每一個(gè)表目記錄磁盤(pán)空間中的一個(gè)連續(xù)空閑盤(pán)區(qū)的信息 表目的內(nèi)容至少包括 空閑塊區(qū)首塊地址 物理塊號(hào) 空白塊個(gè)數(shù) 空閑塊表適合于連續(xù)組織的文件 因?yàn)樵诜峙湮募r(shí)按文件尺寸申請(qǐng)一組連續(xù)的空閑塊 撤消文件時(shí)歸還這組連續(xù)的空閑塊區(qū) 與可變分區(qū)分配算法相似 回顧 可采用最先適應(yīng) 最壞適應(yīng) 最佳適應(yīng)算法 由于空閑塊區(qū)的個(gè)數(shù)是動(dòng)態(tài)改變的 導(dǎo)致空閑塊表目個(gè)數(shù)不能預(yù)先確定 因此可能會(huì)產(chǎn)生表目溢出 表較小時(shí) 或表目浪費(fèi) 表較大時(shí) 空閑塊鏈把所有空閑塊的塊號(hào)用鏈表的形式連接在一起 適用于各種物理組織的文件 注意 對(duì)空閑塊鏈操作時(shí)應(yīng)互斥 需要分配空白塊時(shí)從鏈?zhǔn)走M(jìn)行 所以在主存中要保存一個(gè)鏈?zhǔn)字羔?它指向第一個(gè)空白塊 當(dāng)回收時(shí) 把回收塊掛在空白塊鏈尾上 位示圖 bitmap 位示圖是外存空間的存儲(chǔ)映射圖 是系統(tǒng)在內(nèi)存中劃分出的若干字節(jié)的集合 用來(lái)指示磁盤(pán)存儲(chǔ)情況 采用位示圖的具體做法是 為所要管理的磁盤(pán)設(shè)置一張位示圖 位示圖的大小 由磁盤(pán)的總塊數(shù)決定 位示圖中的每一位 bit 對(duì)應(yīng)外存空間的一個(gè)物理塊 若該位為 1 表示對(duì)應(yīng)塊被占用 0 表示空閑 設(shè)整個(gè)文件空間有n塊 那么可用n位構(gòu)成位示圖 例 設(shè)某磁盤(pán)組共有16個(gè)柱面 每個(gè)柱面有16個(gè)磁頭尋道 每個(gè)磁道分16個(gè)扇區(qū) 整個(gè)磁盤(pán)空間的扇區(qū)數(shù)為 16 16 16 4096個(gè)若一個(gè)扇區(qū)被定義為一個(gè)存儲(chǔ)塊 用字長(zhǎng)16位的存儲(chǔ)單元來(lái)構(gòu)造位示圖 共需要256個(gè)字 分配 掃描位示圖 找到足夠的空閑塊 對(duì)應(yīng)位為 0 分配 并將對(duì)應(yīng)位改為 1 回收 將對(duì)應(yīng)的位改為 0 即可 位示圖較小 系統(tǒng)啟動(dòng)時(shí)進(jìn)入內(nèi)存 全部或部分 因此可實(shí)現(xiàn)高速的分配 NOTE 必須定時(shí)地把主存中的位示圖復(fù)制到外存保存 以防萬(wàn)一文件系統(tǒng)發(fā)生故障 可以依據(jù)外存的位示圖副本修復(fù)文件系統(tǒng) UNIX系統(tǒng)系列磁盤(pán)空間管理方法 成組鏈接法UNIX系統(tǒng)采用空閑塊成組鏈接法對(duì)磁盤(pán)空間的空閑塊加以組織 每100個(gè)空閑塊劃歸1組 將各組中的盤(pán)塊號(hào)存放在其前組中的第1個(gè)空閑塊中 第1組的空閑盤(pán)塊號(hào)放入系統(tǒng)專(zhuān)用的超級(jí)塊 superblock 中 第1組不足100塊 文件存儲(chǔ)空間不會(huì)恰好為100的整數(shù)倍 所以第1組小于100 最后組99塊 若把超級(jí)塊看作是最后組的成員 則最后組也是100塊 其他各組均為100塊 Important 各組第1塊和超級(jí)塊 登記了下一組的盤(pán)塊號(hào) 對(duì)應(yīng)設(shè)置一個(gè)容量為100的堆棧 另設(shè)一個(gè)棧指針指向棧0單元 棧1單元 其內(nèi)保存空閑塊號(hào) 如果當(dāng)前棧頂上升到棧99 那么意味著下1組有100個(gè)空閑塊被鏈接在一起 最后組第一塊 null標(biāo)志 空閑塊的分配和回收通過(guò)棧指針的變化 棧0 棧99 來(lái)體現(xiàn) 分配 超級(jí)塊是否上鎖 是則等待 否則上鎖后轉(zhuǎn) 從棧指針指向的棧頂取得空閑塊號(hào) 若當(dāng)前棧頂不是棧0單元 則轉(zhuǎn) 否則該塊是組中的第1塊 而第1塊不能直接分配 故轉(zhuǎn) 棧指針退1 置超級(jí)塊修改標(biāo)記并解鎖 分配該空閑塊號(hào)給調(diào)用者 返回 把該塊內(nèi)容復(fù)制到超級(jí)塊中 置超級(jí)塊修改標(biāo)記并解鎖 把該塊分配給調(diào)用者 返回 回收 超級(jí)塊是否上鎖 是則等待 否則上鎖后轉(zhuǎn) 若棧未滿(mǎn) 棧指針 棧99 則轉(zhuǎn) 否則轉(zhuǎn) 棧指針進(jìn)1 空閑塊號(hào)存入棧頂單元 置超級(jí)塊修改標(biāo)記并解鎖后返回 把超級(jí)塊內(nèi)的棧復(fù)制到當(dāng)前回收的空閑塊中 再將該新空閑塊號(hào)填入超級(jí)塊中棧0單元 使棧指針指向棧底 置超級(jí)塊修改標(biāo)記并解鎖后返回 注意 此時(shí)形成了1個(gè)新的空閑塊組 該組的第1塊正是剛回收的空閑塊 成組鏈接法 動(dòng)畫(huà)演示 成組鏈接法的優(yōu)勢(shì)空閑塊成組鏈接法不占用額外空間 只是臨時(shí)借用每組的第1塊登記下一組的空閑塊號(hào) 分配與回收工作幾乎都在主存 超級(jí)塊 中進(jìn)行 僅當(dāng)分完1組或收回滿(mǎn)1組時(shí)才啟動(dòng)I O通道工作 所以該方法在空間 時(shí)間開(kāi)銷(xiāo)方面相當(dāng)節(jié)省 5 2Linux文件系統(tǒng) Linux繼承了Unix文件系統(tǒng)的優(yōu)秀設(shè)計(jì) 并結(jié)合了一些現(xiàn)代文件系統(tǒng)的先進(jìn)技術(shù) 在開(kāi)放性 可擴(kuò)展性和性能方面都十分出色 Linux文件系統(tǒng)的幾個(gè)主要特征 支持多種文件系統(tǒng) DOS Windows等OS只支持一種或幾種專(zhuān)用的文件系統(tǒng) 而Linux可以支持幾乎所有流行的文件系統(tǒng) 使得Linux可以和許多其他OS共存 允許訪問(wèn)其他OS分區(qū)中的文件 樹(shù)型可掛載目錄結(jié)構(gòu) Linux采用樹(shù)型目錄 并引入分區(qū)掛載的概念 系統(tǒng)分區(qū)上的文件系統(tǒng)稱(chēng)為根文件系統(tǒng) 其他所有分區(qū)的文件系統(tǒng)都要掛載 mount 到根文件系統(tǒng)的某個(gè)目錄下 文件 設(shè)備統(tǒng)一管理 Linux將設(shè)備抽象為文件 Linux使用標(biāo)準(zhǔn)的 樹(shù)型目錄結(jié)構(gòu) 無(wú)論操作系統(tǒng)管理幾個(gè)磁盤(pán)分區(qū) 這樣的目錄樹(shù)只有一個(gè) EXT系列是Linux的標(biāo)準(zhǔn)文件系統(tǒng) 系統(tǒng)把它的磁盤(pán)分區(qū)做為系統(tǒng)的根文件系統(tǒng) EXT以外的文件系統(tǒng)則安裝 mount 在某個(gè)目錄下 成為系統(tǒng)樹(shù)型結(jié)構(gòu)中的一個(gè)分枝 1Linux文件系統(tǒng)的結(jié)構(gòu)設(shè)計(jì) Linux文件系統(tǒng)采用分層結(jié)構(gòu)的設(shè)計(jì) 包括 磁盤(pán)I O系統(tǒng)層磁盤(pán)高速緩存磁盤(pán)文件系統(tǒng)層 也稱(chēng)實(shí)際文件系統(tǒng) 虛擬文件系統(tǒng) 磁盤(pán)I O系統(tǒng)層 是文件系統(tǒng)所依賴(lài)的底層模塊 用于實(shí)現(xiàn)對(duì)存儲(chǔ)在磁盤(pán)上的文件數(shù)據(jù)的I O操作 由通用塊層 I O調(diào)度程序和設(shè)備驅(qū)動(dòng)程序構(gòu)成 實(shí)際文件系統(tǒng) Linux默認(rèn)FS是Ext2 4 支持多種FS Linux專(zhuān)用 Ext2 4 JFS XFS RFS和NFS Unix sysv ufs bfs Minix minix XIA Windows或DOS FAT NTFS虛擬文件系統(tǒng) 為了屏蔽各個(gè)文件系統(tǒng)之間的差異 為用戶(hù)提供訪問(wèn)文件的統(tǒng)一接口 Linux在具體的文件系統(tǒng)上增加了一個(gè)稱(chēng)為虛擬文件系統(tǒng) VirtualFileSystem VFS 的抽象層 使得不同的文件系統(tǒng)按照同樣的模式呈現(xiàn)在用戶(hù)面前 磁盤(pán)高速緩存 回顧前述知識(shí) 5 3Ext系列文件系統(tǒng) Ext2 Extended 2 是專(zhuān)為L(zhǎng)inux系統(tǒng)設(shè)計(jì)的 采用的是Unix文件系統(tǒng)的設(shè)計(jì)思想 運(yùn)行穩(wěn)定 存取效率也很高 可支持最大4TB 1T 1024G 的磁盤(pán)分區(qū) 2000年以前一直是幾乎所有的Linux發(fā)行版的默認(rèn)的文件系統(tǒng) Ext2的弱點(diǎn)在于它是一個(gè)非日志文件系統(tǒng) 所以不能在系統(tǒng)發(fā)生斷電或者其他系統(tǒng)故障時(shí)保證文件數(shù)據(jù)的完整性 Ext3 是一個(gè)基于Ext2開(kāi)發(fā)的日志文件系統(tǒng) 具有健全的日志功能 可靠性很高 在非正常關(guān)機(jī)后 文件系統(tǒng)可在數(shù)十秒鐘內(nèi)自行修復(fù) Ext3容量達(dá)到32TB 單個(gè)文件最大2TB 目前Ext3已被許多Linux發(fā)行版作為默認(rèn)安裝的文件系統(tǒng) Ext4 最顯著的改進(jìn)是文件和文件系統(tǒng)的大小 Ext4容量達(dá)到1024PB 1P 1024T 而文件大小則可達(dá)到16TB 1Ext文件的結(jié)構(gòu) Ext文件的邏輯結(jié)構(gòu)是無(wú)結(jié)構(gòu)的流式文件 基于字節(jié)流的概念 使得Linux系統(tǒng)可以把目錄 設(shè)備等都當(dāng)作文件來(lái)統(tǒng)一對(duì)待 Ext文件的物理結(jié)構(gòu)采用易于擴(kuò)展的多重索引方式 便于文件動(dòng)態(tài)增長(zhǎng) 同時(shí)也可以方便地實(shí)現(xiàn)順序和隨機(jī)訪問(wèn) Ext文件系統(tǒng)引入索引節(jié)點(diǎn) i節(jié)點(diǎn) 來(lái)描述文件 Ext文件的FCB分為i節(jié)點(diǎn)和目錄項(xiàng)兩部分描述 目錄文件的各目錄項(xiàng) directoryentry 僅由文件名和i節(jié)點(diǎn)號(hào) 指向該文件的其它屬性 構(gòu)成 i節(jié)點(diǎn)占用一個(gè)單獨(dú)的存儲(chǔ)塊 包含文件說(shuō)明信息 屬性 和索引表 指向磁盤(pán)塊 兩部分 i節(jié)點(diǎn)毀壞則整個(gè)文件不可用 Ext3文件的物理結(jié)構(gòu)采用了多重索引方式 i節(jié)點(diǎn)中的索引表描述如右圖 索引表0 11項(xiàng)直接指向磁盤(pán)塊 稱(chēng)為直接塊 12項(xiàng)是一個(gè)指針 指向一個(gè)間接索引表 間接索引表中的指針指向數(shù)據(jù)塊 稱(chēng)為間接塊 同理13項(xiàng) 二次間接 14項(xiàng) 三次間接 示例 Ext2文件系統(tǒng)的默認(rèn)塊大小1KB 則12K以下的小文件 不需要使用間接索引 大的文件 需要用到間接索 設(shè)每個(gè)指針占4字節(jié) 則一個(gè)間接索引表含有256個(gè)指針 對(duì)應(yīng)256個(gè)間接塊 因此 大小在12K 268K的文件需要一次間接 同理 更大的文件使用二次間接甚至三次間接指針 得到最大約16GB的文件 2Ext目錄文件 同普通文件一樣 每個(gè)目錄文件對(duì)應(yīng)一個(gè)目錄項(xiàng) 在其父目錄中 以及一個(gè)i節(jié)點(diǎn) 不同的是 其數(shù)據(jù)塊中存放的不是文件內(nèi)容而是目錄項(xiàng)集合 包含了該目錄下的所有文件的目錄項(xiàng) i節(jié)點(diǎn)號(hào)和文件名 頭兩個(gè)目錄項(xiàng)是 和 示例 目錄A下含有子目錄B和文件C D E 注意 文件D和E共享 3Ext文件定位 以查找Linux系統(tǒng)中 home zhuge memo文件為例 實(shí)現(xiàn)按名查找 5 4虛擬文件系統(tǒng) VFS 虛擬文件系統(tǒng)是Linux內(nèi)核中的一個(gè)軟件層 用于給用戶(hù)空間程序提供文件系統(tǒng)接口 它也提供了內(nèi)核中的一個(gè)抽象功能 允許不同的文件系統(tǒng)共存 VFS只存在于內(nèi)存中 在系統(tǒng)啟動(dòng)之后才建立完成 并在系統(tǒng)關(guān)閉時(shí)撤銷(xiāo) VFS必須和實(shí)際文件系統(tǒng)一起才能構(gòu)成一個(gè)完整的文件系統(tǒng) VFS屏蔽了各種實(shí)際文件系統(tǒng)的差異 為用戶(hù)提供了一種標(biāo)準(zhǔn)的文件操作接口 1VFS構(gòu)成 VFS用C語(yǔ)言編寫(xiě) 采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思想 用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中描述各種實(shí)際文件系統(tǒng) 包括 VFS超級(jí)塊 superblock 描述文件系統(tǒng)的基本信息 對(duì)應(yīng)實(shí)際文件系統(tǒng)的超級(jí)塊 VFS目錄項(xiàng) dentry 描述文件的路經(jīng)分量 VFS索引節(jié)點(diǎn) inode 描述文件的信息 對(duì)應(yīng)文件的磁盤(pán)i節(jié)點(diǎn) VFS文件 file 描述一個(gè)打開(kāi)的文件 包括文件的當(dāng)前使用信息 2VFS與進(jìn)程接口 VFS為進(jìn)程提供了訪問(wèn)文件系統(tǒng)的統(tǒng)一接口 接口由fs struct和file struct結(jié)構(gòu)構(gòu)成 fs struct用于建立進(jìn)程與文件系統(tǒng)間的聯(lián)系 主要包括文件系統(tǒng)的根目錄和當(dāng)前目錄等信息 file struct用于建立進(jìn)程和所有該進(jìn)程打開(kāi)的文件之間的聯(lián)系 3VFS緩存機(jī)制 緩存是在內(nèi)存中開(kāi)辟的存儲(chǔ)區(qū) 用于存放那些可能會(huì)重復(fù)使用的數(shù)據(jù) 提高效率 當(dāng)VFS需要構(gòu)造某個(gè)對(duì)象或存取磁盤(pán)數(shù)據(jù)時(shí) 先在緩存中查找 若有就直接使用 否則再啟動(dòng)I O操作 傳輸數(shù)據(jù) 構(gòu)造對(duì)象 VFS采用如下緩存機(jī)制 dentry inode緩存 用于緩存dentry和inode對(duì)象 頁(yè)面緩存 用于緩存文件的內(nèi)容 頁(yè)面緩存 文件的inode對(duì)象將文件內(nèi)容按位置映射到頁(yè)面緩存中 讀寫(xiě)文件時(shí)直接訪問(wèn)頁(yè)面緩存 只在必要時(shí)才啟動(dòng)I O操作 完成磁盤(pán)中與緩存間的數(shù)據(jù)傳輸 4文件系統(tǒng)的操作 用戶(hù)進(jìn)程使用VFS提供的一組系統(tǒng)調(diào)用來(lái)進(jìn)行文件操作 VFS負(fù)責(zé)將這一組系統(tǒng)調(diào)用映射到實(shí)際文件系統(tǒng)的文件操作函數(shù)上 這是通過(guò)在VFS的超級(jí)塊 目錄項(xiàng) i節(jié)點(diǎn)和文件結(jié)構(gòu)中的操作集來(lái)實(shí)現(xiàn)的 這些操作集統(tǒng)一地定義了對(duì)超級(jí)塊 目錄項(xiàng) i節(jié)點(diǎn)和文件的所有操作的接口 它們通過(guò)函數(shù)指針連接到文件系統(tǒng)的某個(gè)操作函數(shù)上 完成具體的文件操作 打開(kāi)文件OPEN 根據(jù)文件的路徑名找到該文件的dentry inode和file對(duì)象 在進(jìn)程的file struct結(jié)構(gòu)中找到一個(gè)空閑的fd數(shù)組項(xiàng) 將file對(duì)象連到該表項(xiàng)中 返回該表項(xiàng)的下標(biāo) 這個(gè)下標(biāo)就是該打開(kāi)文件的文件描述符 若文件已經(jīng)打開(kāi) 被其他進(jìn)程打開(kāi) 則其file結(jié)構(gòu)已存在 此時(shí)只需找到該文件的file結(jié)構(gòu) 將其連到本進(jìn)程的file struct中的fd上 并將file結(jié)構(gòu)中的引用計(jì)數(shù)f count加1 返回fd數(shù)組項(xiàng)的下標(biāo)即可 關(guān)閉文件close 斷開(kāi)進(jìn)程與該文件之間的連接 即釋放該文件的file結(jié)構(gòu)在file struct表中占用的fd 將f count減1 若為0釋放file結(jié)構(gòu) 讀read 寫(xiě)write文件 文件在讀 寫(xiě)前必須是已經(jīng)打開(kāi)的 系統(tǒng)通過(guò)fd的值在進(jìn)程的file struct中檢索fd數(shù)組 得到文件的file結(jié)構(gòu)和i節(jié)點(diǎn) 根據(jù)file結(jié)構(gòu)中的f mode和i節(jié)點(diǎn)中的i mode檢查文件的訪問(wèn)權(quán)限 然后通過(guò)file結(jié)構(gòu)的f op找到read 或write 操作函數(shù) 用這個(gè)函數(shù)完成數(shù)據(jù)的讀 寫(xiě) 讀 寫(xiě)操作的起始位置是file結(jié)構(gòu)中的當(dāng)前文件位置標(biāo)志f pos 打開(kāi)之初其值 0 讀 寫(xiě)操作過(guò)程中動(dòng)態(tài)更新 用lseek 設(shè)置f pos的值 ENDOFTHISCHAPTER- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 操作系統(tǒng) 課件 文件系統(tǒng)
鏈接地址:http://www.szxfmmzy.com/p-7694589.html