Minix文件系统

Minix文件系统

一、结构介绍

image-20221215111731811

  1. **引导块:**包含一些引导的代码,启动时执行存放于该处的代码

  2. **超级块:**两个位图的长度、索引节点的个数、数据区的起始位置

  3. **索引节点位图:**索引节点的分配情况

  4. **数据区位图:**存储文件和目录的内容

  5. **索引节点区:**存放各个索引节点,索引节点包含文件的控制信息

  6. **数据区:**存储文件和目录的内容

    索引节点:存储文件和目录的控制块

超级块
struct d_super_block
{
	unsigned short s_ninodes;  //索引节点数
	unsigned short s_nzones;   //区块数 
	unsigned short s_imap_blocks; //索引节点位图占的磁盘块数
	unsigned short s_zmap_blocks; //数据区位图所占的磁盘块数
	unsigned short s_firstdatazone; //数据区第一个盘块的下标,从0开始,盘块也从0开始
	unsigned short s_log_zone_size; //每一个区块所占的磁盘块  2**log_zone_size
	unsigned short s_max_size; //设备上最大文件长度
	unsigned short s_magic;
}
索引节点区
struct d_inode //一个索引节点占0x20个字节
{
	unsigned short i_mode; //2byte 读写访问权限,类型信息
	unsigned short i_uid;  //2byte    创建者
	unsigned long i_size; //4  根目录在数据区所占的字节数
	unsigned long i_mtime; //4byte
	unsigned char i_gid;  //1byte
	unsigned char i_nlinks;//1byte
	unsigned short i_zone[9]; //占据的区块的编号.0-6为直接索引,存储的为所使用的的区段号,7为一级索引块,8为二级索引块
};
//2号索引节点处记录所有文件的权限时间等控制信息
数据区
目录
#define NAME_LEN 14
struct dir_entry  //一个目录项占16字节
{
	unsigned short inode; //第几个索引节点,要减1
	char name[NAME_LEN]; //文件或者子目录名字
};

在数据区中根据每个目录项看到包含哪个文件或者目录,找到对应的索引节点编号(x),则定位到索引节点基址+(x-1)* 0x20 处,根据该索引节点确定所占的区块编号,该区块起始地址为 区块编号 * 区块大小。

位图
索引节点位图

记录盘块的使用信息,一字节八位可以记录八个盘块的使用信息。一个标志位,为1表示该索引节点被占用,为0表示索引节点为空闲。

实验结论

删除文件时,只是把数据区目录项中的索引节点号清零了,两个位图中的有效位清零了,索引节点的前两个字节i_mode清零了,而文件的数据块和目录项中的文件名并没有改变,即只是把链接删除了,真正的数据仍然在此磁盘块中故恢复文件时需要恢复链接,恢复目录项索引节点,以及索引节点中的i_mode信息。

注意找索引节点时第几个,找盘块得到的为下标

数据仍然在此磁盘块中故恢复文件时需要恢复链接,恢复目录项索引节点,以及索引节点中的i_mode信息。

注意找索引节点时第几个,找盘块得到的为下标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值