




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1文件系統(tǒng)1文件系統(tǒng)2本章教學目標理解文件的概念理解文件目錄的概念和組織方式理解文件的邏輯結構和組織方式掌握文件的物理結構和組織方式理解文件空間管理的方法理解Linux文件系統(tǒng)中文件系統(tǒng)調用2本章教學目標理解文件的概念文件系統(tǒng)的問題文件邏輯上的組織方式?
字節(jié)流形式?固定記錄長度?可變記錄長度文件的訪問模式
順序訪問?隨機訪問?眾多的文件如何有序地進行組織和管理?
文件目錄結構文件如何進行共享和保護?
訪問控制權限文件在物理磁盤上如何存儲?如何分配物理磁盤的空間?
給定文件名和邏輯記錄號或邏輯塊號,如何轉換到文件的物理位置?3文件系統(tǒng)的問題文件邏輯上的組織方式?34大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)4大綱文件與文件系統(tǒng)5文件系統(tǒng)文件系統(tǒng)的功能:文件的按名存取文件目錄的建立和維護文件的查找和定位文件存儲空間的分配和管理提供文件的存取方法和文件存儲結構實現(xiàn)文件的共享、保護和保密提供一組易用的文件操作和命令提供與設備管理交互的統(tǒng)一接口5文件系統(tǒng)文件系統(tǒng)的功能:6文件的概念文件是操作系統(tǒng)對所存儲的信息對外提供的統(tǒng)一邏輯視圖文件由是由文件名標識的一組存儲在二級存儲設備上的信息的集合從用戶的角度,文件是邏輯二級存儲設備最小的分配單元用戶按名存取文件,操作系統(tǒng)負責文件名到物理存儲位置的映射文件是由位串、連續(xù)的字節(jié)、行、或記錄構成的集合,文件內容的含義取決于文件創(chuàng)建者6文件的概念文件是操作系統(tǒng)對所存儲的信息對外提供的統(tǒng)一邏輯視7文件類型按用途分系統(tǒng)文件庫文件用戶文件按保護級別分只讀文件讀寫文件不保護文件按數(shù)據(jù)類型分源程序文件目標文件可執(zhí)行文件7文件類型按用途分8UNIX/Linux的文件類型普通文件ASCII文件二進制文件目錄文件由文件目錄所構成的用來維護文件系統(tǒng)結構的系統(tǒng)文件特別文件指各類外部設備文件將所有I/O設備統(tǒng)一在文件系統(tǒng)下8UNIX/Linux的文件類型普通文件9文件名與文件類型各個操作系統(tǒng)的文件命名規(guī)則略有不同文件名一般由文件名稱和擴展名稱組成,兩者中間以”.”分割,如”myfile.doc,command.exe”文件名用于識別文件擴展名用于區(qū)分文件類型9文件名與文件類型各個操作系統(tǒng)的文件命名規(guī)則略有不同10文件名/filefoowho
date
.profile
由字符(除了/)構成的字符串,有可能是大小寫敏感的10文件名/tmpetcbindmrwm4foowhodat111112文件屬性文件名唯一用戶可讀的信息文件標識文件系統(tǒng)內的唯一標識類型普通文件、目錄文件、設備文件位置指向文件的位置,包括設備以及設備上的位置大小當前長度和允許的最大長度權限訪問控制信息,例如誰可以讀、寫、執(zhí)行文件等時間文件的創(chuàng)建時間,最后修改時間,最后使用時間等12文件屬性文件名13文件屬性與文件相關的所有信息保存在文件目錄結構中文件目錄通常包含文件名和文件標識兩部分文件標識用于定位其它屬性13文件屬性與文件相關的所有信息保存在文件目錄結構中14文件操作創(chuàng)建文件(create)從文件系統(tǒng)中找到存放文件的空間(空間分配問題)在目錄中為該文件添加新目錄項寫文件(write)
給出文件名和需要寫入文件的信息文件系統(tǒng)查找目錄,從文件目錄項中找到文件的位置文件系統(tǒng)保存了一個寫指針,指出下一個寫操作開始的位置讀文件(read)給出文件名以及內存地址,用于存放讀出的下一個文件塊文件系統(tǒng)查找目錄,找到對應的文件目錄項系統(tǒng)保存一個讀指針,指出下一個讀操作開始的位置讀指針每個進程都不一樣14文件操作創(chuàng)建文件(create)15文件操作(cont)重定位(repositioning,seek)查找文件目錄,找到對應的目錄項,將當前文件位置指針修改為給定的值文件重定位并不涉及真正的I/O操作刪除文件(delete)
查找文件目錄,找到給定文件名對應的目錄項釋放文件所占用的所有空間刪除對應的目錄項清空文件刪除文件內容,但保留其屬性(長度除外)15文件操作(cont)重定位(repositioning,16文件操作(cont)追加(appending)重命名(renaming)拷貝(copy)獲取和修改文件屬性(get/setattribute)16文件操作(cont)追加(appending)17文件存取方法順序存取存取操作在上次的基礎上進行系統(tǒng)設置讀寫指針,指向要讀出或寫入的字節(jié)位置或記錄位置。直接存取快速地以任意次序直接讀寫某條記錄,對文件讀/寫的次序沒有任何限制索引存取基于索引文件的存取方法用戶提供記錄名或記錄鍵,按名搜索,找到所需要的記錄17文件存取方法順序存取索引存?。ɡm(xù))例如,一個零售商品價格的文件每條記錄包含兩個部分UPC(商品代碼)--10字符長
價格—6個字符存儲假設有1200000條記錄則文件大小為16*1200000=19.2M如何快速地讀取商品代碼為”2353765401”的價格?18索引存?。ɡm(xù))例如,一個零售商品價格的文件18索引存?。ɡm(xù))假設物理塊大小為1024字節(jié),則每個塊能存放1024/16=64個記錄一共需要18750個物理塊如果文件記錄按無序的方式存放,則平均需要檢索600000條記錄才能找到如果文件記錄按順序存放,并且為文件建立索引,索引的下標表示邏輯塊號,而索引表項的值存放的是該邏輯塊里第一條記錄的UPC19索引存?。ɡm(xù))假設物理塊大小為1024字節(jié),則每個塊能存放12000013200000100012500….20534654052457736491…..23537654010001320000,100.05…….0100012500,203.13…….…….2053465405,511.89…….2353765401,243.00…….2457736491,113.04…….…..64條記錄索引2000013200000100012500….205346212122大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)22大綱文件與文件系統(tǒng)23文件控制塊(FCB)文件系統(tǒng)為每個文件建立的唯一的管理數(shù)據(jù)結構,一般包括:文件標識和控制信息文件名、用戶名、文件存取權限、訪問控制權限、文件類型等;文件邏輯結構信息記錄類型、記錄個數(shù)、記錄長度、成組因子等;文件物理結構信息文件所在設備名、文件物理結構類型、記錄存放在輔存中的塊號或文件信息首塊盤塊號,文件索引的位置等;文件使用信息共享文件的進程數(shù),文件修改情況,文件最大長度和當前大小文件管理信息文件建立日期,最近修改日期,最近訪問日期等;23文件控制塊(FCB)文件系統(tǒng)為每個文件建立的唯一的管理數(shù)24FCB基于FCB可以方便地實現(xiàn)文件的按名存取創(chuàng)建文件時,為其建立一個FCB,用來記錄文件的屬性信息存取此文件時,先找到其FCB,再找到文件信息盤塊號或首塊物理位置為了加快文件的查找速度,通常將FCB集中起來進行管理,組成文件目錄24FCB基于FCB可以方便地實現(xiàn)文件的按名存取25文件目錄文件目錄包含兩種目錄項:文件的FCB
描述子目錄的目錄文件的FCB全部由目錄項構成的文件稱為目錄文件目錄項的格式按統(tǒng)一標準定義目錄文件至少包含兩個目錄項當前目錄項”.”
父目錄項”..”文件目錄的基本功能將文件名轉換成此文件信息在磁盤上的物理位置有效地組織和管理文件25文件目錄文件目錄包含兩種目錄項:26目錄/fileetcusr
dmr
bin26目錄/tmpetcbindmrwm4foowhodate27文件路徑/file/usr/wm4/.profile
由從根目錄開始沿著目錄結構一直到文件的目錄項和文件名順序組合而成27文件路徑/tmpetcbindmrwm4foowhoda28工作目錄/file默認情況下文件名所處的目錄28工作目錄/tmpetcbindmrwm4foowhoda29相對路徑/file
./.profile
../wm4/.profile
相對于當前工作目錄的路徑
..referstoparentdirectory
.referstocurrentdirectory29相對路徑/tmpetcbindmrwm4foowhoda30目錄結構單級目錄結構兩級目錄結構樹形目錄結構DAG結構圖結構30目錄結構單級目錄結構31單級目錄結構所有用戶都共用一個目錄缺點:名字易于重復用戶沒有獨立的目錄,不利于共享和保護31單級目錄結構所有用戶都共用一個目錄32兩級目錄結構32兩級目錄結構33純樹形目錄結構目錄可以有任意多的層次目錄可以包含子目錄,也可以包含文件每個文件只有一個父目錄文件共享較為困難33純樹形目錄結構目錄可以有任意多的層次34DAG目錄結構一個文件可以有多個父目錄能較方便地實現(xiàn)文件的共享目錄結構的維護較復雜需要為每個文件維護一個引用計數(shù),以記錄文件的父目錄個數(shù),僅當引用計數(shù)值為1時,刪除操作才真正刪除文件34DAG目錄結構一個文件可以有多個父目錄35DAG目錄結構示意圖35DAG目錄結構示意圖36文件共享的實現(xiàn)方式LINUXHardlinkSymboliclinkWindows快捷方式36文件共享的實現(xiàn)方式LINUX37HardLink/bobalicehomebinxxyy當前工作目錄為bob$ln../alice/xxyy37HardLink/bobalicehomebinxxy38SymbolicLink/bobalicehomebinxxyy/home/alice/xx當前工作目錄為bob$ln–s../alice/xxyy38SymbolicLink/bobalicehomebi39任意圖結構目錄可能包含環(huán)查找比較困難39任意圖結構目錄可能包含環(huán)40Linux/Unix的目錄項結構將文件名和文件屬性分離,其它信息單獨組成一個數(shù)據(jù)結構,稱為索引節(jié)點inode,其位置由inode號標識每個文件或子目錄都在父目錄文件中有一條目錄項每個目錄項包含兩個字段
文件名
i-node號:指出存放文件屬性信息的inode節(jié)點號每個磁盤塊可以存放幾十個基本目錄項40Linux/Unix的目錄項結構將文件名和文件屬性分離,41
I-node結構modeownertimestampSizeBlockcountDirectblocks0-9DoubleindirectTripleindirectSingleindirectDatablockDatablockDatablockIndirectblock...DatablockDatablockDatablock...IndirectblockIndirectblockIndirectblock...Referencecount41I-node結構modeownertim42inodeUnix/Linux操作系統(tǒng)對由文件目錄項組成的目錄文件和普通文件同等對待,均存放在磁盤中文件系統(tǒng)中的每個文件都有一個磁盤inode與之對應,這些inode存放在磁盤的inode區(qū)找到文件的inode就能找到文件在物理磁盤中的存放位置42inodeUnix/Linux操作系統(tǒng)對由文件目錄項組成43目錄項、inode和數(shù)據(jù)塊的關系磁盤文件卷inode文件名inodeinode文件名inode磁盤文件0#1#2#……數(shù)據(jù)塊數(shù)據(jù)塊目錄塊…數(shù)據(jù)塊數(shù)據(jù)塊目錄塊引導塊磁盤inode區(qū)磁盤信息區(qū):目錄塊和數(shù)據(jù)塊inode……inode…超級塊43目錄項、inode和數(shù)據(jù)塊的關系磁盤文件卷inode44引導塊位于文件卷最開始的第一扇區(qū),該512字節(jié)是文件系統(tǒng)的引導代碼,為根文件系統(tǒng)所特有,其他文件系統(tǒng)這512字節(jié)為空超級塊位于文件系統(tǒng)第二扇區(qū),緊跟引導塊之后,用于描述本文件系統(tǒng)的結構和管理信息。如inode節(jié)點所占盤塊數(shù)、文件數(shù)據(jù)所占的盤塊數(shù)等磁盤inode區(qū)位于超級塊之后,長度由超級塊中的inode所占盤塊數(shù)決定每個inode用于描述文件屬性中除文件名之外的屬性,包括文件的長度、屬主、物理數(shù)據(jù)塊號等;數(shù)據(jù)塊分為目錄文件數(shù)據(jù)塊和普通文件數(shù)據(jù)塊
目錄文件數(shù)據(jù)塊中存放的是目錄項的集合普通文件數(shù)據(jù)塊存放的是文件數(shù)據(jù)44引導塊45Linux中文件目錄的檢索(a)用戶角度目錄結構usrmyfilxyzhomefei1myfile.cfei3fei2Afei4fei5testfile.cB685.100
..941A270fei1250fei2770fei3270.685..302myfile.c250.685..302myfile.c770.685..345fei4565fei5345
.770..302testfile.c565.770..824B
不同角度的目錄結構(b)系統(tǒng)角度目錄鏈接45Linux中文件目錄的檢索(a)用戶角度目錄結構usrm46大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)46大綱文件與文件系統(tǒng)47文件組織與數(shù)據(jù)存儲邏輯結構從用戶的觀點出發(fā),研究用戶概念中的抽象的信息組織方式用戶可以觀察到的、可加以處理的數(shù)據(jù)集合相關數(shù)據(jù)的集合稱為邏輯文件物理結構邏輯文件在物理存儲空間中的存放方法和組織關系物理文件被看成是相關物理塊的集合主存與物理存儲器進行信息交換的物理單位是塊47文件組織與數(shù)據(jù)存儲邏輯結構48文件的邏輯結構流式文件又稱為無結構文件文件內的數(shù)據(jù)不再分記錄,而是看成字節(jié)流也可以看作是記錄就為1個字節(jié)的記錄式文件大多數(shù)現(xiàn)代操作系統(tǒng)如WINDOWS,UNIX,LINUX只提供流式文件由應用程序自行根據(jù)字節(jié)重構對應用有意義的記錄48文件的邏輯結構流式文件49文件的邏輯結構記錄式文件文件是一組記錄的集合例如職工的工資記錄構成工資文件從操作系統(tǒng)的角度看,邏輯記錄是文件內獨立的最小信息單位,每次總是為使用者存儲、檢索或更新一條邏輯記錄記錄式文件的記錄組織和使用方法記錄式順序文件記錄順序編號,并被順序訪問記錄式索引文件用索引表根據(jù)記錄鍵快速查找到相應的記錄在文件中的位置49文件的邏輯結構記錄式文件50成組與分解邏輯記錄與物理塊之間的對應關系一條邏輯記錄被存放到物理存儲器時,可能會占用一塊或多塊,或者一個物理塊可以包含多條邏輯記錄成組:若干邏輯記錄合并成一組,寫入一塊,每塊中的邏輯記錄的個數(shù)稱為成塊因子分解:從讀進內存緩沖區(qū)的物理塊中分解出邏輯記錄的過程50成組與分解邏輯記錄與物理塊之間的對應關系51記錄成組與分解的處理過程邏輯記錄物理存儲區(qū)邏輯記錄1邏輯記錄2邏輯記錄3邏輯記錄K…物理記錄系統(tǒng)緩沖區(qū)用戶工作區(qū)51記錄成組與分解的處理過程邏輯記錄物理存儲區(qū)邏輯記錄1邏輯52記錄格式記錄格式就是記錄內數(shù)據(jù)的排列方式記錄格式分為:定長記錄所有邏輯記錄具有相同的長度記錄中的所有數(shù)據(jù)項的相對位置固定變長記錄邏輯記錄長度不等每條邏輯記錄的長度在處理之前能預先確定跨塊記錄記錄長度大于塊長52記錄格式記錄格式就是記錄內數(shù)據(jù)的排列方式53記錄鍵能用于區(qū)別同一文件中其它邏輯記錄的數(shù)據(jù)項,也稱為關鍵字或鍵能唯一標識某條邏輯記錄的鍵稱為主鍵53記錄鍵能用于區(qū)別同一文件中其它邏輯記錄的數(shù)據(jù)項,也稱為關54大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)54大綱文件與文件系統(tǒng)55文件的物理結構文件系統(tǒng)需要提供將邏輯文件存儲到物理存儲設備上去的組織方式邏輯上連續(xù)的文件是否需要連續(xù)存放在物理存儲介質上?文件的存取速度?兩類方法計算法通過對記錄鍵進行計算,從而轉換成對應的物理地址指針法設置專門的指針,指明相應記錄的物理地址或表達各個記錄之間的關聯(lián)55文件的物理結構文件系統(tǒng)需要提供將邏輯文件存儲到物理存儲設56文件的物理結構具體的文件物理結構和組織方法順序文件/連續(xù)文件連接文件
FAT
索引文件56文件的物理結構具體的文件物理結構和組織方法57順序文件/連續(xù)文件文件中邏輯上連續(xù)的信息存放到物理介質的相鄰物理塊上形成順序結構文件控制塊FCB中保存第一個物理塊的地址和占用的總物理塊數(shù)可以對順序文件按記錄進行排序,成為有序的順序文件優(yōu)點:順序存取和隨機存取時速度較快缺點建立文件之前需要確定文件的長度,以分配存儲空間修改、插入和添加文件記錄較為困難對于變長記錄的處理很困難會產生外部碎片57順序文件/連續(xù)文件文件中邏輯上連續(xù)的信息存放到物理介質的585859連接文件文件在物理上被組織成物理塊的鏈表,分配給一個文件的物理塊在空間上可能是分散的文件控制塊FCB給出第一個物理塊的地址每個塊的連接字指出文件的下一個物理塊位置當連接字內容為某個特殊值時,表示文件至本塊結束pointerblock=59連接文件文件在物理上被組織成物理塊的鏈表,分配給一個文件606061連接文件(cont)優(yōu)點:文件的邏輯順序獨立于存儲空間的物理塊順序易于記錄的增、刪、改易于文件擴充缺點
僅適宜于順序存取
隨機存取速度慢,需要從頭開始查找連接字與數(shù)據(jù)混放,破壞了數(shù)據(jù)塊的完整性連接字需要占用額外的空間61連接文件(cont)優(yōu)點:62FAT連接文件的一個變種,用于克服連接字和數(shù)據(jù)混放的缺點,提高隨機存取的速度把連接指針從數(shù)據(jù)塊中分離出來,單獨建立一個指針數(shù)組PTRS[n],n為組成磁盤連接文件物理塊的總塊數(shù)每個PTRS[i]對應于一個物理塊i,如果物理塊j在文件中緊跟物理塊i之后,則PTRS[i]=j文件控制塊FCB存放文件第一個物理塊的塊號指針數(shù)組保存在磁盤的一個專門區(qū)域,如0磁道的前k個塊為了縮短定位文件信息塊所需要的時間,可以把這些指針連續(xù)盤塊裝進主存或高速緩存。假設4字節(jié)記錄磁盤塊號,塊大小為1K,則當k=100時,可以記錄256×100=25600個數(shù)據(jù)塊的磁盤塊號,即25,600,000字節(jié)大小的存儲空間62FAT連接文件的一個變種,用于克服連接字和數(shù)據(jù)混放的缺點636364索引文件為每個文件建立索引,給出邏輯記錄或邏輯塊號到物理塊號的映射索引表可以存放在文件控制塊中,也可以讓索引表作為物理塊單獨駐留在磁盤的任意位置,而FCB中僅包含索引表的地址優(yōu)點隨機存儲速度快便于信息的增、刪、改缺點索引表的空間開銷64索引文件為每個文件建立索引,給出邏輯記錄或邏輯塊號到物理656566索引文件(cont)當記錄數(shù)目很多/文件很大時,索引表本身要占用很多物理塊,則查找某個記錄鍵所對應的索引項時,可能需要查找多個物理塊若索引表占用n塊,則平均要載入n/2個物理塊,才能找到所需記錄的物理地址可以建立索引的索引,稱為二級索引;或索引的索引的索引,即三級索引66索引文件(cont)當記錄數(shù)目很多/文件很大時,索引表本67UNIX/LINUX中的多級索引結構每個FCB中規(guī)定了13個索引項前10項為直接索引11、12項為一次間接尋址13項為二次間接尋址小文件無需二次索引,超大文件可以用3級索引,文件最大可以到11億字節(jié)67UNIX/LINUX中的多級索引結構每個FCB中規(guī)定了168UNIX/LINUX中的多重索引結構68UNIX/LINUX中的多重索引結構696970大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)70大綱文件與文件系統(tǒng)71文件空間管理的作用輔助存儲空間的有效分配和釋放創(chuàng)建和擴充文件時,決定分配哪些磁盤塊是很重要的,這會影響磁盤訪問次數(shù)刪除文件和縮短文件時,需要回收磁盤塊隨著分配和回收,可能會出現(xiàn)碎片71文件空間管理的作用輔助存儲空間的有效分配和釋放72常用磁盤空間管理方法位示圖空閑區(qū)表空閑塊鏈成組空閑塊鏈72常用磁盤空間管理方法位示圖73位示圖法磁盤空間由固定大小的塊組成,可方便地使用位示圖管理。每一字位對應于一個物理塊,字位值為1表示被占用,0表示空閑。優(yōu)點:每個盤塊僅需一比特來標識若盤塊長為1KB,則位示圖開銷為0.012%73位示圖法磁盤空間由固定大小的塊組成,可方便地使用位示圖管74空閑區(qū)表法常常用于連續(xù)文件,將空閑區(qū)存儲塊的位置及其連續(xù)空閑的塊數(shù)構成一張表類似于內存管理中的連續(xù)存儲管理分配時,依次掃描空閑區(qū)表,尋找合適的空閑塊并修改登記項;刪除文件并釋放空閑區(qū)時,把空閑位置及連續(xù)空閑區(qū)長度填入空閑區(qū)表,出現(xiàn)鄰接的空閑區(qū)時,還需執(zhí)行合并操作搜索算法:最先適應最佳適應最壞適應等74空閑區(qū)表法常常用于連續(xù)文件,將空閑區(qū)存儲塊的位置及其連續(xù)75空閑塊鏈把所有空閑塊連接在一起,系統(tǒng)保持指針指向第一個空閑塊,每一空閑塊中包含指向下一個空閑塊的指針申請一個空閑塊時,從鏈頭取一塊并修改系統(tǒng)指針;刪除時釋放占用塊,使其成為空閑塊并掛到空閑鏈上75空閑塊鏈把所有空閑塊連接在一起,系統(tǒng)保持指針指向第一個空76UNIX/Linux空閑塊成組連接法(1)存儲空間分成512字節(jié)一塊。假定文件卷啟用時共有可用空閑塊338塊,編號從12至349。每100塊劃分一組,每組第一塊登記下一組空閑塊的物理盤塊號和空閑總數(shù)。76UNIX/Linux空閑塊成組連接法(1)存儲空間分成577
…………空閑塊數(shù)395049…1212空閑塊數(shù)100150149…51空閑塊數(shù)100250249…151空閑塊數(shù)1000349…251分配算法IF空閑塊數(shù)=1THENIF第一個單元=0THEN等待
ELSE復制第一個單元對應塊到專用塊,并分配之ELSE分配第(空閑塊數(shù))個單元對應塊,空閑塊數(shù)減1歸還算法IF空閑塊數(shù)<100THEN專用塊的空閑塊數(shù)加一,第(空閑塊數(shù))個單元置歸還塊號ELSE復制專用塊到歸還塊,專用塊的空閑塊數(shù)置一,第一單元置歸還塊號(磁盤)專用塊(主存)專用塊UNIX/Linux空閑塊成組連接法(2)77…………空閑塊數(shù)395049…1212空閑塊數(shù)100178大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)78大綱文件與文件系統(tǒng)79文件系統(tǒng)調用的實現(xiàn)創(chuàng)建和刪除文件打開和關閉文件讀/寫文件文件共享主存映射文件79文件系統(tǒng)調用的實現(xiàn)創(chuàng)建和刪除文件80文件系統(tǒng)內部結構主存i_numberi_counti_numberi_count…i_addr[40]
…i_numberi_count…i_addr[40]f_flagf_count…f_inode
file的指針fp
…用戶打開文件表files_struct文件描述符fd系統(tǒng)打開文件表file_struct一個打開文件的file活動inode活動inode主存活動inode表磁盤磁盤文件卷0#1#2#……………引導塊超級塊磁盤inode區(qū)磁盤信息區(qū):目錄塊和數(shù)據(jù)塊磁盤文件80文件系統(tǒng)內部結構主存i_numberi_number用戶81主存活動inode表磁盤inode記錄文件的屬性和相關信息,文件訪問過程會頻繁地用到它,因此頻繁地訪問輔存極不經(jīng)濟Linux/Unix在內核開辟一張專用表,用于存儲經(jīng)常訪問的磁盤inode,以及一些動態(tài)信息,稱為主存inode表/活躍inode表81主存活動inode表磁盤inode記錄文件的屬性和相關信82主存活動inode表
主存inode表包含:
磁盤inode的所有信息,如物理塊地址主存inode的狀態(tài)
Inode是否上鎖
Inode數(shù)據(jù)是否改變
文件數(shù)據(jù)是否改變
文件系統(tǒng)的邏輯設備號.inode號
引用數(shù):i_count82主存活動inode表主存inode表包含:83系統(tǒng)打開文件表
內核有一個系統(tǒng)打開文件表,用于存放文件訪問信息
系統(tǒng)打開文件表中的每一個表項包括:
指向主存inode表的指針
下一次讀/寫文件的位移
打開進程的訪問權限
引用計數(shù):f_count83系統(tǒng)打開文件表內核有一個系統(tǒng)打開文件表,用于存放文件訪84用戶打開文件表每個進程有一個用戶文件描述符表,用于描述所有打開的文件
每個用戶文件打開表中的表項都指向一個內核系統(tǒng)文件打開表中的表項三個特殊的表項
Entry0:標準輸入Entry1:標準輸出Entry2:標準錯誤輸出84用戶打開文件表每個進程有一個用戶文件描述符表,用于描述所85文件系統(tǒng)調用
--文件的創(chuàng)建
系統(tǒng)調用C語言格式為:
intfd,mode;char*filenamep;fd=create(filenamep,mode);
創(chuàng)建兼有打開功能85文件系統(tǒng)調用
--文件的創(chuàng)建系統(tǒng)調用C語86文件系統(tǒng)調用
--文件的創(chuàng)建①為新文件分配索引節(jié)點和活動索引節(jié)點,并把索引節(jié)點編號與文件分量名組成新目錄項,記到目錄中。②在新文件所對應的活動索引節(jié)點中置初值,如置存取權限i_mode,連接計數(shù)i_nlink等。③分配用戶打開文件表項和系統(tǒng)打開文件表項,置系統(tǒng)打開文件表項初值,如讀寫位移f_offset清0。④把各表項及文件對應的活動索引節(jié)點用指針連接起來,把文件描述字fd返回給調用者。86文件系統(tǒng)調用
--文件的創(chuàng)建①為新文件分配87文件系統(tǒng)調用
--文件的刪除
刪除的任務:把指定文件從所在的目錄文件中去除。如果沒有連接用戶(i_link為1),還要把文件占用的存儲空間釋放。系統(tǒng)調用形式為:unlink(filenamep)。在執(zhí)行刪除時,必須要求用戶對該文件具有“寫”操作權。87文件系統(tǒng)調用
--文件的刪除刪除的任務:88文件系統(tǒng)調用
--文件的打開
調用方式為:
intfd,mode;char*filenamep;fd=open(filenamep,mode);88文件系統(tǒng)調用
--文件的打開調用方式為:89文件系統(tǒng)調用
--文件的打開①檢索目錄,把它的外存索引節(jié)點復制到活動索引節(jié)點表。②根據(jù)參數(shù)mode核對權限,如果非法,則這次打開失敗。③當“打開”合法時,為文件分配用戶打開文件表項和系統(tǒng)打開文件表項,并為系統(tǒng)打開文件表的表項設置初值。通過指針建立這些表項與活動索引節(jié)點間的聯(lián)系。把文件描述字,即用戶打開文件表中相應文件表項的序號返回給調用者。89文件系統(tǒng)調用
--文件的打開①檢索目錄,把它的90文件系統(tǒng)調用
--文件的打開如果執(zhí)行open()時,其它用戶已經(jīng)打開了同一文件,則活動inode表中已經(jīng)有此文件的inode,則無需執(zhí)行第①步的inode復制工作但需要將活動inode中的i_count加1i_count反映通過不同的系統(tǒng)打開文件表項來共享同一個活動inode的進程數(shù)目是執(zhí)行文件關閉操作時,能否釋放活動inode節(jié)點的依據(jù)。90文件系統(tǒng)調用
--文件的打開如果執(zhí)行open()91#include<stdio.h>#include<sys/types.h>#include<fcntl.h>main(){intfd1,fd2,fd3;printf("Beforeopen...\n");fd1=open(
"/etc/passwd",O_RDONLY);fd2=open("./openEx1.c",O_WRONLY);fd3=open(
"/etc/passwd",O_RDONLY);printf("fd1=%dfd2=%dfd3=%d\n",fd1,fd2,fd3);}$ccopenEx1.c-oopenEx1$openEx1Beforeopen...fd1=3fd2=4fd3=5$91#include<stdio.h>$ccopenE92…CNT=2/etc/passwdCNT=1./openEx2.c主存活動inode表文件描述符表指針用戶區(qū)用戶打開文件表01234567.........CNT=1RCNT=1W...CNT=1R系統(tǒng)打開文件表.........92…CNT=2CNT=1主存活動inode表文件描述用戶區(qū)93文件系統(tǒng)調用
--文件的關閉
調用方式為:
intfd;close(fd);93文件系統(tǒng)調用
--文件的關閉調用方式為:94文件系統(tǒng)調用
--文件的關閉①根據(jù)fd找到用戶打開文件表項,再找到系統(tǒng)打開文件表項,釋放用戶打開文件表項。②把對應系統(tǒng)打開文件表項中的f_count減1,如果非0,說明進程族中還有其它進程共享這一表項,不用釋放直接返回;否則釋放表項,并找到與之連接的主動活動inode。③把活動inode中的i_count減1,若不為0,表明還有用戶進程正在使用該文件,不用釋放而直接返回;否則在把該活動inode中的內容復制回磁盤上的相應inode后,釋放該活動inode。94文件系統(tǒng)調用
--文件的關閉①根據(jù)fd找到用戶95文件系統(tǒng)調用f_count和i_count反映了進程動態(tài)共享一個文件的兩種方式系統(tǒng)打開文件表中的f_count反映不同進程通過同一個系統(tǒng)打開文件表項共享一個文件的情況進程使用相同的位移指針f_offset共享文件
如fork()系統(tǒng)調用產生的父子進程主存活動inode中的i_count反映不同進程通過不同系統(tǒng)打開文件表項共享一個文件的情況進程使用不同的位移指針f_offset共享文件95文件系統(tǒng)調用f_count和i_count反映了進程動態(tài)96文件系統(tǒng)調用
--讀文件
調用的形式為:
intnr,fd,count;charbuf[];nr=read(fd,buf,count);96文件系統(tǒng)調用
--讀文件
調用的形式為:97文件系統(tǒng)調用
--讀文件
系統(tǒng)根據(jù)f_flag中的信息,檢查讀操作合法性;若合法,按活動i_node中i_addr指出的文件物理塊存放地址,從文件當前的位移量f_offset處開始,讀出所要求的count個字節(jié),存放到系統(tǒng)緩沖區(qū)中,然后再送到buf指向的用戶主存區(qū)中。97文件系統(tǒng)調用
--讀文件
系統(tǒng)根據(jù)f_flag中98fdfp…f_flag(r/w)f_count(1)f_offset(0)f_inodei_mode(x)i_nlink(1)i_addr(40)系統(tǒng)打開文件表活動inode用戶打開文件表物理塊98fdfp…f_flag(r/w)f_count(1)f_99#include<stdio.h>#include<sys/types.h>#include<fcntl.h>main(){intfd1,fd2,fd3;charbuf1[20],buf2[20];buf1[19]='\0';buf2[19]='\0';printf("=======\n");fd1=open("/etc/passwd",O_RDONLY);
read(fd1,buf1,19);printf("fd1=%dbuf1=%s\n",fd1,buf1);
read(fd1,buf2,19);printf("fd1=%dbuf2=%s\n",fd1,buf2);printf("=======\n");}$ccopenEx2.c-oopenEx2$openEx2=======fd1=3buf1=root:x:0:1:Super-Usfd1=3buf2=er:/:/sbin/shdaemo=======$99#include<stdio.h>$ccopenE100#include<stdio.h>#include<sys/types.h>#include<fcntl.h>main(){intfd1,fd2,fd3;charbuf1[20],buf2[20];buf1[19]='\0';buf2[19]='\0';printf("======\n");fd1=open("/etc/passwd",O_RDONLY);
fd2=open("/etc/passwd",O_RDONLY);read(fd1,buf1,19);printf("fd1=%dbuf1=%s\n",fd1,buf1);
read(fd2,buf2,19);printf("fd2=%dbuf2=%s\n",fd2,buf2);printf("======\n");}$ccopenEx3.c-oopenEx3$openEx3======fd1=3buf1=root:x:0:1:Super-Usfd2=4buf2=root:x:0:1:Super-Us======$兩次系統(tǒng)調用,創(chuàng)建了兩個系統(tǒng)打開文件表項,每個都有自己的讀寫位移指針100#include<stdio.h>$ccopen101…CNT=2/etc/passwd...主存活動inode表用戶打開文件表指針用戶區(qū)用戶打開文件表01234567.........CNT=1R......CNT=1R系統(tǒng)打開文件表.........101…CNT=2...主存活動inode表用戶打開用戶區(qū)用102文件系統(tǒng)調用
--寫文件
調用的形式為:
nw=write(fd,buf,count);buf是信息傳送的源地址,即把buf所指向的用戶主存區(qū)中的信息,寫入到文件中。102文件系統(tǒng)調用
--寫文件調用的形式為:103文件系統(tǒng)調用
--文件的隨機存取系統(tǒng)調用的形式為:
longlseek;longoffset;intwhence,fd;lseek(fd,offset,whence);103文件系統(tǒng)調用
--文件的隨機存取系統(tǒng)調用的形式104文件系統(tǒng)調用
--文件的隨機存取
fd:文件描述字fd必須指向一個用讀或寫方式打開的文件offset:當whence是0時,則f_offset被置為offset,即設置絕對位移當whence是1時,則f_offset被置為文件當前位置加上offset,即設置相對位移104文件系統(tǒng)調用
--文件的隨機存取
fd:105文件共享文件的靜態(tài)共享文件的動態(tài)共享文件的符號鏈接共享
105文件共享文件的靜態(tài)共享106文件的靜態(tài)共享一個文件同時屬于多個目錄,但實際上文件僅有一處物理存儲文件鏈接優(yōu)點:節(jié)省空間文件的修改對任何用戶都可見,保證文件的一致性106文件的靜態(tài)共享一個文件同時屬于多個目錄,但實際上文件僅107文件的靜態(tài)共享系統(tǒng)調用形式為:
char*oldnamep,*newnamep;link(oldnamep,newnamep);①檢索目錄找到oldnamep所指向文件的索引節(jié)點inode編號。②再次檢索目錄找到newnamep所指文件的父目錄文件,并把已存在文件的索引節(jié)點inode編號與別名構成一個目錄項,記入到該目錄中去。③把已存在文件索引節(jié)點inode的連接計數(shù)i_nlink加“1”。107文件的靜態(tài)共享系統(tǒng)調用形式為:108usrmyfilxyzhomefei1myfile.cfei3fei2Afei4fei5testfile.cB685.100
..941A270fei1250fei2770fei3270.685..302myfile.c250.685..302myfile.c770.685..345fei4565fei5345
.770..302testfile.c565.770..824Blink(“/home/fei1/myfile.c”,“/home/fei2/myfile.c”);link(“/home/fei1/myfile.c”,“/home/fei3/fei4/testfile.c”);108usrmyfilxyzhomefei1myfile.c109文件的靜態(tài)共享文件解除鏈接調用形式為:
unlink(namep)解除鏈接與文件刪除執(zhí)行的是同一系統(tǒng)調用代碼。刪除文件是從文件主角度講的,解除文件連接是從共享文件的其他用戶角度講的。都要刪去目錄項,把i_nlink減1,不過,只有當i_nlink減為0時,才真正刪除文件。
109文件的靜態(tài)共享文件解除鏈接調用形式為:110文件的動態(tài)共享文件動態(tài)共享是系統(tǒng)中不同的用戶進程或同一用戶的不同進程并發(fā)訪問同一文件。這種共享關系只有當用戶進程存在時才可能出現(xiàn),一旦用戶的進程消亡,其共享關系也就自動消失。文件的每次讀寫由一個讀/寫位移指針指出要讀寫的位置。現(xiàn)在的問題是:應讓多個進程共用同一個讀/寫位移,還是各個進程具有各自的讀寫位移呢?110文件的動態(tài)共享文件動態(tài)共享是系統(tǒng)中不同的用戶進程或同一111文件的動態(tài)共享同一用戶父、子進程協(xié)同完成任務,使用同一讀/寫位移,同步地對文件進行操作。該位移指針似乎適合放在相應文件的活動索引節(jié)點中。多用戶共享文件,每個希望獨立地讀、寫文件,這時不能只設置一個讀寫位移指針,須為每個用戶進程分別設置一個讀、寫位移指針,該位移指針似乎放在用戶打開文件表中合適。為了解決上述矛盾,系統(tǒng)建立系統(tǒng)打開文件表來解決上述矛盾
111文件的動態(tài)共享同一用戶父、子進程協(xié)同完成任務,使用同一112系統(tǒng)打開文件表活動inode表file結構…………活動的inode駐留主存i_count=1f_offsetf_count=2f_inode使用同一位移指針的文件共享fpfp父進程的打開文件表……
父進程fdfd……子進程的打開文件表fd……
子進程非駐留主存112系統(tǒng)打開文件表活動inode表file…………活動的i113
fda進程A的子進程駐留主存活動inode表活動inode表……newfile活動的inodei_count=2
使用不同位移指針的文件共享fdafpafd……進程B的打開文件表fdb……
進程B非駐留主存進程A的打開文件表……
進程Afpb…f_offsetf_count=2f_flag(r)f_inodef_offsetf_count=1f_flag(r/w)f_inode系統(tǒng)打開文件表…進程A的子進程的打開文件表……fpa113fda進程A的子進程駐留主存活動inode表活動in114文件的符號鏈接共享
又稱軟鏈接,符號鏈接是一種只有文件名,不指向inode的文件符號鏈接共享文件的實現(xiàn)思想:用戶A目錄中形afile→bfile,實現(xiàn)A的目錄與B的文件的鏈接。其中只包含被鏈接文件bfile的路徑名而不是它的inode號
114文件的符號鏈接共享又稱軟鏈接,符號鏈接是一種只有文件115主存映射文件主存映射文件使用讀寫主存的操作來操作文件,簡化編程基于虛擬存儲管理機制系統(tǒng)提供兩個新的系統(tǒng)調用,映射文件mmap有兩個參數(shù):一個文件名和一個虛擬地址,把一個文件映射到進程地址空間。移去映射文件unmmap讓文件與進程虛擬地址空間斷開,并把映射文件的數(shù)據(jù)寫回磁盤文件。
115主存映射文件主存映射文件116主存映射文件123451234552413進程A虛存進程B虛存物理主存12345磁盤文件116主存映射文件1進程A虛存進程B虛存物理主存12117虛擬文件系統(tǒng)虛擬文件系統(tǒng)要實現(xiàn)以下目標同時支持多種文件系統(tǒng);多個文件系統(tǒng)應與傳統(tǒng)的單一文件系統(tǒng)沒有區(qū)別,在用戶面前表現(xiàn)為一致的接口;提供通過網(wǎng)絡共享文件的支持,訪問遠程結點上的文件系統(tǒng)應與訪問本地結點的文件系統(tǒng)一致;可以開發(fā)出新的文件系統(tǒng),以模塊方式加入到操作系統(tǒng)中。117虛擬文件系統(tǒng)虛擬文件系統(tǒng)要實現(xiàn)以下目標118虛擬文件系統(tǒng)虛擬文件系統(tǒng)設計思想:應用層:直接基于標準的UNIX文件系統(tǒng)調用來操作文件,無需考慮具體文件系統(tǒng)的特性和物理存儲介質虛擬層:對具體文件系統(tǒng)的共同特性進行抽象,形成與具體文件系統(tǒng)的實現(xiàn)無關的虛擬層,定義與用戶的一致性接口實現(xiàn)層:
使用類似于開關表的技術進行具體文件系統(tǒng)的轉接,實現(xiàn)各種文件系統(tǒng)的細節(jié)。自包含,包含文件系統(tǒng)的各種實施設施,如超級塊、節(jié)點區(qū)、數(shù)據(jù)區(qū)以及各種數(shù)據(jù)結構和文件類的操作函數(shù)118虛擬文件系統(tǒng)虛擬文件系統(tǒng)設計思想:119本章小結文件可以分為普通文件和目錄文件,其中目錄文件是完全由目錄項組成的文件文件目錄的主要作用之一是實現(xiàn)文件的按名存取,即將文件名轉換成物理塊Linux/Unix將文件名和文件的其它屬性進行分離,而將其它屬性單獨用一個數(shù)據(jù)結構inode表示,文件目錄的表項僅包括文件名和inode號文件的物理組織方式包括順序/連續(xù)文件、連接文件、FAT和索引文件等,其中連接文件不適合隨機存取119本章小結文件可以分為普通文件和目錄文件,其中目錄文件是120本章小結文件空間的管理方法可以用位示圖、空閑區(qū)表、空閑塊鏈和空閑塊成組管理法等文件系統(tǒng)通常包含用戶打開文件表和系統(tǒng)打開文件表兩個數(shù)據(jù)結構,返回給用戶的文件描述符即為在用戶打開文件表中的下標,可以通過這兩個表來實現(xiàn)文件的共享。120本章小結文件空間的管理方法可以用位示圖、空閑區(qū)表、空閑121文件系統(tǒng)1文件系統(tǒng)122本章教學目標理解文件的概念理解文件目錄的概念和組織方式理解文件的邏輯結構和組織方式掌握文件的物理結構和組織方式理解文件空間管理的方法理解Linux文件系統(tǒng)中文件系統(tǒng)調用2本章教學目標理解文件的概念文件系統(tǒng)的問題文件邏輯上的組織方式?
字節(jié)流形式?固定記錄長度?可變記錄長度文件的訪問模式
順序訪問?隨機訪問?眾多的文件如何有序地進行組織和管理?
文件目錄結構文件如何進行共享和保護?
訪問控制權限文件在物理磁盤上如何存儲?如何分配物理磁盤的空間?
給定文件名和邏輯記錄號或邏輯塊號,如何轉換到文件的物理位置?123文件系統(tǒng)的問題文件邏輯上的組織方式?3124大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)4大綱文件與文件系統(tǒng)125文件系統(tǒng)文件系統(tǒng)的功能:文件的按名存取文件目錄的建立和維護文件的查找和定位文件存儲空間的分配和管理提供文件的存取方法和文件存儲結構實現(xiàn)文件的共享、保護和保密提供一組易用的文件操作和命令提供與設備管理交互的統(tǒng)一接口5文件系統(tǒng)文件系統(tǒng)的功能:126文件的概念文件是操作系統(tǒng)對所存儲的信息對外提供的統(tǒng)一邏輯視圖文件由是由文件名標識的一組存儲在二級存儲設備上的信息的集合從用戶的角度,文件是邏輯二級存儲設備最小的分配單元用戶按名存取文件,操作系統(tǒng)負責文件名到物理存儲位置的映射文件是由位串、連續(xù)的字節(jié)、行、或記錄構成的集合,文件內容的含義取決于文件創(chuàng)建者6文件的概念文件是操作系統(tǒng)對所存儲的信息對外提供的統(tǒng)一邏輯視127文件類型按用途分系統(tǒng)文件庫文件用戶文件按保護級別分只讀文件讀寫文件不保護文件按數(shù)據(jù)類型分源程序文件目標文件可執(zhí)行文件7文件類型按用途分128UNIX/Linux的文件類型普通文件ASCII文件二進制文件目錄文件由文件目錄所構成的用來維護文件系統(tǒng)結構的系統(tǒng)文件特別文件指各類外部設備文件將所有I/O設備統(tǒng)一在文件系統(tǒng)下8UNIX/Linux的文件類型普通文件129文件名與文件類型各個操作系統(tǒng)的文件命名規(guī)則略有不同文件名一般由文件名稱和擴展名稱組成,兩者中間以”.”分割,如”myfile.doc,command.exe”文件名用于識別文件擴展名用于區(qū)分文件類型9文件名與文件類型各個操作系統(tǒng)的文件命名規(guī)則略有不同130文件名/filefoowho
date
.profile
由字符(除了/)構成的字符串,有可能是大小寫敏感的10文件名/tmpetcbindmrwm4foowhodat13111132文件屬性文件名唯一用戶可讀的信息文件標識文件系統(tǒng)內的唯一標識類型普通文件、目錄文件、設備文件位置指向文件的位置,包括設備以及設備上的位置大小當前長度和允許的最大長度權限訪問控制信息,例如誰可以讀、寫、執(zhí)行文件等時間文件的創(chuàng)建時間,最后修改時間,最后使用時間等12文件屬性文件名133文件屬性與文件相關的所有信息保存在文件目錄結構中文件目錄通常包含文件名和文件標識兩部分文件標識用于定位其它屬性13文件屬性與文件相關的所有信息保存在文件目錄結構中134文件操作創(chuàng)建文件(create)從文件系統(tǒng)中找到存放文件的空間(空間分配問題)在目錄中為該文件添加新目錄項寫文件(write)
給出文件名和需要寫入文件的信息文件系統(tǒng)查找目錄,從文件目錄項中找到文件的位置文件系統(tǒng)保存了一個寫指針,指出下一個寫操作開始的位置讀文件(read)給出文件名以及內存地址,用于存放讀出的下一個文件塊文件系統(tǒng)查找目錄,找到對應的文件目錄項系統(tǒng)保存一個讀指針,指出下一個讀操作開始的位置讀指針每個進程都不一樣14文件操作創(chuàng)建文件(create)135文件操作(cont)重定位(repositioning,seek)查找文件目錄,找到對應的目錄項,將當前文件位置指針修改為給定的值文件重定位并不涉及真正的I/O操作刪除文件(delete)
查找文件目錄,找到給定文件名對應的目錄項釋放文件所占用的所有空間刪除對應的目錄項清空文件刪除文件內容,但保留其屬性(長度除外)15文件操作(cont)重定位(repositioning,136文件操作(cont)追加(appending)重命名(renaming)拷貝(copy)獲取和修改文件屬性(get/setattribute)16文件操作(cont)追加(appending)137文件存取方法順序存取存取操作在上次的基礎上進行系統(tǒng)設置讀寫指針,指向要讀出或寫入的字節(jié)位置或記錄位置。直接存取快速地以任意次序直接讀寫某條記錄,對文件讀/寫的次序沒有任何限制索引存取基于索引文件的存取方法用戶提供記錄名或記錄鍵,按名搜索,找到所需要的記錄17文件存取方法順序存取索引存?。ɡm(xù))例如,一個零售商品價格的文件每條記錄包含兩個部分UPC(商品代碼)--10字符長
價格—6個字符存儲假設有1200000條記錄則文件大小為16*1200000=19.2M如何快速地讀取商品代碼為”2353765401”的價格?138索引存?。ɡm(xù))例如,一個零售商品價格的文件18索引存?。ɡm(xù))假設物理塊大小為1024字節(jié),則每個塊能存放1024/16=64個記錄一共需要18750個物理塊如果文件記錄按無序的方式存放,則平均需要檢索600000條記錄才能找到如果文件記錄按順序存放,并且為文件建立索引,索引的下標表示邏輯塊號,而索引表項的值存放的是該邏輯塊里第一條記錄的UPC139索引存?。ɡm(xù))假設物理塊大小為1024字節(jié),則每個塊能存放114000013200000100012500….20534654052457736491…..23537654010001320000,100.05…….0100012500,203.13…….…….2053465405,511.89…….2353765401,243.00…….2457736491,113.04…….…..64條記錄索引2000013200000100012500….20534614121142大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)22大綱文件與文件系統(tǒng)143文件控制塊(FCB)文件系統(tǒng)為每個文件建立的唯一的管理數(shù)據(jù)結構,一般包括:文件標識和控制信息文件名、用戶名、文件存取權限、訪問控制權限、文件類型等;文件邏輯結構信息記錄類型、記錄個數(shù)、記錄長度、成組因子等;文件物理結構信息文件所在設備名、文件物理結構類型、記錄存放在輔存中的塊號或文件信息首塊盤塊號,文件索引的位置等;文件使用信息共享文件的進程數(shù),文件修改情況,文件最大長度和當前大小文件管理信息文件建立日期,最近修改日期,最近訪問日期等;23文件控制塊(FCB)文件系統(tǒng)為每個文件建立的唯一的管理數(shù)144FCB基于FCB可以方便地實現(xiàn)文件的按名存取創(chuàng)建文件時,為其建立一個FCB,用來記錄文件的屬性信息存取此文件時,先找到其FCB,再找到文件信息盤塊號或首塊物理位置為了加快文件的查找速度,通常將FCB集中起來進行管理,組成文件目錄24FCB基于FCB可以方便地實現(xiàn)文件的按名存取145文件目錄文件目錄包含兩種目錄項:文件的FCB
描述子目錄的目錄文件的FCB全部由目錄項構成的文件稱為目錄文件目錄項的格式按統(tǒng)一標準定義目錄文件至少包含兩個目錄項當前目錄項”.”
父目錄項”..”文件目錄的基本功能將文件名轉換成此文件信息在磁盤上的物理位置有效地組織和管理文件25文件目錄文件目錄包含兩種目錄項:146目錄/fileetcusr
dmr
bin26目錄/tmpetcbindmrwm4foowhodate147文件路徑/file/usr/wm4/.profile
由從根目錄開始沿著目錄結構一直到文件的目錄項和文件名順序組合而成27文件路徑/tmpetcbindmrwm4foowhoda148工作目錄/file默認情況下文件名所處的目錄28工作目錄/tmpetcbindmrwm4foowhoda149相對路徑/file
./.profile
../wm4/.profile
相對于當前工作目錄的路徑
..referstoparentdirectory
.referstocurrentdirectory29相對路徑/tmpetcbindmrwm4foowhoda150目錄結構單級目錄結構兩級目錄結構樹形目錄結構DAG結構圖結構30目錄結構單級目錄結構151單級目錄結構所有用戶都共用一個目錄缺點:名字易于重復用戶沒有獨立的目錄,不利于共享和保護31單級目錄結構所有用戶都共用一個目錄152兩級目錄結構32兩級目錄結構153純樹形目錄結構目錄可以有任意多的層次目錄可以包含子目錄,也可以包含文件每個文件只有一個父目錄文件共享較為困難33純樹形目錄結構目錄可以有任意多的層次154DAG目錄結構一個文件可以有多個父目錄能較方便地實現(xiàn)文件的共享目錄結構的維護較復雜需要為每個文件維護一個引用計數(shù),以記錄文件的父目錄個數(shù),僅當引用計數(shù)值為1時,刪除操作才真正刪除文件34DAG目錄結構一個文件可以有多個父目錄155DAG目錄結構示意圖35DAG目錄結構示意圖156文件共享的實現(xiàn)方式LINUXHardlinkSymboliclinkWindows快捷方式36文件共享的實現(xiàn)方式LINUX157HardLink/bobalicehomebinxxyy當前工作目錄為bob$ln../alice/xxyy37HardLink/bobalicehomebinxxy158SymbolicLink/bobalicehomebinxxyy/home/alice/xx當前工作目錄為bob$ln–s../alice/xxyy38SymbolicLink/bobalicehomebi159任意圖結構目錄可能包含環(huán)查找比較困難39任意圖結構目錄可能包含環(huán)160Linux/Unix的目錄項結構將文件名和文件屬性分離,其它信息單獨組成一個數(shù)據(jù)結構,稱為索引節(jié)點inode,其位置由inode號標識每個文件或子目錄都在父目錄文件中有一條目錄項每個目錄項包含兩個字段
文件名
i-node號:指出存放文件屬性信息的inode節(jié)點號每個磁盤塊可以存放幾十個基本目錄項40Linux/Unix的目錄項結構將文件名和文件屬性分離,161
I-node結構modeownertimestampSizeBlockcountDirectblocks0-9DoubleindirectTripleindirectSingleindirectDatablockDatablockDatablockIndirectblock...DatablockDatablockDatablock...IndirectblockIndirectblockIndirectblock...Referencecount41I-node結構modeownertim162inodeUnix/Linux操作系統(tǒng)對由文件目錄項組成的目錄文件和普通文件同等對待,均存放在磁盤中文件系統(tǒng)中的每個文件都有一個磁盤inode與之對應,這些inode存放在磁盤的inode區(qū)找到文件的inode就能找到文件在物理磁盤中的存放位置42inodeUnix/Linux操作系統(tǒng)對由文件目錄項組成163目錄項、inode和數(shù)據(jù)塊的關系磁盤文件卷inode文件名inodeinode文件名inode磁盤文件0#1#2#……數(shù)據(jù)塊數(shù)據(jù)塊目錄塊…數(shù)據(jù)塊數(shù)據(jù)塊目錄塊引導塊磁盤inode區(qū)磁盤信息區(qū):目錄塊和數(shù)據(jù)塊inode……inode…超級塊43目錄項、inode和數(shù)據(jù)塊的關系磁盤文件卷inode164引導塊位于文件卷最開始的第一扇區(qū),該512字節(jié)是文件系統(tǒng)的引導代碼,為根文件系統(tǒng)所特有,其他文件系統(tǒng)這512字節(jié)為空超級塊位于文件系統(tǒng)第二扇區(qū),緊跟引導塊之后,用于描述本文件系統(tǒng)的結構和管理信息。如inode節(jié)點所占盤塊數(shù)、文件數(shù)據(jù)所占的盤塊數(shù)等磁盤inode區(qū)位于超級塊之后,長度由超級塊中的inode所占盤塊數(shù)決定每個inode用于描述文件屬性中除文件名之外的屬性,包括文件的長度、屬主、物理數(shù)據(jù)塊號等;數(shù)據(jù)塊分為目錄文件數(shù)據(jù)塊和普通文件數(shù)據(jù)塊
目錄文件數(shù)據(jù)塊中存放的是目錄項的集合普通文件數(shù)據(jù)塊存放的是文件數(shù)據(jù)44引導塊165Linux中文件目錄的檢索(a)用戶角度目錄結構usrmyfilxyzhomefei1myfile.cfei3fei2Afei4fei5testfile.cB685.100
..941A270fei1250fei2770fei3270.685..302myfile.c250.685..302myfile.c770.685..345fei4565fei5345
.770..302testfile.c565.770..824B
不同角度的目錄結構(b)系統(tǒng)角度目錄鏈接45Linux中文件目錄的檢索(a)用戶角度目錄結構usrm166大綱文件與文件系統(tǒng)文件目錄的組織方式文件的邏輯組織方式文件的物理組織方式文件空間管理方法文件系統(tǒng)調用的實現(xiàn)46大綱文件與文件系統(tǒng)167文件組織與數(shù)據(jù)存儲邏輯結構從用戶的觀點出發(fā),研究用戶概念中的抽象的信息組織方式用戶可以觀察到的、可加以處理的數(shù)據(jù)集合相關數(shù)據(jù)的集合稱為邏輯文件物理結構邏輯文件在物理存儲空間中的存放方法和組織關系物理文件被看成是相關物理塊的集合主存與物理存儲器進行信息交換的物理單位是塊47文件組織與數(shù)據(jù)存儲邏輯結構168文件的邏輯結構流式文件又稱為無結構文件文件內的數(shù)據(jù)不再分記錄,而是看成字節(jié)流也可以看作是記錄就為1個字節(jié)的記錄式文件大多數(shù)現(xiàn)代操作系統(tǒng)如WINDOWS,UNIX,LINUX只提供流式文件由應用程序自行根據(jù)字節(jié)重構對應用有意義的記錄48文件的邏輯結構流式文件169文件的邏輯結構記錄式文件文件是一組記錄的集合例如職工的工資記錄構成工資文件從操作系統(tǒng)的角度看,邏輯記錄是文件內獨立的最小信息單位,每次總是為使用者存儲、檢索或更新一條邏輯記錄記錄式文件的記錄組織和使用方法記錄式順序文件記錄順序編號,并被順序訪問記錄式索引文件用索引表根據(jù)記錄鍵快速查找到相應的記錄在文件中的位置49文件的邏輯結構記錄式文件170成組與分解邏輯記錄與物理塊之間的對應關系一條邏輯記錄被存放到物理存儲器時,可能會占用一塊或多塊,或者一個物理塊可以包含多條邏輯記錄成組:若干邏輯記錄合并成一組,寫入一塊,每塊中的邏輯記錄的個數(shù)稱為成塊因子分解:從讀進內存緩沖區(qū)的物理塊中分解出邏輯記錄的過程50成組與分解邏輯記錄與物理塊之間的對應關系171記錄成組與分解的處理過程邏輯記錄物理存儲區(qū)邏輯記錄1邏輯記錄2邏輯記錄3邏輯記錄K…物理記錄系統(tǒng)緩沖區(qū)用戶工作區(qū)51記錄成組與分解的處理過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微晶石行業(yè)研究報告
- 工業(yè)互聯(lián)網(wǎng)平臺數(shù)據(jù)加密算法在2025年的高性能加密算法與效能評估報告
- 2025年農村電商農產品上行模式創(chuàng)新驅動與品牌價值提升報告
- 2025年城市地下空間開發(fā)利用可行性及文化遺產保護研究報告
- 2025年歷史文化街區(qū)保護與城市更新社區(qū)共建共享研究報告
- 生態(tài)休閑農業(yè)園項目可行性研究報告-立項書
- 電氣作業(yè)復習測試題
- 2025年工業(yè)互聯(lián)網(wǎng)平臺網(wǎng)絡流量整形技術在工業(yè)控制系統(tǒng)穩(wěn)定性中的應用報告
- 資產證券化AI應用行業(yè)跨境出海項目商業(yè)計劃書
- 高效空氣壓縮機租賃企業(yè)制定與實施新質生產力項目商業(yè)計劃書
- GB/T 1689-1998硫化橡膠耐磨性能的測定(用阿克隆磨耗機)
- 病原微生物實驗室生物安全管理手冊
- 上消化道出血病人的觀察與護理-課件
- 光纜測試報告
- 初中物理教育科學八年級下冊第十一章 機械與功《功》教學設計
- 神經(jīng)病學人衛(wèi)版習題集題庫
- 入網(wǎng)安評基線核查常用檢查項
- (統(tǒng)編版小學語文教師)語文新課標新舊對比變化
- 達希納(尼洛替尼)毒副反應及處理
- 【圖文】SEW變頻器設置參數(shù)說明
- 中班語言活動《傘》
評論
0/150
提交評論