linux的虚拟文件系统及实例xorfs

linux的虚拟文件系统及实例xorfs

ID:32658123

大小:225.71 KB

页数:29页

时间:2019-02-14

linux的虚拟文件系统及实例xorfs_第1页
linux的虚拟文件系统及实例xorfs_第2页
linux的虚拟文件系统及实例xorfs_第3页
linux的虚拟文件系统及实例xorfs_第4页
linux的虚拟文件系统及实例xorfs_第5页
资源描述:

《linux的虚拟文件系统及实例xorfs》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux的虚拟文件系统及实例XORFSLinux的虚拟文件系统用户视角下的文件系统"一切皆是文件”,是UNIX和Linux的基本哲学之一。Linux对于文件I/O操作,实现了P0SIX.1和SingleUNIXSpecification中的接口,包括open()、read()、write()、lseek()和close()等方法。正是由于Linux所实现的虚拟文件系统对具体文件系统进行了抽象,使得Linux可以方便地实现文件I/O操作接口。用户视角下的文件系统,就是一组系统调用接口,其与VFS的关系如下:UserLevelSystemCallD

2、eviceDriversfdfdrdfdfiletabk?filestatusflagscurrentfileoffsetv-iuxiepointer-DisksNetwork每个进程在用户空间内都有-・张filedescriptiontable,用于描述己打开的文件。当open()成功返回时,将返回文件描述符(filedescription),被插入到filedescriptiontable中。processtableentryv-nodetablev-nodeinformationi-nodeinformationcurrentfilesiz

3、e如卜图所示,当用户进程调用writeoff法读取文件时,将调用VFS的sys_write()方法,而在sys_write()方法中调用文件系统接口的具体方法进行硬麻读取。在Linux2.6.25以后,syswrite()为vfswrite()所替代。vfs_write()源代码如下:5$ize_tVfSWritO(structfile*file,constchar_user•buf,sizetcount,lofft*gos){—_ssize.tret;if(i(file>Cmode&FMODE.WRITE))rettrn-EBADF;•f(•f

4、ile->f_op

5、

6、(•file・A°_op・>write&&!>f_op*>aio_write))retirn•EINVAL;if(unlikely(laccess_ok(VERIFY_READ#buf,count)))retirn•EFAULT;ret■rw_verify_area(WRITE,file,pos,count);if(ret>■0){count«ret;if(fie->f_op->write)ret■file*>f_cp*>wnte(file,buf,count,pos);elseret■do_5ync_write(file,

7、buf,count,pos);If(ret>0){fsnotify_modify(file);add^wcharCcurrent,ret);H一inc_syscv>(current);}"returnret;}?endvf$_write?由此可见,write的调丿I]过程为:一write()fvfs_write()ffile・>f_op・>write(),由文件系统提供的VFSAPI进行实际的存取操作。硬盘视角下的文件系统Linux在破盘上的文件系统与逻辑上的文件系统VFS完全不同。UFS(UNIXFileSystem)基于Berkeleyfas

8、tfilesystem,如下:diskdrivefilesystemJbooCblock($)partitioncylindergroup0partiticxic)4indvrgroup1partitioncylindergroupnsuperblock—■■■、■■■、-■■、一■■、■■■Xsuperblockcopyeginfoi-iuxiem^pblockbilmaprnodesdatablocksi・nod(?i・node•••i-nodeUFS由许多分区构成,可以允许分区之间采取不同的文件系统,但同一个分区之内必须为同一•文件系统。上

9、图启动块(BootBlock)大小确定,为1KB,由PC标准规定,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块。UFS文件系统将整个分区划分成超级块(SuperBlock,除块组0之外的SuperBlock都为备份)、块描述符表、i-node位图、块位图、i-node表、data数据块。超级块包含了关于该硬盘或分区文件系统的整体信息,如文件系统大小等。索引结点,包含了针对某-•具体文件几乎的全部信息,如文件存取权限、所有者、大小.建立时间以及对应的目录块和数据块等。数据块是真正存储文件内容的位置,但索引结点中不包括文件名,文件名存

10、于口录块。目录块里包含文件名以及文件索引结点编号。上图屮,位于数据块中存储Fl录数据的directoryentry均指向同一个i-nod

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。