2023-2024-1 20211306 密码系统设计与实现课程学习笔记5

20211306 密码系统设计与实现课程学习笔记5

任务详情
自学教材第11章,提交学习笔记

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

一、第十一章(EXT2)学习总结

实现一个完全与Linux兼容的完整EXT2文件系统。只要充分理解了一个文件系统,那么就可以轻松改编其他任何文件系统。

  • EXT2文件系统

多年来,Linux一直使用EXT2(Card等1995)作为默认文件系统。EXT3(EXT3,2014)是EXT2的扩展。EXT3中增加的主要内容是一个日志文件,它将文件系统的变更记录在日志中。日志可在文件系统崩溃时更快地从错误中恢复。没有错误的 EXT3 文件系统与EXT2文件系统相同EXT3的最新扩展是EXT4(Cao等2007)。EXT4的主要变化是磁盘块的分配。在EXT4中,块编号为48位。EXT4不是分配不连续的磁盘块,而是分配连续的磁盘块区,称为区段。除了这些细微的更改之外,文件系统结构和文件操作保持不变。本书的目的是讲授文件系统的原理。主要目标并非实现大的文件存储容量,而是重点论述文件系统设计和实现的原则,强调简单性以及与Linux的兼容性。为此,我们以ETX2作为文件系统。

  • EXT2文件系统数据结构

通过mkfs创建虚拟磁盘

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

可以在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。设备可以是真实设备,也可以是虚拟磁盘文件。如果未指定 blksize,则默认块大小为1KB。如果未指定ninoides,mke2fs将根据nblocks计算一个默认的ninodes数。得到的EXT2文件系统可在 Linux 中使用。
举例:dd if=/dev/zero of=vdisk bs=1024 count=1440
mke2f vdisk 1440
可在一个名为vdisk的虚拟磁盘文件上创建一个EXT2文件系统,有1440个大小为1KB的块。

虚拟磁盘布局

上述EXtend2布局如图

一开始,我们先使用这个基本文件系统布局进行假设。在适当的时候,我们会指出些变化,包括硬盘上大型 EXT2/3 文件系统中的变化。下面来简要解释一下磁盘块的内容。

Block#0:引导块

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

超级块

s_log_block_size

确定文件块大小,为1KB*(2**s_log_block_size),例如:0表示1KB块大小,1表示2KB块大小,2表示4KB块大小等。最常用的块大小是用于小文件系统的1KB和用于大文件系统的4KB。

s_mnt_count

已挂载文件系统的次数。当挂载计数达到max_mnt_count时,fsck会话将被迫检查文件系统的一致性。

s_magic

标识文件系统类型的幻数。EXT2/3/4文件系统的幻数是0xEF53。

块组描述符

块和索引节点位图

索引节点



数据块

目录条目

  • 3级文件系统

挂载算法

命令:

mount filesys mount_point

卸载算法

交叉挂载点


文件保护

实际uid和有效uid

文件锁定

二、代码实现

三、苏格拉底挑战










四、Linux代码实现

  • man




sort+ctrlD

sort -r +CtrlD



man -k + 关键字

  • who






五、问题解决


posted @ 2023-10-15 11:59  20211306丁文博  阅读(7)  评论(0编辑  收藏  举报