天天看點

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

     诶..朋友們好啊,我是圖南線上零壹考研打勞工--學長K,剛才有個朋友問我,自己的研友啪就學會了檔案系統,很快啊,這是發生甚麼事了?我說怎麼回事,給我發了幾張截圖。我一看!嗷~原來昨天,有兩個年輕人,二十出頭,做模拟題,一個考了八十多分,一個沒及格。塔姆說,诶......有一個說是我看參考書把檔案系統學廢了,學長K你能不能教我複習功法,诶......幫助學習一下檔案系統。我說,可以。我說你在圖書館死學,不頂用,他不服氣。诶...我說小同志,你關注圖南線上找一篇《十分鐘徹底搞懂檔案系統》看一看。他說你這也沒用。我說我這個有用,這是化勁兒,考研複習是講化勁兒的,四兩撥千金。他打開手機把文章看完,啪就站起來了,很快啊!然後上來就做了一道題,然後一道選擇題,一道簡答題,全部做對了。他說他是亂做的,他可不是亂做的啊,看了零壹考研的《十分鐘徹底搞懂檔案系統》,那就是有備而來......

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

     檔案系統是作業系統中重要的子系統,是計算機考研作業系統部分的重要考點,同時也是大家普遍反映比較難的一個章節。市面上流行的參考書往往着重對程序管理、記憶體管理的講解,而對檔案系統的講解往往顯得雜亂無章、内容混亂。我們将通過這篇文章來幫助大家梳理和了解這部分的内容。

01

檔案與檔案系統

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

      計算機中的“檔案”的概念,相信大家都很熟悉,一篇doc文檔,一張jpg圖檔,一個c代碼檔案......都可以作為一個檔案。

檔案有什麼用

 計算機中的檔案主要用來解決一個問題:長期存儲資訊。

      所謂長期存儲資訊是相對于在程序的位址空間中儲存資訊而言的,兩種方式的對比如下:

在程序的位址空間中儲存資訊 使用檔案存儲資訊     
由于自身虛拟位址空間的限制,存儲容量較小 可以存儲在大容量媒體中,存儲容量大
程序終止時(正常終止或意外消亡),儲存的資訊随之消失 獨立于程序之外,程序終止後資訊依然存在
儲存的資訊僅屬于一個程序 可以實作多個程序并發通路其内容

ps:考研中檔案系統部分的存儲媒體除特别說明一般預設是磁盤。磁盤由于其長期存儲的性質,是最常見的一種檔案存儲的媒體,是以磁盤管理通常作為檔案系統的一個子内容出現在我們的教科書和參考書中,磁盤管理與磁盤排程也是計算機考研作業系統部分的重要考點。(近年來,固态硬碟(SSD)逐漸流行以來,它相對于傳統磁盤讀寫速度更快、功耗更低,也成為一種常見的檔案存儲的媒體,這部分針對考研,我們隻需知道:固态硬碟由Flash晶片組成,而Flash本身屬于隻讀存儲器(ROM)的一種。)

      這個對比有助于我們了解檔案的本質:

檔案的本質

檔案是一種抽象機制,它提供了一種在存儲媒體(一般是磁盤)上儲存資訊而且友善以後讀取的方法。

      不要小看這句話,檔案系統整個章節的内容都是圍繞這句話來展開的,即如何在存儲媒體上儲存資訊,如何讀取資訊。

      正是為了實作這種抽象機制,作業系統劃分出了一塊子系統,就是檔案系統。

檔案系統主要需要解決什麼問題

無論是向檔案寫入資訊還是從檔案讀取資訊,首先要找到檔案在哪,這就需要目錄系統

檔案目錄中存放什麼呢,首先是檔案的名字和位置,另外還應當有檔案的其他控制資訊,這就需要定義檔案屬性。

找到檔案後,我們可以對檔案進行哪些操作呢?這就需要我們定義基本的檔案操作。

如何從檔案中尋找資訊?這就需要定義檔案結構(檔案的邏輯結構)。

    上面我們主要考慮的是一位使用者對檔案的操作,那麼多位使用者呢?

多個使用者在同一個項目裡工作,他們常常需要共享檔案,即對同一個檔案進行操作,如何實作讓一個共享檔案同時出現在屬于不同使用者的不同目錄下?這就需要提供檔案共享的方法。

為了防止檔案共享導緻的檔案被破壞或未經核準的使用者修改檔案,檔案系統必須控制使用者對檔案的存取通路,這就需要檔案保護。

      以上介紹的是邏輯層面的檔案系統,這還遠遠不夠,我們要在實體層面實作它:

