4.文件系統(tǒng)

文件系統(tǒng)作用:

  • 能夠存儲大量信息
  • 使用信息的進(jìn)程終止時桐玻,信息仍然存在
  • 必須能使多個進(jìn)程并發(fā)存取有關(guān)信息

文件

文件一種抽象機(jī)制篙挽,提供了一種在磁盤上保留信息而且以后方便讀取的方法。

  • 文件命名

    • 文件具體的命名規(guī)則在各個系統(tǒng)中是不同的镊靴,不過所有的現(xiàn)代操作系統(tǒng)都允許用1至8個字母組成的字符串作為合法文件名铣卡。通常文件名中也允許有數(shù)字和一些特殊字符链韭。許多文件系統(tǒng)支持長達(dá)255個字符的文件名。

    • 有的文件系統(tǒng)區(qū)分文件名大小寫煮落,有的不區(qū)分敞峭。UNIX是前一類,MS-DOS是后一類蝉仇。

    • 文件擴(kuò)展名用于表示文件的某些信息旋讹。在某些操作系統(tǒng)(如UNIX)只是有一種約定,不限制使用轿衔;在某些操作系統(tǒng)(如windows)則賦予擴(kuò)展名含義沉迹,可以在操作系統(tǒng)中注冊擴(kuò)展名。

  • 文件結(jié)構(gòu)

    • 字節(jié)序列

      • 操作系統(tǒng)所見的就是字節(jié)害驹,任何含義只在用戶程序中解釋鞭呕。
      • Unix和Winodws都是用這種方式。
    • 記錄序列

      • 約定固定字節(jié)為一記錄
      • 讀寫以記錄為單位
      • 現(xiàn)在已不使用
      • 類似B樹


        image
  • 文件類型

    • 塊特殊文件
      • 用于磁盤設(shè)備
    • 字符特殊文件
      • 用于串行I/O設(shè)備宛官,如打印機(jī)葫松,網(wǎng)絡(luò)等等
    • 目錄
      • 用于管理文件系統(tǒng)結(jié)構(gòu)的系統(tǒng)文件
    • 普通文件
      • ASCII文件
        • 由多行正文組成
        • 每行由回車符或換行符結(jié)束(取決于操作系統(tǒng))
        • 優(yōu)勢:可以顯示和打印
        • 使用公認(rèn)的標(biāo)準(zhǔn)(ASCII碼),可以更易于實現(xiàn)進(jìn)程間通信
      • 二進(jìn)制文件
        • 單純的二進(jìn)制序列
        • 內(nèi)部結(jié)構(gòu)由使用該文件的用戶程序來解釋
        • 例子如下:
image
  • 文件存取

    • 順序存取
      • 從頭開始按順序讀取文件的全部字節(jié)
    • 隨機(jī)存取
      • 用seek操作設(shè)定當(dāng)前位置后在進(jìn)行順序讀取底洗。
  • 文件屬性


    image

目錄

  • 層次目錄系統(tǒng)

    • 幾乎所有現(xiàn)代文件系統(tǒng)都是用這個方式組織的


      image
  • 路徑名

    • 絕對路徑
      • 以分割符開頭
    • 相對路徑
      • 從工作目錄開始
      • "."代表當(dāng)前目錄腋么,".."代表父目錄。


        image

文件系統(tǒng)實現(xiàn)

  • 文件系統(tǒng)布局
    • 文件系統(tǒng)存在于磁盤枷恕。磁盤劃分為一個或多個分區(qū)党晋,每個分區(qū)都有一個獨立的文件系統(tǒng)。

    • 磁盤的0號扇區(qū)是主引導(dǎo)記錄(Master Boot Record徐块,MBR)未玻;MBR之后是分區(qū)表,記錄每個分區(qū)的起始和結(jié)束地址胡控。

    • 在計算機(jī)被引導(dǎo)的時候

      • BIOS讀入并執(zhí)行MBR扳剿。
      • MBR做的第一件事是確定活動分區(qū),讀入它的第一個塊昼激,叫做引導(dǎo)塊(boot block)庇绽,并執(zhí)行之。
      • 引導(dǎo)塊中的程序?qū)⒀b載該分區(qū)中的操作系統(tǒng)橙困。
      • 為了統(tǒng)一起見瞧掺,所有分區(qū)的開始都是引導(dǎo)塊,即使沒有操作系統(tǒng)凡傅。
image

文件的實現(xiàn)

