首页 > 其他分享 >学习笔记5

学习笔记5

时间:2023-10-13 18:25:18浏览次数:18  
标签:EXT2 文件系统 笔记 学习 索引 block 节点 Block

第11章 EXT2文件系统

1. EXT2文件系统数据结构

1 通过mkfs创建虚拟硬盘

命令:mke2fs [-b blksize -N ninodes] device nblocks

2 虚拟磁盘布局

image
Block#0:引导块
B0是引导块,文件系统不会使用,他用来容纳一个引导程序,从此盘引导操作系统。

3 超级块

Block#1:超级块
B1是超级块,用于容纳整个文件系统的消息。
重要字段:
image
s_first_data_block:0表示4KB块大小,1表示1KB块大小。它用于确定块组描述符的起始块,即s_first_data_block + 1。
s_log_block_size:确定文件块大小,为1KB*(2s_log_block_size)
s_mnt_count:已挂载文件系统的次数。当挂载次数达到max_mnt_count时,fsck会话将被迫检查文件系统的一致性。
s_magic:标识文件系统类型的幻数。EXT2/3/4文件系统的幻数是0xEF53。

4 块组描述符

Block#2:块组描述符块(硬盘上的s_first_data_block+1)
EXT2将磁盘块分成几个组。每个组有8192个块(硬盘上的大小为32K)。每组用一个块组描述符1结构体来描述。
image

5 块和索引节点位图

Block#8:块位图(Bmap)位图是用来表示某种项的位序列。在位图中,0位标识对应项处于FREE状态,1位表示对应项处于IN_USE状态。一个软盘有1440个块,但是Block#0未被文件系统使用。所以,位图只有1439个有效位。无效位被视作IN_USE,设置为1。

Block#9:索引节点位图(Imap)一个索引节点就是用来代表一个文件的数据结构。EXT2文件系统是使用数量有限的索引节点创建的。各索引节点的状态用B9的Imap中的一个位表示。在EXT2 FS中,前十个索引节点是预留的。所以,空EXT2 FS的Imap以十个1开头,然后是0.无效位再次设置为1。

6 索引节点

Block#10:索引(开始)节点(bg_inode_table) 每个文件都用一个128字节(EXT4中是256字节)的唯一索引节点结构体表示。
image
在索引节点结构体中,i_mode为u16或2字节无符号整数。
image
前四位:文件类型
中间三位:ugs表示文件的特殊用法
最后九位:用于文件保护的rwx权限位
i_size字段表示文件大小(以字节为单位)。每个时间字段都是一个非常大的无符号整数。可借助
image
库函数将他们转换为日历形式。
i_block[15]数组包含指向文件磁盘块的指针,这些磁盘块有:
image

7 数据块

紧跟在索引节点块后面的是文件存储数据块。

8 目录条目

目录包含dir_entry结构,即
image

dir_entry是一种可扩充结构。名称字段包含1到255个字符,不含终止NULL。所以dir_entry的rec_len也各不相同。

苏格拉底挑战
image

image

image

标签:EXT2,文件系统,笔记,学习,索引,block,节点,Block
From: https://www.cnblogs.com/1104dd/p/17762859.html

相关文章

  • 2023-2024-1 20231301 《计算机基础与程序设计》第三周学习总结
    2023-2024-120231301《计算机基础与程序设计》第三周学习总结作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求<作业>(2023-2024-1计算机基础与程序设计第三周学习总结)作业目标<《计算机基础与程序设计》预习第二、三章>《计算机......
  • 博学谷学习记录 自我总结 用心分享 | Tomcat源码刨析
    Tomcat系统架构设计1.前言很多人谈到架构感觉是一个非常高大尚的东西,觉得自己目前不太可能接触到或者没有实力接触和学习它。这其实是一个非常错误的认识,事实上我们作为开发人员每天都在和架构打交道。比如当你接到一个功能模块的需求时,你首先要做的就是分析和设计,例如技术选型......
  • 博学谷学习记录 自我总结 用心分享 | Spring源码刨析
    别再盲目的说spring有三级缓存了,两个缓存只是启动时为了解决循环依赖,spring启动后只有一个缓存有用一、什么是循环依赖循环依赖指的就是循环引用,就是两个或多个bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终......
  • Java学习笔记二
    Java学习笔记二面向对象(ObjectOriented)属性(成员变量)跟随对象放在堆里面,局部变量(如p1)放在栈里面。只有成员变量的前面能添加权限修饰符,且成员变量自带默认值。在一个类中,一个方法可以调用这个类中的其余方法(包括自身,即递归)以及成员变量,不能在方法中再定义方法。方法重载(O......
  • 数据结构——左偏树/可并堆学习笔记
    引入作为树形数据结构的一员——堆,对于取极值拥有着优秀的复杂度,但是,合并两个堆却成为了一个问题。除了朴素算法外,还有什么算法可以合并两个堆呢?正文那么,可并堆是个啥呢?简单来说,它是一个支持合并操作的二叉堆(好像是废话)。首先,简单介绍一下二叉堆的性质,学过的读者可自行跳过。......
  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(4)软定时器
    5.软件定时器管理软件定时器由FreeRTOS内核实现,并受其控制。它们不需要硬件支持,也与硬件计时器或硬件计数器无关。软件定时器功能是可选的。包括软件定时器功能:1。作为项目的一部分,构建FreeRTOS源文件FreeRTOS/source/timers.c。2.在FreeRTOSConfig.h中将configUSE_TIMERS设置为......
  • 一个需要感性理解的树上算法 学习心得
    题目描述你现在有一颗\(n\)个点的树和\(m\)条由\(x_i\)到\(y_i\)(\(1\lex_i\,\y_i\len\))的简单可重复路径。求有多少种方案选路径,使路径集的大小为\(k\),且所有路径至少有一个公共点。对\(10^9+7\)取模。题解这道题需要感性理解做法。我们记一个路径左右......
  • 网络流 - 最大流 学习心得
    一篇写的很好的博客那篇博客讲得很清楚,就不再赘述了。在这里贴出一些我犯过的bug:/*  bug:1.是q.front()而不是q.back()      2.q需要pop()      3.bfs的条件不是w!=0而是w>0      4.flow不会在同一层被更新,因此不能给flow赋值     ......
  • 树链剖分 学习心得
    Bug都写在代码开头了,就不复述了。还有一个智障的错误是注释调试代码的时候把同一行的正式代码也给注释掉了(写得非常精彩。/*  bug:1.rev、id要分清!      2.mod()函数的情况不能写一半就跑路!      3.别忘了先给tree build()一下!      4.出界......
  • 数位 dp 学习心得
    感觉非常牛逼。最牛逼的是很多情况下要去掉前导零。去掉前导零的方法通常是先忽略前导零的约束,最后再容斥掉有多少0。LuoguP2602数字计数来自【详细解释】数字计数ZJOJp2602一道练习数位DP的好题-moye到碗里来的博客-洛谷博客(luogu.com.cn)那么我们首先看题,对于这......