熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

虛擬文件系統(VFS)簡介:基本資料

2013-11-13 15:43:35  來源: Oracle 

  struct list_heads s_list;
  kdev_t s_dev;
  unsigned long s_blocksize;
  unsigned char s_blocksize_bits;
  unsigned char s_rd_only;
  unsigned char s_dirt;
  struct file_system_type *s_type;
  unsigned long s_flags;
  unsigned long s_magic;
  unsigned long s_time;
  struct dentry *s_root;
   
  以上這些字段是我認為super_block結構裡屬於基本資料的部分在這裡我沒有依照原始程序的寫法依序將字段列出來而是將相關的整理在一起s_list這個字段是用來將super block串在一起的在Linux裡同一時間Kernel可能會擁有好幾個檔案系統的super block因此它有它自己一套的super block管理方式平常也許我們會另外寫一個linked list裡面用一個字段存放super block用這種方式把super block串在一起但是Kernel不是這樣做它也是用一個串行來把super block放在一起但是它把它寫到super block結構裡s_list就是用來將super block串起來的用法跟一般人寫法不同在super block的管理我將為各位介紹
  s_dev是此super block所屬檔案系統所在的device代碼檔案系統內部的管理不是用檔案做單位而是以block為存取的單位而s_blocksize就是用來記錄一個block是幾個byte因此如果一個block是 byte的話那s_blocksize為而s_blocksize_bits就是這個字段是指一個block需要幾個bit來表示而s_rd_only從字面上來看應該是記錄檔案系統或super block是否只讀目前這個字段是被設為還沒有被使用至於s_dirt則是記錄此super block的內容是否被改過用來判斷是否最後要將super block寫回disk裡當super block被更動之後s_dirt會被設為s_type的型別是file_system_type這是一種來描述檔案系統的結構在這裡是用來記錄這個super block是屬於那一個檔案系統有關這種型別我們將會在super block的管理中探討當我們使用檔案系統時第一步就是要做mount的動作在mount的時候還需要給它參數像是mount成只讀或可擦寫等這些參數就是記錄在s_flags裡在Linux或UNIX裡magic number通常是用來做識別用的而檔案系統的magic number就是設在s_magic字段裡像目前Ext的magic number就是xEF從檔案系統的super block我們可以讀取到這個檔案系統任一個檔案但是前提是我們必須要先知道這個檔案系統的根目錄在那裡才可以就像給我們一個絕對路徑我們可以找到那個檔案但是找的方式是先從根目錄再往下層去找因此super block必須記錄它所代表的檔案系統根目錄在那裡這就記錄在s_root裡
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/17200.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.