記錄各個文件分別用到了哪些磁盤塊

  • 連續(xù)分配
    • 把文件作為連續(xù)的數(shù)據(jù)塊記錄在磁盤上

    • 優(yōu)點:實現(xiàn)簡單辟狈,只需記錄文件的磁盤地址和文件的塊數(shù);讀操作性能好,因為數(shù)據(jù)塊連續(xù)分配哼转,只有一次尋道和旋轉(zhuǎn)延遲明未。

    • 缺點:易產(chǎn)生磁盤碎片。
      解決方法:

      • 磁盤壓縮壹蔓;代價太大
      • 維護(hù)一個空閑塊鏈表趟妥;需要知道文件的最終大小
        image
  • 鏈表分配

    • 使用鏈表記錄磁盤塊

    • 優(yōu)點:可以充分利用磁盤塊,不會產(chǎn)生磁盤碎片

    • 缺點:隨機(jī)讀取慢,需要遍歷整個鏈表


      image
  • 內(nèi)存中采用鏈表分配

    • 將鏈表的指針取出來佣蓉,組成一個數(shù)組(文件分配表披摄,F(xiàn)AT),放在內(nèi)存偏螺。

    • 優(yōu)點:遍歷鏈表無需產(chǎn)生磁盤I/O行疏,隨機(jī)讀取更快。

    • 缺點:表放在內(nèi)存,占用太多空間朝墩,不適合大磁盤嫂伞。


      image)F.png
  • i節(jié)點

    • 給每個文件分配一個i節(jié)點,其中列出了文件屬性和文件塊的磁盤地址板熊。

    • 只有對應(yīng)文件打開,i節(jié)點才在內(nèi)存。

    • FAT大小取決于磁盤塊的數(shù)量柳譬,而i節(jié)點的大小僅僅取決于文件所占磁盤塊的數(shù)量,所以占內(nèi)存大小大大減小了续镇。


      image

目錄的實現(xiàn)

  • 打開文件時美澳,操作系統(tǒng)根據(jù)用戶給出的路徑名找到相應(yīng)的目錄項,目錄項提供了查找文件磁盤塊所需要的信息摸航。
    該信息可能是整個文件的磁盤地址制跟,或i節(jié)點。
    如下圖:


    image
  • 現(xiàn)代操作系統(tǒng)大多支持可變的可變長度的長文件名酱虎,實現(xiàn)方法有下面三種:

    • 最簡單的固定一個255字節(jié)的文件名雨膨,很浪費空間不考慮。
    • 保存每個文件名的長度读串。如下圖a
    • 在堆中存儲文件名聊记,目錄項保留指向文件名的指針。如下圖b


      image
  • 查找文件名

    • 使用散列表
      • 查找速度快
      • 需要維護(hù)散列表恢暖,管理復(fù)雜排监,所以只有在文件數(shù)量大的目錄項才使用
    • 使用高速緩存
      • 只有訪問集中在少量的文件才有效。

共享文件

  • 硬鏈接

    • 目錄指向i節(jié)點,并計數(shù)

    • 只有當(dāng)計數(shù)被置為0的時候杰捂,才真正被刪除舆床。

  • 軟連接(符號連接)

    • 創(chuàng)建一個類型為LINK的文件,并把該文件放在B下琼娘。
      • 里面存儲了實際的 連接文件位置
    • 訪問文件峭弟,需要額外的開銷
image

日志文件結(jié)構(gòu)系統(tǒng)

  • 因為高速緩存的存在附鸽,對磁盤的讀操作比較少,寫操作比較多瞒瘸。
  • 磁盤的寫操作耗時大坷备,存在尋道和旋轉(zhuǎn)延遲。
  • 對磁盤的寫操作大多是零散的情臭。

由于上面的三個原因省撑,發(fā)展出了日志文件結(jié)構(gòu)系統(tǒng),將零散的寫操作記錄在日志中俯在,每隔一段時間再統(tǒng)一進(jìn)行磁盤寫操作竟秫,節(jié)省尋道和旋轉(zhuǎn)延遲。

日志文件系統(tǒng)

  • 將磁盤操作寫入日志中跷乐,當(dāng)系統(tǒng)崩潰再啟動時肥败,根據(jù)日志運行所有未完成的操作。
  • 寫入磁盤的操作必須是冪等的愕提,即無論重復(fù)多少次馒稍,結(jié)果都不會變。

虛擬文件系統(tǒng)

  • 使用虛擬文件系統(tǒng)(VFS)將多個文件系統(tǒng)整合到一起浅侨。
  • 只要一個文件系統(tǒng)提供了VFS的功能調(diào)用接口纽谒,就可以整合到VFS。
image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末如输,一起剝皮案震驚了整個濱河市鼓黔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌不见,老刑警劉巖澳化,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脖祈,居然都是意外死亡肆捕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門盖高,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慎陵,“玉大人,你說我怎么就攤上這事喻奥∠Γ” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵撞蚕,是天一觀的道長润梯。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么纺铭? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任寇钉,我火速辦了婚禮,結(jié)果婚禮上舶赔,老公的妹妹穿的比我還像新娘扫倡。我一直安慰自己,他們只是感情好竟纳,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布撵溃。 她就那樣靜靜地躺著,像睡著了一般锥累。 火紅的嫁衣襯著肌膚如雪缘挑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天桶略,我揣著相機(jī)與錄音语淘,去河邊找鬼。 笑死删性,一個胖子當(dāng)著我的面吹牛亏娜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹬挺,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼它掂!你這毒婦竟也來了巴帮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤虐秋,失蹤者是張志新(化名)和其女友劉穎榕茧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體客给,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡用押,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靶剑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜻拨。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桩引,靈堂內(nèi)的尸體忽然破棺而出缎讼,到底是詐尸還是另有隱情,我是刑警寧澤坑匠,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布血崭,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏夹纫。R本人自食惡果不足惜咽瓷,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舰讹。 院中可真熱鬧忱详,春花似錦、人聲如沸跺涤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桶错。三九已至航唆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間院刁,已是汗流浹背糯钙。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留退腥,地道東北人任岸。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像狡刘,于是被迫代替她去往敵國和親享潜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容