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

第五周学习笔记

时间:2023-10-15 12:22:32浏览次数:44  
标签:文件 EXT2 文件系统 笔记 学习 索引 第五 挂载 节点


自学教材第11章,提交学习笔记(10分),评分标准如下 1. 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分) “我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题” 核心是要求GPT:“请你以苏格拉底的方式对我进行提问” 然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?” 如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?” GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。 2. 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分) 3. 实践过程截图,代码链接(2分) 4. 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)
 

一、课本第十一章内容总结

第十一章 EXT2文件系统

1.EXT2文件系统

在第七章中已经简要学习过EXT2系统的一些基本知识。EXT2是Linux的默认文件系统。

2.EXT2文件系统数据结构

2.1创建虚拟磁盘

命令mkd2fs [-b blksize -N ninodes] device nblocksk可以用来创建带有nblocks个块和ninodes个索引节点的EXT2文件系统,设备可以是真实设备,也可以是虚拟磁盘文件。

如dd if=/dev/zero of=vdisk bs=1024 count=1440

mke2fs vdisk 1440

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

2.2虚拟磁盘布局

 Block#0是引导块,用来容纳一个引导程序,从磁盘引导操作系统。

Block#1:超级块,容纳整个文件系统信息。以下为一些重要字段。

Block#2:块组描述符,EXT2将磁盘块分成几个组,每组有8192个块,每组用一个块组描述符结构体来描述。

Block#8:块位图,用来表示某种项的位序列。

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

Block#10:索引开始节点,每个文件都用一个128字节的唯一索引节点结构体表示。

 其中i_block[15]包含指向文件磁盘块的指针,这些磁盘块有:

直接块、间接块、双重与三重间接块。

随后的是文件存储数据块

3.邮差算法

一个城市有M个街区,编号从0到M-1.每个街区有N座房子,编号从0到N-1.每座房子有一个唯一的街区地址,用(街区,房子)表示。已知某个街区地址BA=(街区,房子),怎么把它转换为线性地址LA,反过来,已知线性地址,怎么把它转换为街区地址?

如果都从0开始计数,

Linear_address LA=N*block + house;
Block_address BA=(LA/N,LA%N);

这就是邮差算法。

4.编程示例

显示超级块

(1)打开虚拟磁盘:int fd = open("vdisk",O_RDONLY)

(2)将超级块读入

char buf[1024];

lseek(fd,1024,SEEK_SET);

int n = read(fd,buf,1024)

(3)让ext2结构体指向buf【】,然后利用指针访问结构体的各个字段。

还有显示位图等操作,详细见课本271页。

5.遍历EXT2文件系统树

遍历算法

(1)读取超级块。

(2)读取快组描述符。

(3)读取InodeBeginBlock,获取/的索引节点。

(4)将路径名称记为组件字符串。

(5)从(3)的跟索引节点开始搜索。

(6)使用索引节点号ino定位相应的索引节点。

6.EXT2文件系统的实现

 (1)是当前运行进程的 PROC结构体。在实际系统中,每个文件操作都是由当前执行的进程决定的。每个进程都有一个cwd,指向进程当前工作目录(CWD)的内存索引节点s 它还有一个文件描述符数组 fd【】,指向打开的文件实例。
