999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Linux虛擬文件系統對物理文件的管理

2011-06-22 08:19:48侯旗陳慈發艾偉
單片機與嵌入式系統應用 2011年12期
關鍵詞:進程物理結構

侯旗,陳慈發,艾偉

(三峽大學,宜昌443002)

引 言

隨著嵌入式技術的發展,越來越多的嵌入式設備采用Linux作為其操作系統。Linux支持各種物理文件系統,而不同物理文件系統具有不同的組織結構和不同的處理方式。為了兼容支持不同的文件系統,Linux設計了在系統啟動時由系統在內存創建的文件系統,即虛擬文件系統(Virtual File System,VFS)。該文件系統對不同的物理文件系統的所有特性進行抽象,屏蔽各種文件系統的差別,向Linux內核和進程提供了一個處理各種物理文件系統的公共接口,從而實現了對不同文件系統的支持。而且,Linux系統把一切的設備也當作文件來處理。理解Linux虛擬文件系統機制對于學習Linux運行原理起著重要的作用。本文對Linux虛擬文件系統原理進行了較為詳盡的分析。

1 Linux VFS基本原理

Linux以EXT2作為基本的文件系統,組成虛擬文件系統的超級塊、索引節點、目錄項等數據結構,兼容于各種文件系統的相應數據結構,從而實現了對多種文件系統的透明調用。

1.1 Linux所支持的文件系統的一般結構

Linux繼承了Uinx,把文件名和文件控制信息分開管理。一個Linux所支持的物理文件系統使用的塊設備上的一個獨立邏輯分區可大致分為:引導塊、超級塊、inode塊、data塊4部分[1]。超級塊是描述文件系統整體信息的數據結構,在系統運行期間被讀入內存,在內存中建立一個超級塊的映像。Linux所支持的文件系統的一般結構如圖1所示。

圖1 Linux所支持的文件系統的一般結構

1.2 VFS對物理文件系統的管理

Linux VFS采用超級塊(super_block)和索引節點(inode)來描述文件系統。這里的super_block和inode不同于物理文件系統中的super_block和inode數據結構,VFS super_block是VFS把不同文件系統中的整體組織和結構信息進行抽象后形成的,兼顧不同文件系統的統一的超級塊結構。在安裝文件系統時,由系統在內存中建立,其內容主要由文件系統的超級塊數據來填充。inode則是在系統打開文件時,由系統在內存動態建立,其內容主要由文件系統的inode節點的數據來填充。

Linux VFS除了沒有存儲文件內容的data塊外,文件系統的結構與物理文件系統基本相似,如圖2所示。

圖2 Linux VFS文件系統結構

Linux進程通過VFS中相應的超級塊和索引節點中的信息,準確地訪問操作目的磁盤文件系統中的相應文件。

2 Linux VFS的實現

為了區分文件系統中的inode,這里把VFS中的inode稱為vnode。

Linux系統支持文件系統目錄樹機制,根據路徑名,如/home/xyz/work/test.c,就 可 以 在 磁 盤 上 找 到 文 件test.c的目錄項和索引節點。在路徑/home/xyz/work/test.c中,目錄/、home、xyz、work以及普通文件test.c都對應一個目錄項對象。目錄項在磁盤文件系統中的數據結構是dir_entry,VFS在遍歷路徑名的過程中將其解析成內存目錄項對象(dentry對象)和vnode對象。

vnode與某個文件的對應關系是通過設備號i_dev與inode號i_ino建立的,它們唯一地指定了某個設備上的一個文件或目錄。vnode是設備上的文件或目錄的inode在內存中的統一對應結構,并且給出了不同文件系統特有的信息,即各種文件系統的inode在內存中的映像。

如前所述,Linux繼承了Uinx,把文件名和文件控制信息分開管理,由目錄項(dir_entry)管理文件名,索引節點(inode)管理文件控制信息,并且通過dir_entry結構中的d_inode域指向文件的inode節點,建立與文件索引節點的聯系。文件的索引節點(inode)結構體包含了關于文件的組織信息和管理信息,根據其中的i_info查找存儲文件內容的數據塊,根據i_op指向的inode_operations結構,通過其中的指針函數調用各自的inode操作函數。

系統進程使用文件由表示進程當前打開的所有文件的數據結構files_struct建立進程與文件系統的關系。指針fd和fd_array都指向代表打開文件對象數組。進程調用文件操作函數,依據文件路徑打開文件,文件操作函數返回一整數,即文件描述符,例如int open(const char*pathname,int flages)[2]。之后,進程便用文件描述符來表示一個打開的文件,該整數文件描述符就是files_struct中file數組fd的下標。

