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

学习笔记5

时间:2023-10-15 17:55:57浏览次数:36  
标签:count bg group EXT2 文件系统 笔记 学习 u32

目录

知识点归纳

第11章 EX2文件系统数据结构

Linux一直将EXT2作为默认文件系统。EXT3是EXT2的扩展。EXT3中增加的主要内容是一个日志文件,他将文件系统的变更记录在日志中。日志可在文件系统崩溃时更快地从错误中恢复。没有错误的EXT3文件系统与EXT2文件系统相同。EXT3的最新扩展时EXT4。EXT4的主要变化是磁盘块的分配。在EXT4中,块编号为48位。EXT4是分配连续的磁盘块,称为区段。本书的目的是论述文件系统设计和实现的原则,强调简单性以及与Linux的兼容性。我们选择EXT2文件系统。用户命令:用户可以使用Unix/Linux命令来执行文件操作。

  • 在linux下,通过mkfs创建虚拟磁盘,输入命令:
  • mke2fs [-b blksize -N ninodes] device nblocks 可创建一个带有nblocks个块(每个块大小为blksize个字节)和ninodes个索引节点的EXT2文件系统
  1. 虚拟磁盘布局:
  • Block#0:引导块文件系统不会使用它,用来容纳一个引导程序,从磁盘引导操作系统
  • Block#1:超级块,用于容纳整个文件系统的信息。
    在linux下,通过mkfs创建虚拟磁盘,输入命令: mke2fs [-b blksize -N ninodes] device nblocks 可创建一个带有nblocks个块(每个块大小为blksize个字节)和ninodes个索引节点的EXT2文件系统
  1. EXT2文件系统
    Linux使用的默认文件系统就是ext2。ext2文件系统总共有1440个块,每个块大小1KB。
    Block#1:超级块,用于容纳整个文件系统的信息
    下面是一些重要字段

    块和索引节点位图
    BLOCK#8:块位图(Bmap)
    BLOCK#9:索引节点位图(Lmap)
    部分重要字段:
 struct ext2_super_block {
u32 s_inodes_count; // Inodes count
u32 s_blocks_count; // Blocks count
u32 s_r_blocks_count; // Reserved blocks count
u32 s_free_blocks_count; // Free blocks count
u32 s_free_inodes_count; // Free inodes count
u32 s_first_data_block; // First Data Block
u32 s_log_block_size; // Block size
u32 s_log_cluster_size; // Allocation cluster size
u32 s_blocks_per_group; // # Blocks per group
u32 s_clusters_per_group; // # Fragments per group
u32 s_inodes_per_group; // # Inodes per group
u32 s_mtime; // Mount time
u32 s_wtime; // Write time
u32 s_mnt_count; // Mount count
u16 s_max_mnt_count; // Maximal mount count
u16 s_magic; // Magic signature
// more non-essential fields
u16 s_inode_size; // size of inode structure
};

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

struct ext2_ group_ desc (
u32
bg_ block_ bi tmap; // Bmap block number
u32 bg inode_ bi tmap; //Imap b1ock number
u32 bg inode_ table; // Indes begin block number
u16 bg_ free_ blocks_ count ; // THESE are OBVIOUS
u16 bg_ free_ inodes_ count ;
u16 bg_ used_ dirs_ count;
u16 bg_ pad; //ignore these
u32 bg_ reserved[3] ;
};

苏格拉底挑战



问题与解决方案

问题:文件系统的概念和原理可能比较抽象,难以理解。
解决方案:可以通过一些实际的例子或者模拟实验来帮助理解文件系统的基本概念和原理。同时,也可以参考一些相关的教材和资料来加深理解。

问题:不同文件系统之间的差异和特点可能容易混淆。
解决方案:可以通过对比不同文件系统的主要特点来帮助记忆和理解。此外,了解各种文件系统的适用场景和使用限制也能加深理解。

问题:文件系统的设计和实现可能比较复杂,难以掌握。
解决方案:可以参考一些现有的文件系统实现和相关的研究论文,深入了解文件系统的设计和实现细节。同时,也可以通过实践来加深对文件系统设计和实现的理解,比如在虚拟机上实现一个简单的文件系统。

实践过程

让chatgpt给我些实践代码

标签:count,bg,group,EXT2,文件系统,笔记,学习,u32
From: https://www.cnblogs.com/lizhuotong/p/17765891.html

相关文章

  • Linux系统第四章文件权限读书笔记
    基本权限UGO:     1.UGO权限的含义:UGO是Linux文件权限管理中的基本概念,表示用户(User)、组(Group)、其他人(Others)。这三个范围定义了文件或目录的访问权限,控制着谁可以执行何种操作。User(用户):这是文件或目录的所有者。用户权限是最重要的,因为他们拥有最高级别的控制权......
  • 2023-2024-1 20231325 《计算机基础与程序设计》第三周学习总结
    目录作业信息教材学习内容总结1.《计算机科学概论》第二章,第三章2.《c语言程序设计》第二章作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的要求在哪里1.学习《计算机科学概论》第二章,第三章并完成云班课测试;2.学习《C语言程......
  • 解决uboot ping不通的硬件问题--Apple的学习笔记
    一,前言之前uboot偶尔第一次上电会ping通一次,之后就ping不通,我以为电源问题,好像也不是,然后我又认为是交叉网线问题,我用的可能是直连网线,之前用的交叉网线头子坏了我就丢了。于是网上买了新的交叉网线,到货后依然ping不通,而且一次都不行了。难道代码有问题,于是用了我之前的uboot代码,结......
  • python学习——回归模型
    从本篇开始记录一下我在研究生阶段的学习作业之成人死亡率预测(回归模型)1实验介绍1.1实验背景成年人死亡率指的是每一千人中15岁至60岁死亡的概率(数学期望)。这里我们给出了世界卫生组织(WHO)下属的全球卫生观察站(GHO)数据存储库跟踪的所有国家健康状况以及许多其他相关因素。要......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第三周学习总结
    2023-2024-120231320《计算机基础与程序设计》第三周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第三周作业)这个作业的目标<自学《计算机基础与......
  • 学习笔记5
    EXT2文件系统EXT2(TheSecondExtendedFileSystem)是Linux的标准文件系统,一直以来被广泛使用。EXT3是EXT2的扩展版本,增加了一个日志系统。文件系统背景Linux标准文件系统:EXT2是Linux的标准文件系统,多年来一直被广泛使用。EXT3的扩展:EXT3是EXT2的扩展版本,主要增加了一个日......
  • springboot的学习--bean的作用域
    bean默认会在springboot项目运行即容器启动时被创建,我们可以用@Lazy注解来延迟初始化,该注解可以将bean对象的创建延迟到第一次使用时创建 我们也可以使用@Scope注解来配置作用域,如果不配置,一般是@Scope(”singleton")默认单例,而使用@Scope("prototype")配置可以在每次使用该bean的......
  • vue学习六
    <divid="app6"><divv-for="iteminlist">{{item}}</div></div><script>constapp6=newVue({el:'#app6',data:{list:["1&qu......
  • C#基础学习
    简介C#是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的。C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NETFramework和.NETCore(完全开源,跨平台之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一......
  • 【高级机器学习算法】6.机器学习应用建议
    模型评估模型评估是机器学习中非常重要的一部分,它可以帮助我们评估模型的好坏,从而选择最优的模型。评估方式在机器学习中,我们通常会将数据集划分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的好坏。评估指标训练误差:模型在训练集上的误差,用于衡量模型在训练集上......