(2)是文件系统的根指针。它指向内存中的根索引节点。当系统启动时,选择其中一个设备作为根设备,它必须是有效的 EXT2文件系统。根设备的根索引节点(inode #2)作为文件系统的根(/)加载到内存中。该操作称为"挂载根文件系统"。
(3)是一个openTable条目。当某个进程打开文件时,进程 fd数组的某个条目会指向openTable,openTable 指向打开文件的内存索引节点。
(4)是内存索引节点。当需要某个文件时,会把它的索引节点加载到minode槽中以供使用。因为索引节点是唯一的,所以在任何时候每个索引节点在内存中都只能有一个副本。在minode中,(dev; ino)会确定索引节点的来源,以便将修改后的索引节点写回磁盘。refCount字段会记录使用minode 的进程数。
dirty字段表示索引节点是否已被修改。挂载标志表示索引节点是否已被挂载,如果已被挂载,mntabPtr将指向挂载文件系统的挂载表条目。lock字段用于确保内存索引节点一次只能由一个进程访问,例如在修改索引节点时,或者在读/写操作过程中。
(5)是已挂载的文件系统表。对于每个挂载的文件系统,挂载表中的条目用于记录挂载的文件系统信息,例如挂载的文件系统设备号。在挂载点的内存索引节点中、挂载标志打开,mntabPtr指向挂载表条目。在挂载表条目中,mntPointPtr指向挂载点的内存索引节点。后面将会讲到,这些双链接指针允许我们在遍历文件系统树时跨越挂载点。此外,挂载表条目还可能包含挂载文件系统的其他信息,例如超级块、块组描述符、位图和索引节点启动块的值,以便快速访问。如果任何缓存项有修改,当卸载设备时,必须将它们写回设备。

系统级别:分为三级,第一级包含基本文件系统树,第二级实现文件内容读写,第三级实现文件系统的挂载、卸载和文件保护。

7.基本文件系统

type.h

这类文件包含 EXT2文件系统的数据结构类型,比如超块、组描述符、索引节点和目录条目结构。此外,它还包含打开文件表、挂载表、PROC结构体和文件系统常数。

global.c

这类文件包含文件系统的全局变量

8.1级文件系统函数

mkdir算法

mkdir pathname

创建一个带路径名的新目录。

creat算法

创建空的普通文件

除此外还有link、unlink算法等。

9.2级文件系统函数

open算法

int open(char *filename,int flags)

打开一个文件进行读写。

还有lseek、close等算法。

10.3级文件系统函数

此处包括挂载算法、卸载算法等。

 

二、课堂代码实践

 

 

三、苏格拉底挑战

 

标签:文件,EXT2,文件系统,笔记,学习,索引,第五,挂载,节点
From: https://www.cnblogs.com/liTCabcAbc/p/17765490.html

相关文章

  • 2023-2024-1 20211306 密码系统设计与实现课程学习笔记5
    20211306密码系统设计与实现课程学习笔记5任务详情自学教材第11章,提交学习笔记知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题......
  • 2023-2024-1 20231327 司宏林 《计算机基础与程序设计》第3周学习总结
    学期(2023-2024-1)学号(20231327)《计算机基础与程序设计》第3周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2023-2024-1计算机基础与程序设计第3周作业)这个作业的目标<写上具体方面>......
  • AT_agc038_c 做题笔记
    题目链接莫反好题,不仅仅是莫反,还有很多思维含量。由于推式子过程太过于漫长了,所以我仅仅讲下大概。题目是给你一个长度为$n$的数组,请求出$\sum\limits_{i=1}^n\sum\limits_{j=i+1}^n\operatorname{lcm}(A_i,A_j)$莫反通常是对于值域考虑,直接推是不可行的,所以开一个桶$b$......
  • Python初学者指南:一步一步学习编程
    引言:欢迎来到Python的世界!Python是一种高级编程语言,以其简洁、易读的代码和广泛的应用领域而闻名。无论你是首次接触编程,还是已经熟悉其他语言,Python都是一个极好的选择。本文将为你提供一个Python的初学者指南,帮助你一步一步开始你的编程旅程。一、为什么选择Python?Python的设计......
  • iptables学习
    一、组成iptables是一种数据包过滤系统由netfilter(内核态)和iptables(用户态)组成工作在网络层,针对IP数据包。体现在对包内的IP地址、端口等信息的处理上二、iptables/netfilter关系1.netfilter:属于“内核态”(KernelSpace,又称为内核空间)的防火墙功能体系是内核的一部......
  • 20211128《信息安全系统设计与实现》第十一章学习笔记
    一、任务内容1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请你以苏格拉底的方式对我进行提问”然后GPT......
  • 学习笔记:TPGNN
    MultivariateTime-SeriesForecastingwithTemporalPolynomialGraphNeuralNetworks利用时间多项式图神经网络的多时间序列预测期刊:NIPS2022作者:YijingLiu, QinxianLiu, Jian-WeiZhang, HaozheFeng, ZhongweiWang, ZihanZhou, WeiChen论文:https://openrevie......
  • 第十一章学习笔记
    EX2文件系统数据结构EXT2文件系统TheSecondExtendedFileSystem(ext2)文件系统是linux系统中的标准文件系统。多年来,Linux一直使用EXT2作为默认文件系统。EXT3是EXT2的扩展。EXT3中增加的主要内容是一个日志文件,它将文件系统的变更记录在日志中。日志可###在文件系统崩溃时......
  • java学习笔记day03
    java学习笔记day03数据类型public class 数据类型 {  public static void main(String[] args){    //整数类型    byte num1 = 10;    short num2 = 200;    int num3 = 3000;    long num4 = 400000L;    ......
  • 学习笔记5
    第十一章EXT2文件系统创建虚拟磁盘mke2fs[-bblksize-Nninodes]devicenblocks虚拟磁盘布局Block#0:引导块B0是引导块,文件系统不使用超级块Block#1超级块B1是超级块,用于容纳整个文件系统的信息超级块的重要字段u32s_inodes_count://文件系统中节点总数......