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
主站蜘蛛池模板: 77777亚洲午夜久久多人| 久久黄色一级片| 亚洲婷婷六月| 亚洲av成人无码网站在线观看| 黑人巨大精品欧美一区二区区| 成人午夜福利视频| 色天堂无毒不卡| 色综合五月| аⅴ资源中文在线天堂| 久久人搡人人玩人妻精品一| 午夜国产精品视频| AV天堂资源福利在线观看| 国产毛片不卡| 91小视频在线观看| 一区二区日韩国产精久久| 亚洲中字无码AV电影在线观看| 五月综合色婷婷| 先锋资源久久| 国产女人综合久久精品视| 99热最新网址| 国产菊爆视频在线观看| 少妇精品网站| 日韩免费中文字幕| 欧美中文字幕在线播放| 亚洲欧美另类专区| 91久久偷偷做嫩草影院精品| 97视频免费在线观看| 美女无遮挡拍拍拍免费视频| 亚洲视频四区| 男女猛烈无遮挡午夜视频| 国产丝袜91| 色偷偷一区二区三区| 国产精品免费福利久久播放| 综合色亚洲| 日韩国产一区二区三区无码| 亚洲中文字幕久久精品无码一区 | 国产日韩欧美成人| 69av在线| 成人综合在线观看| 日本午夜网站| 老司机久久99久久精品播放| 美女高潮全身流白浆福利区| 亚洲第一区在线| 视频在线观看一区二区| 一本大道香蕉久中文在线播放| 午夜日本永久乱码免费播放片| 亚洲天堂免费| 日本欧美午夜| 亚洲午夜天堂| 亚洲第一国产综合| 最新国语自产精品视频在| 高清免费毛片| 任我操在线视频| 国产极品粉嫩小泬免费看| 欧美高清三区| 熟妇无码人妻| 九色视频一区| 伊人福利视频| 国产欧美日韩91| 18禁不卡免费网站| 国产精品无码AⅤ在线观看播放| 看你懂的巨臀中文字幕一区二区| 四虎在线高清无码| 亚洲无码视频喷水| 超级碰免费视频91| 少妇露出福利视频| 久久国产亚洲欧美日韩精品| 粉嫩国产白浆在线观看| 嫩草国产在线| 欧美激情,国产精品| 91精品久久久久久无码人妻| 欧美日韩中文字幕二区三区| 久久www视频| 欧美一级特黄aaaaaa在线看片| 日韩av无码DVD| 成人精品在线观看| 91精品网站| 国产精品网址你懂的| 国产精品黑色丝袜的老师| 亚洲色精品国产一区二区三区| 国产农村妇女精品一二区| 久久精品丝袜高跟鞋|