




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)現(xiàn)自己的虛擬文件系統(tǒng)西安郵電學(xué)院西安郵電學(xué)院Linux小組小組陳莉君陳莉君 許振文許振文 武婷武婷 陳繼峰陳繼峰主要內(nèi)容什么是虛擬文件系統(tǒng),與VFS有何區(qū)別 ?為什么要?jiǎng)?chuàng)建自己的虛擬文件系統(tǒng)?如何創(chuàng)建自己的虛擬文件系統(tǒng)?虛擬文件系統(tǒng) 虛擬文件系統(tǒng)是存在于內(nèi)存中,區(qū)別于ext2,ext3等實(shí)際文件系統(tǒng)的文件系統(tǒng).虛擬文件系統(tǒng)轉(zhuǎn)換VFS為了支持其他各種不同的文件系統(tǒng),Linux提供了一種統(tǒng)一的框架,就是所謂的虛擬文件系統(tǒng)轉(zhuǎn)換(Virtual Filesystem Switch),簡(jiǎn)稱(chēng)虛擬文件系虛擬文件系統(tǒng)統(tǒng)(VFS)(VFS)VFS框架 用戶程序 虛擬文件系統(tǒng)VFS Minix Ext2 FAT
2、 設(shè)備文件 文件系統(tǒng)的系統(tǒng)調(diào)用接口,包括 read()、 write()、open()、close()等 系統(tǒng)調(diào)用對(duì)應(yīng)的內(nèi)核函數(shù)sys_read() sys_write()、sys_open()等支撐VFS的具體文件系統(tǒng)用戶空間內(nèi)核空間 VFS與具體文件系統(tǒng)之間的關(guān)系主要內(nèi)容u什么是虛擬文件系統(tǒng)?與VFS有何區(qū)別 ?u為什么要實(shí)現(xiàn)自己的虛擬文件系統(tǒng)為什么要實(shí)現(xiàn)自己的虛擬文件系統(tǒng)?u如何實(shí)現(xiàn)自己的虛擬文件系統(tǒng)?實(shí)現(xiàn)自己虛擬文件系統(tǒng)的原因現(xiàn)有的虛擬文件系統(tǒng),比如proc, sysfs等都各有自己的用途。當(dāng)因?yàn)槟撤N用途想把內(nèi)核輸出的信息放在一個(gè)文件系統(tǒng)下時(shí),可以建立自己的虛擬文件系統(tǒng)。主要內(nèi)容 什么
3、是虛擬文件系統(tǒng)?與VFS有何區(qū)別 為什么要?jiǎng)?chuàng)建自己的虛擬文件系統(tǒng)?如何創(chuàng)建自己的虛擬文件系統(tǒng)?注冊(cè)文件系統(tǒng)struct file_system_type const char *name; int fs_flags; int (*get_sb) (struct file_system_type *, int, const char *, void *, struct vfsmount *); void (*kill_sb) (struct super_block *); struct module *owner; struct file_system_type * next; struct l
4、ist_head fs_supers;。在在Linux系統(tǒng)中,每個(gè)文件系統(tǒng)都會(huì)以系統(tǒng)中,每個(gè)文件系統(tǒng)都會(huì)以struct file_system_type數(shù)據(jù)結(jié)構(gòu)來(lái)表示數(shù)據(jù)結(jié)構(gòu)來(lái)表示myfs文件系統(tǒng)實(shí)例結(jié)構(gòu)定義為:文件系統(tǒng)實(shí)例結(jié)構(gòu)定義為:static struct file_system_type my_fs_type = .owner = THIS_MODULE, .name = myfs, .get_sb = my_get_sb, .kill_sb = kill_litter_super,;注冊(cè)文件系統(tǒng)就是將各種文件系統(tǒng)實(shí)例化,形成鏈表,內(nèi)核中使用一個(gè)名為注冊(cè)文件系統(tǒng)就是將各種文件系統(tǒng)實(shí)例化
5、,形成鏈表,內(nèi)核中使用一個(gè)名為file_systems的的全局變量來(lái)指向該鏈表表頭。全局變量來(lái)指向該鏈表表頭。static struct file_system_type *file_systems;return文件系統(tǒng)實(shí)例化此時(shí)用圖來(lái)表示為:初始化myfs-注冊(cè)文件系統(tǒng) retval = register_filesystem(&my_fs_type);數(shù)據(jù)結(jié)構(gòu)之一數(shù)據(jù)結(jié)構(gòu)之一安裝點(diǎn)安裝點(diǎn)struct vfsmount struct list_head mnt_hash; struct vfsmount *mnt_parent; /* fs we are mounted on */
6、struct dentry *mnt_mountpoint; /* dentry of mountpoint */ struct dentry *mnt_root; /* root of the mounted tree */ struct super_block *mnt_sb; /* pointer to superblock */ struct list_head mnt_mounts; /* list of children, anchored here */ struct list_head mnt_child; /* and going through their mnt_chil
7、d */ int mnt_flags; /* 4 bytes hole on 64bits arches */ const char *mnt_devname; /* Name of device e.g. /dev/dsk/hda1 */.數(shù)據(jù)結(jié)構(gòu)之二數(shù)據(jù)結(jié)構(gòu)之二超級(jí)塊超級(jí)塊struct super_block struct file_system_type *s_type; const struct super_operations *s_op;.struct dentry *s_root;/指向文件系統(tǒng)的根目錄.struct list_head s_instances;/數(shù)據(jù)結(jié)構(gòu)之三 索
8、引節(jié)點(diǎn)索引節(jié)點(diǎn)struct inode . unsingned long i_ino;const struct inode_operations *i_op;const struct file_operations *i_fop; struct super_block *i_sb;.數(shù)據(jù)結(jié)構(gòu)之四-目錄項(xiàng)目錄項(xiàng)struct dentry struct dentry *d_parent; /* parent directory */ struct qstr d_name;struct list_head d_alias; /* inode alias list */ const struct de
9、ntry_operations *d_op; struct super_block *d_sb; /* The root of the dentry tree */ void *d_fsdata; /* fs-specific data */文件系統(tǒng)掛載文件系統(tǒng)類(lèi)型注冊(cè)好之后,調(diào)用vfs_kern_mount(&my_fs_type,MS_KERNMOUNT,(&my_fs_type)-name,NULL);初始化已經(jīng)注冊(cè)了的myfs文件系統(tǒng).接下來(lái)分析具體過(guò)程vfs_kern_mount()做的主要工作1)調(diào)用調(diào)用 alloc_vfsmnt() 函數(shù)在內(nèi)存里申請(qǐng)了一塊該類(lèi)型的
10、內(nèi)存空函數(shù)在內(nèi)存里申請(qǐng)了一塊該類(lèi)型的內(nèi)存空間(間(struct vfsmount *mnt),并初始化其部分成員變量。),并初始化其部分成員變量。2) 調(diào)用調(diào)用 type-get_sb(即即myfs_get_sb() 函數(shù)在內(nèi)存中分配一個(gè)函數(shù)在內(nèi)存中分配一個(gè)超級(jí)塊結(jié)構(gòu)超級(jí)塊結(jié)構(gòu) (struct super_block) sb,并初始化其部分成員變量,并初始化其部分成員變量,將成員將成員 s_instances 插入到插入到 myfs 文件系統(tǒng)類(lèi)型結(jié)構(gòu)中的文件系統(tǒng)類(lèi)型結(jié)構(gòu)中的 fs_supers 指向的雙向鏈表中。指向的雙向鏈表中。3) 通過(guò)通過(guò) myfs 文件系統(tǒng)中的文件系統(tǒng)中的myfs_fi
11、ll_super 函數(shù)指針調(diào)用函數(shù)指針調(diào)用 myfs_fill_super() 函數(shù)。填充超級(jí)塊函數(shù)。填充超級(jí)塊.4) myfs_fill_super() 函數(shù)調(diào)用函數(shù)調(diào)用 myfs_get_inode() 在內(nèi)存中分配在內(nèi)存中分配了一個(gè)了一個(gè) inode 結(jié)構(gòu)結(jié)構(gòu) (struct inode) inode,并初始化其部分成員,并初始化其部分成員變量,其中比較重要的有變量,其中比較重要的有 i_op、i_fop 和和 i_sbinode-i_op = &myfs_dir_inode_operations;inode-i_fop = &dcache_dir_ops;inode-i_sb = sb;vfs_kern_mount函數(shù)調(diào)用過(guò)程調(diào)用alloc_vfsmnt() 分配vfs_mount分配超級(jí)塊并初始化myfs_get_inode()myfs_get_inode()分配分配inodeinode并初始化并初始化Vfs_kern_mount完成之后掛載(安裝)文件系統(tǒng)以上過(guò)程只是對(duì)文件系統(tǒng)進(jìn)行了初始化,此時(shí)mount point已經(jīng)指向了文件系統(tǒng)的根目錄。使用mount命令進(jìn)行掛載:Sudo mount -t myfs myfs /mnt完成后可以在/mnt目錄下看到
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 景區(qū)擴(kuò)建籌備計(jì)劃方案
- 高端酒店停車(chē)場(chǎng)經(jīng)營(yíng)管理合同
- 乾隆與皇后考試題及答案
- 數(shù)據(jù)日?qǐng)?bào)面試題及答案
- 主動(dòng)脈夾層的診斷與治療
- 調(diào)度中心管理方案模板
- 車(chē)輛無(wú)償租賃給臨時(shí)施工項(xiàng)目協(xié)議
- 石板保護(hù)處理方案
- 消防驗(yàn)收計(jì)劃及方案
- 英國(guó)教育發(fā)展史綱
- 基本原理與性能特點(diǎn)多自由度電磁軸承課件
- Q∕SY 1836-2015 鍋爐 加熱爐燃油(氣)燃燒器及安全聯(lián)鎖保護(hù)裝置檢測(cè)規(guī)范
- 北京輸變電工程標(biāo)準(zhǔn)工藝應(yīng)用圖冊(cè)(圖文并茂)
- 儀器使用記錄表
- 石河子大學(xué)化學(xué)化工學(xué)院學(xué)院綜合測(cè)評(píng)方案-理學(xué)院
- 《汽車(chē)電工電子技術(shù)》全套教案(完整版)
- 國(guó)家職業(yè)技能標(biāo)準(zhǔn) (2021年版) 嬰幼兒發(fā)展引導(dǎo)員
- (高清正版)JJF(浙)1091—2014內(nèi)測(cè)卡尺校準(zhǔn)規(guī)范
- 伯杰氏細(xì)菌系統(tǒng)分類(lèi)學(xué)手冊(cè)
- 國(guó)際結(jié)算業(yè)務(wù)系列培訓(xùn)-福費(fèi)廷業(yè)務(wù)課件
- 班組計(jì)件承包協(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論