圖3描述了進程使用文件時用到的VFS中主要數據結構的關系。

圖3 VFS中主要數據結構關系圖

dentry結構描述的是邏輯意義上的文件,記錄的是其邏輯上的屬性。只要是有效的dentry結構,則其指針d_inode必定指向一個inode結構。而inode結構所代表的是物理意義上的文件,記錄的是其物理上的屬性。一個inode結構可能對應著不只一個dentry結構,因為一個物理意義上的文件可以被鏈接(link)其他路徑名。

所以,在inode結構中有個隊列i_dentry,凡是代表著這個文件的所有目錄項(普通文件也是目錄文件的一種)都是通過dentry結構中的d_alias掛入相應的inode結構中的i_dentry隊列。

結 語

本文主要從數據結構的角度出發,對Linux虛擬文件系統的實現技術作了簡要的分析。Linux系統把一切設備都作為文件看待,深入探究Linux虛擬文件系統的文件組織方式,可以為系統軟件設計和嵌入式Linux驅動開發提供一定參考價值。

[1]毛德操.Linux內核源代碼情景分析(上)[M].杭州:浙江大學出版社,2009:428-430.

[2]韓超,魏治宇,寥文江.嵌入式linux上的C語言編程實踐[M].北京:電子工業出版社,2009:163-164.

猜你喜歡
進程物理結構
只因是物理
井岡教育(2022年2期)2022-10-14 03:11:44
《形而上學》△卷的結構和位置
哲學評論(2021年2期)2021-08-22 01:53:34
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
處處留心皆物理
論結構
中華詩詞(2019年7期)2019-11-25 01:43:04
三腳插頭上的物理知識
論《日出》的結構
我不是教物理的
中學生(2015年2期)2015-03-01 03:43:33
創新治理結構促進中小企業持續成長
現代企業(2015年9期)2015-02-28 18:56:50
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 天天躁日日躁狠狠躁中文字幕| 福利一区三区| 国产超碰在线观看| 国产精品偷伦在线观看| 中文字幕在线日韩91| 亚洲最黄视频| 国产成人三级| 青青网在线国产| 青青青视频91在线 | 国产午夜一级淫片| 亚洲午夜国产片在线观看| a级毛片免费播放| 精品国产91爱| 国产91线观看| 日韩专区欧美| 国产玖玖视频| 色婷婷在线播放| 欧美亚洲日韩中文| 综合色天天| 美女毛片在线| 国产美女精品在线| 国产成人综合在线视频| 亚洲动漫h| 中文精品久久久久国产网址| 黄色网站不卡无码| 999精品色在线观看| 欧美亚洲国产日韩电影在线| 漂亮人妻被中出中文字幕久久| 亚洲性日韩精品一区二区| 波多野结衣视频一区二区 | 亚洲成aⅴ人在线观看| 国产微拍一区二区三区四区| 麻豆精品国产自产在线| 国产无人区一区二区三区| 日本在线免费网站| 国产精品精品视频| 国产在线专区| 亚洲欧美激情另类| 干中文字幕| 婷婷五月在线| 国产精品永久不卡免费视频| 国产后式a一视频| 中文字幕1区2区| 精品视频一区二区观看| 91免费观看视频| 久无码久无码av无码| 亚洲一级色| 久久福利片| 亚洲va视频| 亚洲色图欧美| 日本www在线视频| 欧美视频在线播放观看免费福利资源| 久久这里只有精品2| 亚洲综合色婷婷| 日韩在线影院| 国产精品 欧美激情 在线播放 | 欧美黄网站免费观看| 99视频在线精品免费观看6| 久久精品国产亚洲麻豆| 亚洲制服丝袜第一页| 亚洲精品国产综合99久久夜夜嗨| 久久99精品久久久久纯品| 91视频区| 美女国产在线| 欧美三级视频在线播放| 婷婷成人综合| 日韩精品欧美国产在线| 四虎影视库国产精品一区| 欧美午夜在线播放| 国产成人高清在线精品| 久久精品国产精品一区二区| 国产精品自在拍首页视频8 | 亚洲精品午夜无码电影网| 国产高清在线观看91精品| 午夜日韩久久影院| 久久综合亚洲鲁鲁九月天| 啪啪啪亚洲无码| 亚洲欧美另类视频| 国产va在线| 国禁国产you女视频网站| 国产美女免费网站| 亚洲av无码久久无遮挡|