首页 > 其他分享 >第五周学习笔记

第五周学习笔记

时间:2022-10-01 20:45:08浏览次数:85  
标签:EXT2 文件系统 笔记 街区 学习 索引 第五 磁盘 节点

EXT2文件系统

知识点归纳以及自己最有收获的内容

1.EXT2文件系统

Linux一直使用EXT2(Card等1995)作为默认文件系统;EXT3中增加的主要内容是日志文件;EXT4增加:磁盘块的分配;

2.EXT2文件系统数据结构

2.0EXT2在硬盘上的索引节点的数据结构如下:


EXT2通过索引节点中的数据块指针数组进行逻辑块到物理块的映射。在EXT2索引节点中,数据块中数组共有15项,前12个为直接指针,后三个分别为“一次间接指针”、“二次间接指针”、“三次间接指针”,EXT2默认的物理块大小为1KB,块地址占4个字节,所以每个物理块可以存储256个地址。

2.1通过mkfs创建虚拟磁盘

mke2fs [-b blksize -N ninodes] device nblocks
在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。

2.2虚拟磁盘布局

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

2.3超级块

Block#1:超级块(在硬盘区分中字节偏移量为1024)B1是超级块,用于容纳整个文件系统的信息。

2.4块组描述符

Block#2:块组描述符块(硬盘上的s_first_data_block+1)
Block#8:块位图
Block#9:索引节点位图

2.5索引节点

Block#10:索引(开始)节点,每个文件用一个128字节(EXT4中是256字节)的唯一索引节点结构体表示

2.6数据块

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

2.7目录条目

目录包含dir_entry结构

3邮差算法

例:一个城市有M个街区,编号从0到M-1。每个街区有N座房子,编号从0到N-1。每座房子有一个唯一的街区地址,用(街区,房子)表示,其中0≤街区<M,0≤房子<N。外人不熟悉该街区寻址方案,采用线性方法将房子地址编为0,1,…,N-1,N,N+1等。已知某个街区地址BA=(街区,房子),如何转换为线性地址LA,相反,已知线性地址,如何转换为街区地址?
LA=N*block + house;
BA=(LA/N, LA%N); (只有从0开始计数转换才有效)

4编历EXT2文件系统树

编历一个EXT2文件系统和一个文件的路径名,例如/a/b/c,问题是如何找到这个文件。查找文件相当于查找其索引节点。

4.1编历算法

(1)读取超级块;
(2)读取块组描述符块(1+s_first_data_block),以访问组0描述符;
(3)读取InodeBeginBlock,获取/的索引节点,即INODE#2;
(4)将路径名标记为组件字符串,假设组件数量为n;
(5)从(3)中的根索引节点开始,在其数据块中搜索name[0];
(6)使用索引节点号ino来定位相应的索引节点。Ino从1开始计数,使用邮差算法计算包含索引节点的磁盘块及其在该块中的偏移量;
(7)由于(5)~(6)步将会重复n次,所以最好编写一个搜索函数。

4.2将路径名转换为索引节点

已知一个包含EXT2文件系统和路径名的设备,例如/a/b/c/d,编写一个C函数:INODE *path2inode(int fd, char *pathname);返回一个指向文件索引节点的INODE指针;如果文件不可访问,则返回0。

4.3显示索引节点磁盘块

编写一个C程序showblock,可打印文件的所有磁盘块(编号);

5 EXT2文件系统的实现

 

实践部分

在一个名为vdisk的虚拟磁盘文件上创建一个EXT2文件系统,有1440个大小为1KB的块

 

 

问题与解决思路

为什么用df命令比du命令统计整个磁盘的已用空间更快?

详情可参照:

http://www.runoob.com/linux/linux-comm-df.html
http://www.runoob.com/linux/linux-comm-du.html
因为df命令只需要查看每个块组的块位图即可,而不需要搜遍整个分区。相反,用du命令查看一个较大目录的已用空间就非常慢,因为不可避免地要搜遍整个目录的所有文件。

标签:EXT2,文件系统,笔记,街区,学习,索引,第五,磁盘,节点
From: https://www.cnblogs.com/sztsao/p/16704433.html

相关文章

  • ROS-MoveIt学习记录
    教程古月居:7ROS理论与实践_.Moveit!机械臂控制_视频_哔哩哔哩_bilibili对应源码:Whiffe/arm-of-robot-using-Moveit-in-ros-gazebo-rviz(github.com)问题ImportErr......
  • markdown语法学习
    借鉴于别人:1:https://www.cnblogs.com/jaysonteng/p/12996671.html2:https://www.cnblogs.com/dzlua/p/11170373.html此文章对应效果:【点击这里】##什么是MarkdownMark......
  • markdown语法学习预览
    借鉴于别人:1:https://www.cnblogs.com/jaysonteng/p/12996671.html2:https://www.cnblogs.com/dzlua/p/11170373.html此文章对应效果:【点击这里】什么是MarkdownMarkdow......
  • 机器学习编译、TVM感性理解
    课程主页首先网上有很多关于这个课程的介绍,所以不直接陈述详细内容了,写一些自己的理解,可能不会仅限于当前机器学习编译课程,可能会用到TVM的理解。网上诸多大佬都有阐述,例......
  • Javaweb学习笔记第十四弹---对于Cookie和Filter的学习
    ApacheTomcat-TomcatNativeDownloads会话追踪技术会话:打开浏览器,建立连接,直到一方断开连接,会话才会结束;在一次会议中,可以有多次请求。会话追踪:在多次请求间,共享数......
  • 学习笔记——Django项目中的请求与响应
    2022-10-01ALLOWED_HOSTS"ALLOWED_HOSTS"的含义:它是指允许放在“ALLOWED_HOSTS”的主机进行访问后端“ALLOWED_HOSTS”的说明:它一般默认是“127.0.0.1”,如果......
  • 【mybatis框架学习】三、invoke方法逻辑编排
    上一篇一直有提高一个词,编排。都说编程,编程,编排也就容易理解了。 像我们常用的框架,spring、mybatis,都是将一些固有的流程,简化,抽象,编排起来,在留有可拓展的接口之后,全部......
  • 2022-2023-1 20221404 《计算机基础与程序设计》第5周学习总结
    2022-2023-120221404《计算机基础与程序设计》第5周学习总结作业信息班级链接(2022-2023-1-计算机基础与程序设计)作业要求(2022-2023-1计算机基础与程序设计第......
  • 学习ASP.NET Core Blazor编程系列四——迁移
    学习ASP.NETCoreBlazor编程系列一——综述学习ASP.NETCoreBlazor编程系列二——第一个Blazor应用程序(上)学习ASP.NETCoreBlazor编程系列二——第一个Blazor应......
  • 软件技术基础学习笔记(1)——自我介绍与课程展望
    软件技术基础学习笔记(1)——自我介绍与课程展望软件技术基础首页-22软件基础-浙江理工大学-班级博客-博客园这个作业的目标<在做自我介绍与课程展望的同......