- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch6-6.5Linux文件系统
6.5 Linux的文件管理 6.5.1 Linux虚拟文件系统 6.5.2 文件系统注册与注销,安装与卸载 6.5.3 文件系统缓存机制 6.5.4 Ext2文件系统 6.5.1 Linux虚拟文件系统 VFS四个对象类 VFS主要数据结构 超级块对象-代表一个文件系统。 索引节点对象-代表一个文件。 目录项对象-代表路径中的一个组成部分。 文件(file)对象-代表由进程已打开的一个文件。 VFS各种对象之间的关系 Linux文件系统逻辑结构 6.5.2 文件系统注册与注销,安装与卸载 1 文件系统的注册与注销 struct file_system_type { const char *name;/*文件类型名*/ struct super_block *(*read_super)(struct super_block*,void*,int); struct file_system_type *next; … }; 2 文件系统的安装与卸载 1文件系统的安装 2文件系统安装过程:通过安装命令将文件系统装到某个目录节点。 3文件指系统卸载过程:通过卸载命令删除对应的目录。 (根目录文件系统Ext2在启动时已经被装入) 6.5.3 文件系统的缓存机制 1 VFS inode缓存:把当前使用的inode保存在内存。采用散列技术加速查找速度。 2 VFS目录高速缓存:维护路径与目录inode间关系,有目录节点的缓存。 3 页高速缓冲区:使用过的页保留在页缓存中,直到需要释放。 6.5.4 EXT2文件系统(1) EXT(92年)和EXT2(94年)是专为Linux设计的可扩展文件系统。 EXT2把它所占用的磁盘逻辑分区划分为块组,每个块组依次包括超级块、组描述符表、块位图、inode位图、inode表以及数据块。 块位图集中本组各数据块的使用情况; inode位图记录inode表中inode的使用情况。 inode表保存本组所有的inode,inode用于描述文件,一个inode对应一个文件和子目录,有一个唯一的inode号,并记录了文件在外存的位置、存取权限、修改时间、类型等信息。 EXT2文件系统(2)文件系统结构 ? EXT2的超级块 EXT2的超级块用来描述目录和文件在磁盘上的静态分布,包括尺寸和结构。每个块组都有一个超级块,一般来说只有组0的超级块才被读入主存超级块,其它块组的超级块仅仅作为备份。 EXT2的超级块包括inode数量、块数量、保留块数量、空闲块数量、空闲inode数量、第一个数据块位置、块长度、片长度、每个块组块数、每个块组片数、每个块组inode数,以及安装时间、最后一次写时间、安装信息、文件系统状态信息等内容。 EXT2的块组描述符 每个块组都有一个块组描述符,记录该块组的块位图位置、inode位图位置、inode节点位置、空闲块数、inode数、目录数等内容。 所有组描述符构成了组描述附表。同超级块一样,组描述符附表在每个块组中都有备份,这样,当文件系统崩溃时,可以用来恢复文件系统。 EXT2的inode inode用于描述文件,一个inode对应一个文件和子目录,有一个唯一的inode号,并记录了文件的类型及存取权限、用户和组标识、修改/访问/创建/删除时间、link数、文件长度和占用块数、在外存的位置、以及其他控制信息。 Linux数据块分配策略(1) EXT2采用两个策略减少文件碎片 原地先查找策略:为文件分配数据块时,尽量在文件原有数据块附近查找。先试探紧跟文件末尾的数据块,然后试探位于同一个块组相邻的64个数据块,接着在同一个块组中寻找其他空闲数据块;实在不得己才有哪些信誉好的足球投注网站其他块组,且首先考虑8个一簇的连续的块。 Linux数据块分配策略(2) 预分配策略:引入预分配机制,就从预分配的数据块取一块来用,紧跟该块后的若干个数据块空闲的话,也被保留,保证尽可能多的数据块被集中成一簇。 * 标准文件类系统调用,open( )、read( )、write( )、close( )等 用户空间 应用程序 系统空间 VFS 系统调用对应的内核函数,sys_open( )、sys_read( )、sys_write( )、sys_close( ) Minix 文件系统 Ext2 文件系统 … Fat 文件系统 具体文件系统对应的文件操作函数,open( )、read( )、write( )、close( )等 应用层 虚拟层 实现层 VFS和具体文件系统的关系 缓冲区缓存 磁盘驱动器 索引节点缓存 目录高速缓存 VFS各种对象之间的关系 磁
文档评论(0)