檔案是怎樣存儲在存儲媒體上的,即如何給各個檔案配置設定磁盤塊,這就需要解決檔案實作(或檔案配置設定,檔案的實體結構)的問題。目錄作為一種特殊的檔案,當然也要解決目錄的實作。

一些磁盤塊被配置設定給了一些檔案,剩餘的空閑磁盤塊如何管理,已經配置設定出去的磁盤塊如何回收,這就涉及到了檔案存儲空間管理(即磁盤空間管理)。

      理清了這些問題,我們就自然而然地把握住了本章内容的一個知識脈絡。文章接下的内容,我們也将基本按上面的思路來展開,不過順序有所調整:

檔案屬性

目錄系統(包括目錄的實作)

檔案操作

檔案結構(檔案的邏輯結構)

檔案共享

檔案保護

檔案實作(檔案配置設定)(檔案的實體結構)

檔案存儲空間管理(磁盤空間管理)

02

檔案屬性

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

      檔案屬性與具體的作業系統有關,我們隻需知道檔案的一些必須的重要屬性:

1)檔案名:檔案的名稱,在同一目錄下要求唯一。

2)檔案的邏輯結構和實體結構的相關資訊:如檔案的實體位址、大小。

3)檔案的存取控制資訊:如檔案存取權限。

4)檔案的使用資訊:如檔案建立、上次修改、上次通路的時間和使用者資訊。

......

      其中檔案名和檔案的實體位址是實作檔案“按名存取”的關鍵。

03

目錄系統

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

目錄與目錄項:

類似于程序控制中的程序控制塊(PCB),我們把上面介紹的檔案屬性也打包為一個資料結構,這就是檔案控制塊(FCB),使得每個檔案都對應一個自己的FCB,并把它作為檔案目錄的目錄項。

      如圖(為了友善說明,我們把檔案名從檔案屬性中拆分出來,下同):

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

ps:目錄本身也是一個檔案。

ps:所有檔案的屬性資訊都儲存在目錄檔案中,且目錄檔案儲存在外存,檔案的屬性資訊在需要時才調入記憶體。

目錄的實作:

      目錄系統的核心功能,就是實作“按名存取”,即ASCII檔案名到檔案實體位址的映射,作業系統利用使用者提供的檔案路徑名好到相應的目錄項,目錄項中提供了查找檔案磁盤塊所需的資訊。

      當然除了檔案的實體位址,我們也需要從目錄項中獲得檔案的其他屬性資訊。

      這就引出了一個問題,在哪裡存放包括檔案實體位址在内的檔案屬性?

事實上,在檢索目錄檔案的過程中,我們隻用到了檔案名。隻有當我們找到我們需要的目錄項時,才需要從該目錄項讀取該檔案的實體位址以及其他屬性。

也就是說,在檢索目錄時,檔案名以外的其他檔案屬性資訊不會用到,也不需要調入記憶體。于是我們便可以把檔案名和檔案的其他屬性分開,使得檔案的其他屬性資訊單獨形成一個稱為索引結點的資料結構。這樣,每個目錄項僅由檔案名和索引結點編号(也叫檔案号)構成,而檔案屬性被放在索引結點裡。

      如圖:

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

ps:作業系統會在存儲檔案的外村空間中劃分出一個固定區域,用于連續存放所有檔案的FCB主部(索引結點)。将其依次編号就是檔案号(即索引結點編号)

      這樣做的好處在于:縮短了目錄項的長度 ,在一個磁盤的盤塊中可以存放更多的目錄項,這就可以減少查找檔案時的平均啟動磁盤次數,進而節省系統開銷。

ps:從目錄中查找檔案名最簡單的方法就是線性查找,也可以通過散清單、高速緩存來提高查找速度,後兩者考研隻需了解即可。

目錄結構:

一級目錄系統:在一個目錄(根目錄)中包含所有檔案,在早期的個人計算機中比較普遍,現在主要存在于一些簡單的嵌入式裝置中。

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

層次目錄系統:單層目錄并不能勝任複雜檔案系統,我們把檔案目錄按樹形結構來安排,就形成了層次目錄系統。這裡需要掌握兩個概念:

絕對路徑:從根目錄出發定位檔案形成的路徑,如:“/使用者B/使用者子目錄B1/檔案2”

相對路徑:從目前目錄出發定位檔案形成的路徑,如使用者C目前處于使用者子目錄C1,“./使用者子目錄C11/檔案5”就是一個相對路徑。

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

ps:檔案共享會導緻目錄結構成為一個有向無環圖而不是一棵樹,我們将在檔案共享的部分來說明這個問題。

04

檔案操作

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

檔案的基本操作

      定位到檔案以後我們就可以對檔案進行我們需要的操作。對于檔案的操作不同的作業系統提供了不同的系統調用,對于考研,我們隻需了解以下操作:

