操作系统(第四版)第9章课件ppt.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统(第四版)第9章课件ppt

* 第九章 Linux文件系统 北京理工大学计算机学院 * 9.1 Ext2磁盘涉及的数据结构 Linux最初采用的是Minix的文件系统,但是Minix只是一种试验性的操作系统,其文件系统的大小仅限于64M字节。当Linux成熟时,引入了扩展文件系统( Extended Filesystem, Ext FS),但提供的性能不令人满意。在1994年引入了第二扩展文件系统(Ext2),它相当高效和强健,已成为广泛使用的Linux文件系统。 * 9.1.1 Ext2文件卷的布局 Ext2把磁盘块分为组,每组包含存放在相邻磁道的数据块和索引节点。块组的大小相等并顺序安排。 Ext2用“块组描述符”来描述这些块组本身的结构信息,同时将超级块和所有的块组描述符重复存储于每个块组中。 Ext2通过“位图”来管理每个块组中的磁盘块和索引节点。盘块位图,索引节点位图。 * 引导块 块组0 块组n-1 1块 k块 1块 1块 m块 n块 超 级 块 块组描述 符 数据块位图 索引节点位图 索引节点区 文件 数据区 Ext2示意图 …… * 超级块存放整个文件卷的资源管理信息。 索引节点存放文件的管理控制信息。 只有块组0中所包含的超级块和组描述符才由内核使用,而其余的超级块和组描述符保持不变,事实上,内核甚至不考虑它们。当系统对文件系统的状态执行一致性检查时,就引用存放在块组0中的超级块和组描述符,然后把它们拷贝到其它所有的块组中。 * 块组的多少取决于分区的大小和块的大小。盘块位图必须存放在一个单独的块中(盘块位图的每1位对应着块组中的一个盘块,1表示已分配,0表示空闲)。 考虑一个8GB的分区,盘块的大小为4KB。每个4KB的盘块位图可描述32K个磁盘块,即128MB。因此,最多需要64个块组。 * 9.1.2 超级块 struct ext2_super_block { __le32 s_inodes_count; 索引节点的总数 __le32 s_blocks_count; 盘块的总数 __le32 s_free_blocks_count; 空闲块计数 __le32 s_free_inodes_count; 空闲索引节点数 __le32 s_log_block_size; 盘块的大小 __le32 s_blocks_per_group; 每组中的盘块数 __le32 s_inodes_per_group; 每组索引节点数 __le16 s_inode_size; 磁盘上索引节点结构的大小 ……}; * s_log_block_size字段以2的幂次方表示盘块的大小,且以1024B为单位。幂指数为0表示盘块大小为1024B,为1表示盘块大小为2048B等等。 假设每个块组包含4096个索引节点,若想确定索引节点13021在磁盘上的地址。 13021/4096=3……733 该索引节点在第3个块组的索引节点表的第733个表项中。 * 9.1.3 块组描述符 struct ext2_group_desc { __le32 bg_block_bitmap; 盘块位图的块号 __le32 bg_inode_bitmap; 索引节点位图的块号 __le32 bg_inode_table; 索引节点区的第一个盘块块号 __le16 bg_free_blocks_count;组中空闲块的个数 __le16 bg_free_inodes_count;组中空闲索引节点的个数 __le16 bg_used_dirs_count; 组中目录的个数 ……}; * 9.1.4 文件目录与索引节点结构 把通常的文件目录项分成简单目录项和索引节点两部分。 简单目录项包含了文件名和索引节点号等,可以提高文件目录的检索速度。 系统只保留一个索引节点,就可实现多条路径共享文件,减少信息冗余。 * 目录项结构 struct ext2_dir_entry_2{ __le32 inode; 索引节点号 __le16 rec_len; 目录项长度 __u8 name_len; 实际文件名长度 __u8 file_type; 文件类型 char name[255]; 文件名,变长数组 } * 文件类型 0:不可知 1:普通文件 2:目录文件 3:字符设备文件 4:块设备文件 5:有名管道 6:套接字文件 7:符号链接 name字段存放文件的名字,最多为255B,实际字符数为name_len。 文件名必须是4B的整数倍。 目录结构是变长的 目录项 inode rec_len name 0 1 2 . \0 \0 \0 12 2

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档