解剖linux内核之文件系统

本文探讨了Linux内核中的文件系统,重点介绍了虚实结合的概念,如VFS(虚拟文件系统)与ext2文件系统的交互。通过分析ext2的结构体,如`ext2_super_block`、`ext2_group_desc`和`ext2_inode`,展示了文件系统如何存储和管理数据。此外,还展示了如何打印打开的所有文件信息,提供了查看进程打开文件的示例代码。
摘要由CSDN通过智能技术生成

虚实结合

文件系统主要分为两个部分:vfs和ext2(以ext2为例),一虚一实,vfs是在机子启动的时候在内存中建立的,机子关掉便不存在了,是虚的;ext2是在磁盘介质上的,是磁盘在格式化的时候确定的,机子关机后仍然在磁盘上存在。

在磁盘上的ext2文件系统那个的格式如下:


Ext2中与superblock对应的结构体是

 

struct ext2_super_block {

         __u32       s_inodes_count;                /* Inodes count */ 12214272

         __u32       s_blocks_count;                /* Blocks count */ 48827904

         …

         __u32       s_blocks_per_group;       /* # Blocks per group */32768

         __u32       s_inodes_per_group;       /* # Inodes per group */8192

         ….

};

与block group对应的结构体是:

struct ext2_group_desc

{

         __u32       bg_block_bitmap;    /* Blocks bitmap block*/

/*所表示的块组中的block bitmap所在块号 */

         __u32       bg_inode_bitmap;   /* Inodes bitmap block */

/*所表示的块组中的inode bitmap所在块号 */

         __u32       bg_inode_table;                /* Inodes table block */

/*所表示的块组中的inode table所在块号 */

         __u16       bg_free_blocks_count;    /* Free blocks count */

         __u16       bg_free_inodes_count;   /* Free inodes count */

         __u16       bg_used_dirs_count;       /* Directories count */</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值