定位到檔案以後我們就可以對檔案進行我們需要的操作。對于檔案的操作不同的作業系統提供了不同的系統調用,對于考研,我們隻需了解以下操作:

create:建立檔案,為新檔案配置設定存儲空間并在目錄中為新檔案建立目錄項。

delete:删除檔案,釋放磁盤空間。

open:打開檔案,後面詳細介紹。

close:關閉檔案,後面詳細介紹。

read:讀檔案,從檔案的目前位置讀取資料,調用者需要指明讀取多少資料,并提供存放這些資料的緩存區。

write:寫檔案,向檔案的目前位置寫入資料。

seek:指定從何處擷取資料,調用結束後就可以從該位置開始讀寫資料了。

      以上這些操作中,打開檔案經常出現在計算機考研的選擇題中,需要重點掌握。

open(打開檔案)

      在使用檔案之前,必須先打開檔案。open調用的目的概括來說是把檔案屬性裝入記憶體便于後續調用的快速通路。

打開檔案步驟:

1)根據檔案路徑名查檔案目錄找到FCB主部(即索引結點)。

2)根據打開方式、共享說明和使用者身份檢查通路的合法性。

3)根據檔案号(即索引結點号)查找系統打開檔案表看該檔案是否已經被打開,如是則共享計數值加1,否則取一個空閑的系統打開檔案表項并将外存儲器中FCB主部等資訊填入此表項,共享計數值置1。

4)在使用者打開檔案表中取一空表項,填寫打開方式等,并指向系統打開檔案表的對應表項。

      這裡我們提到了兩種表:系統打開檔案表、使用者打開檔案表。下面我們将對這兩種表進行一個簡單的介紹:

1、系統打開檔案表

FCB中儲存着系統對檔案進行管理所需要的一切資訊,這些資訊作為目錄項将長期駐留于外存空間。當一個檔案被打開使用時,其FCB的資訊會被經常通路。如果每次通路FCB都去讀寫外存儲器,則速度會大大降低。為解決這一問題,在記憶體中設立一個表,用來儲存已打開檔案的FCB。

      系統打開檔案表由作業系統管理,使用者程式不能通路它。該表的長度決定了系統中可以同時打開的檔案的最大數目。

      系統打開檔案表的示意圖如下:

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

說明:

FCB主部:即記憶體索引結點,裡面有包括檔案實體位址在内的檔案屬性。

檔案号(索引結點号):之前講過,用于得到該檔案FCB主部在外存儲器中的位置。

共享計數:用于記錄目前有多少個程序使用該檔案,每個close(關閉檔案)操作會使此值減1。

修改标志:用于辨別謀檔案的FCB在寫入記憶體期間是否被修改過,當最後一個使用該檔案的程序關閉該檔案時,如果FCB被修改過則要把改動寫回外存。

2、使用者打開檔案表

由于檔案是可以共享的,多個程序可能會同時打開同一檔案,而其打開方式可能是不同的,目前的讀寫位置通常也是不一樣的。這些資訊被記錄在另一個表中,該表稱為使用者打開檔案表,每個程序都有屬于自己的一個。

      使用者打開檔案表:

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

檔案描述符(fd):就是一個序号,是一個隐含的正整數,使用者打開檔案表中其實并沒有這一項。當檔案被打開後,傳回給程序,之後程序便可使用fd存取該檔案,而不使用檔案名稱。(選擇題常考)

打開方式:程序對該檔案執行什麼操作。

讀寫指針:對檔案讀寫的目前位置。

系統打開檔案表入口:一個指針,或一個編号,使用者程序可以通過它可以定位該檔案的FCB在系統打開檔案表中的位置。

3、兩種表的關系

      系統打開檔案表和使用者打開檔案表的關系我們可以通過下圖來說明:

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

      至此我們就把檔案屬性、目錄系統、檔案操作的内容梳理完畢了。後續部分我們将在下一篇文章中展開。

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...
web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

掃碼加入QQ群

你可以加入圖南考研的QQ群,群号:862505791,

在這裡你可以提出你的任何問題。

同時歡迎你關注我們的公衆号:

web.config檔案通路實體路徑_十分鐘徹底搞懂檔案系統?考研複習是講化勁兒的(上篇)...

往期文章連結:

圖南線上-零壹考研,隻做最專業的計算機考研平台

浙大計院軟院工院,學院太多傻傻分不清?我該選擇哪一個?

考研倒計時50天,你準備好了嗎?

考研or工作,你還在糾結麼?

985直博生退學 零基礎跨考浙大計算機

我是如何做到從零基礎到408計算機考研狀元的?

圖文編輯:學長K

責任編輯:學長K