檔案描述符、檔案表項、V節點表項的一些總結

來源:互聯網
上載者:User

         看書的時候對這三樣東西把握得不太清楚,嗯,所以寫篇blog來總結一下。

 

 

       檔案描述符(進程層級):

       1)、在每個進程表中都有一個記錄項,記錄項中包含有一張開啟檔案描述符表,可將其視察為一個向量(數組),每個描述符佔用一項。與每個檔案描述符相關聯的是:

       (a)、檔案描述符標誌。

       (b)、指向一個檔案表項的指標。(不同的檔案描述符可以指向同一個檔案表項,例如用dup函數複製檔案描述符,得到一個新的檔案描述符,但是它們指向同一個檔案表項,因此它們也指向同一個V節點表。)

 

 

    檔案表項(全域層級,所有進程共用?自己YY的)

        2)、核心為所有開啟的檔案維持一張檔案表(同一個檔案可以被開啟多次,所以同一個檔案可以在檔案表中佔有多項)。每個檔案表項包含:

       (a)、檔案狀態標誌(讀、寫、添寫、同步和非阻塞等)

       (b)、當前檔案位移量(不同的檔案表項的V節點指向可以指向同個V節點表,也就是指向同一個真實的物理檔案。因為一個檔案表項裡包含當前檔案位移量,所以不同的檔案表項看到同一檔案的位移量可以不同,這種安排可以使每個進程都有它自己的對該檔案的當前位移量。)

       (c)、指向該檔案的V節點表項的指標。

 

          

           V節點表項(全域層級?所有進程共用?自己YY的)

        (3)、每個開啟檔案(或裝置)都有一個V節點結構。V節點包含了檔案類型和對此檔案進行各種操作的函數的指標。對於大多數檔案,V節點還包含了該檔案的I節點。

 

 

------------------------------------------------分割---------------------------------------------------------------------

 

 

再稍微總結一下它們各自的對應關係:

一個檔案描述符對應一個檔案表項,而一個檔案表項又對應一個V節點表項。不同的檔案描述符可以指向同一個檔案表項(可以通過dup複製檔案描述符等方式),從而指向同一個V節點表項。與此相似,不同的檔案表項也可以指向同一個V節點表項。例如fd1 = open(pathname,...),fd2 = open(pathname....),因為它們各自開啟了自己看到的檔案,雖然是同一個檔案,但是還是它們擁有不同的檔案描述符,指向不同的檔案表項(前面說過的,核心為所有開啟的檔案維持一張檔案表(同一個檔案可以被開啟多次,所以同一個檔案可以在檔案表中佔有多項))。不過,因為是同一個檔案,所以它們的檔案表項裡的V節點指標指向的是同一個V節點表項。

 

 

再簡單些總結就是;檔案描述符與檔案表對應關係就是:一對一,或者多對一。而檔案表項與V節點表項的關係就是:

一對一,或者多對一。

 

 

PS:以上部分抄於《Unix環境進階編程》,部分屬於自己YY,YY的那部分完全沒有驗證其正確性。所以如果有錯,請前輩們、朋友們指出~~~謝謝

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.