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

学习笔记5

时间:2023-10-15 20:11:59浏览次数:38  
标签:count 知识点 文件系统 笔记 学习 u32 superblock include

学习笔记: EXT2 文件系统

知识点归纳

EX2文件系统数据结构

通过mkfs创建虚拟硬盘

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

虚拟磁盘布局

超级块

Block#1:超级块,容纳整个文件系统的信息

    u32 s_blocks_count://文件系统中块总数
    u32 s_r_blocks_count://为超级用户保留的块数
    u32 s_free_blocks_count: //文件系统中空闲块总数
    u32 s_mtime://文件系统的挂接时间
    u32 s_wtime://最后一次对该超级块进行写操作的时间
    u32 s_magic ://魔数签名,用于确定文件系统版本的标志
    u32 s_inodes_per_group://表示每个组块的inode数目,查找文件inode所在块的位置很重要
    u32 s_mnt_count://文件系统挂接计数
    u32 s_max_mnt_count://文件系统最大挂接计数
    u32 s_state://文件系统的状态
    u16 s_magic;//魔术签名


块组描述符

Block#2:块组描述符,每组用一个块组描述符结构体来描述。

块和索引节点位图

BLOCK#8:块位图
BLOCK:9:索引节点位图,一个索引节点就是代表一个文件的数据结构。

索引节点

BLOCK#10:索引节点

直接块
间接块
双重间接块
三重间接块

数据块

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

目录条目

包含dir_entry结构,是一种可扩充结构

3级文件系统函数

支持系统文件支持文件系统的挂载、卸载和文件保护

挂载算法

mount filesys mount_point
可将某个文件系统挂载到mount_point目录上
卸载算法同理

卸载算法

交叉挂载点

*向下遍历
*向上遍历

文件保护

9个权限位

文件系统项目拓展

多个组-4KB大小块-管道文件-I/O缓冲

实践##

编程项目:编写一个c程序来显示设备上EXT2文件系统的块组描述符
相关的代码:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <linux/fs.h>

int main() {
    int fd = open("/dev/sda1", O_RDONLY);  // 替换为你的设备路径,比如 "/dev/sdb1"
    if (fd == -1) {
        perror("open");
        return 1;
    }

    struct ext2_super_block superblock;
    if (ioctl(fd, EXT2_IOC_SUPERBLOCK, &superblock) == -1) {
        perror("ioctl");
        close(fd);
        return 1;
    }

    printf("Block Group Descriptor:\n");
    printf("Block Bitmap Block: %u\n", superblock.s_block_bitmap);
    printf("Inode Bitmap Block: %u\n", superblock.s_inode_bitmap);
    printf("Inode Table Block: %u\n", superblock.s_inode_table);
    printf("Free Blocks Count: %u\n", superblock.s_free_blocks_count);
    printf("Free Inodes Count: %u\n", superblock.s_free_inodes_count);
    printf("Used Directories Count: %u\n", superblock.s_used_dirs_count);

    close(fd);
    return 0;
}

运行结果:

苏格拉底挑战

  1. 知识点1:EXT2文件系统数据结构

    我在学习EXT2文件系统数据结构知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。

 - 针对我EXT2文件系统数据结构知识点,我理解了吗?

 - 我的回答结束了,请对我的回答进行评价总结。

  1. 知识点2:三级文件操作系统

    我在学习使用三级文件操作系统知识点,请你以苏格拉底的方式对我进行提问,一次一个问题。

    • 针对我三级文件操作系统知识点,我理解了吗?

    • 我的回答结束了,请对我的回答进行评价总结。

问题与解决思路

在学习过程中,我遇到了以下问题,并使用chatgpt等AI工具解决:

  1. 问题1:缺少必要的头文件库


gpt回答添加头文件#include <ext2fs/ext2_fs.h>

标签:count,知识点,文件系统,笔记,学习,u32,superblock,include
From: https://www.cnblogs.com/zqr031029/p/17764968.html

相关文章

  • 2023-2024-1 20231321王曦轶 《计算机基础与程序设计》第3周学习总结
    2023-2024-120231321王曦轶《计算机基础与程序设计》第3周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第三周作业)这个作业的目标<学习计算机......
  • 20211314王艺达学习笔记5
    第十一章EXT2文件系统一.梗概多年来,Linux一直使用EXT2(Card等1995)作为默认文件系统。EXT3(EXT3,14)是EXT2的扩展。EXT3中增加的主要内容是一个日志文件,它将文件系统的变更记录在日志中。日志可在文件系统崩溃时更快地从错误中恢复。没有错误的EXT3文件系统与EXT2文件......
  • jvm学习
    一、什么是JVMJVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM屏蔽了与具......
  • Linux第11章学习笔记
    第十一章学习笔记##EXT2文件系统多年来,Linux一直使用EXT2作为默认文件系统EXT3是EXT2的拓展。EXT3中增加的主要内容是一个日志文件EXT4的主要变化是磁盘块的分配EXT2文件系统数据结构通过mkfs创建虚拟磁盘创建了一个带有nblocks个块(每个块大小blksize字节)和ninodes个索引......
  • 第六周学习笔记(学习笔记5)
    第十一章EXT2文件系统—学习笔记〇、本章思维导图一、文件系统数据结构通过mkfs创建虚拟磁盘在Linux下,命令mke2fs[-bblkesize-Nninodes]devicenblocks在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。设备可以是真实......
  • 2023-2024-1 20231304 《计算机基础与程序设计》第三周学习总结
    2023-2024-120231304《计算机基础与程序设计》第三周学习总结作业信息这个作业属于哪个课程2023-2024-1计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第三周作业这个作业的目标学习计算机概论第二三章并完成云班课测试作业正文20......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记5(必做)
    学习笔记5EXT2文件系统概述1级和2级文件系统函数实践过程EXT2文件系统概述EXT2(SecondExtendedFileSystem)是Linux操作系统早期使用的文件系统,它是EXT文件系统家族的第二个版本,于1993年首次引入。在现代Linux系统中已经被后续版本的EXT文件系统(如EXT3和EXT4)所取代。1.......
  • Vue的学习
    为什么需要前端框架当前前端开发的状态前端基础语言html:构建页面内容结构css:美化和布局页面内容Javascript:提供交互能力和动态三者整合就是我们看到的网页页面---所有的页面和页面功能都能完成现在能做什么浏览器展示的网页+小程序网站,网页游戏等等当前的状态有什么问题基......
  • 2023-2024-1 20231305 《计算机基础与程序设计》第三周学习总结
    2023-2024-120231305《计算机基础与程序设计》第三周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第一周作业)这个作业的目标<自学教材并完......
  • Linux笔记(2)
    文件权限 文件的权限针对三类对象进行定义owner属主,缩写ugroup属组,缩写gother其他,缩写o 每个文件针对每类访问者定义了三种主要权限r:Read读w:Write写x:eXecute执行 修改文件访问权限的方法指令:chmod    设置文件的访问权限。格式:chmodwhooptper......