• 学习笔记5


    第十一章 EXT2文件系统
        11.1 EXT2文件系统
          Linux一直使用EXT2作为默认文件系统
          EXT3是EXT2的扩展,增加主要内容是日志文件
          EXT3的最新扩展是EXT4,主要变化是磁盘块的划分
        11.2 EXT2文件系统数据结构
            11.2.1 通过mkfs创建虚拟磁盘
            11.2.2 虚拟磁盘布局
                Block#0:引导块
                B0是引导块,文件系统不会调用它
            11.2.3 超级块
                Block#1:超级块
                B1是超级块,用于容纳整个文件系统的信息
                其中大多数含义都非常明显,只有少数字段需要详细解释。
                    s_first_data_block:0表示4KB大小,1表示1KB大小
                    s_log_block_size:确定文件块大小
                    s_mnt_count:已挂载文件系统的次数
                    s_magic:标识文件系统类型的幻数
            11.2.4 块组描述符

           Block#2:块组描述符块

                EXT2将磁盘块分成几个组
                每个组有8192个块,每组用一个块组描述符结构体描述
            11.2.5 块和索引节点位图
                Block#8:块位图
                位图是用来表示某种项的位序列
                位图用于分配和回收项
                Block#9:索引节点位图
                一个索引节点就是用来代表一个文件的数据结构
                EXT2文件系统是使用有限数量的索引节点创建的
            11.2.6 索引节点

                 Block#10:索引开始节点

                    i_mode为u16或2字节无符号整数
                    i_size字段表示文件大小
                    i_mode字段前4位指定文件类型,接下来3位ugs表示文件的特殊用法
                    i_block[15]包含指向文件磁盘块的指针
                        直接块:i_block[0]至i_block[11],指向直接磁盘
                        间接块:i_block[12]指向一个包含256个块编号的磁盘块
                        双重间接块:i_block[13]指向一个指向256个块的块
                        三重间接块:i_block[14]
            11.2.7 数据块
                紧跟在索引节点块后面的是文件存储数据块
            11.2.8 目录条目
                dir_entry是一种可扩展结构
                名称字段包含1到255个字符,不含终止NULL
        11.3 邮差算法
            11.3.1 C语言中的Test-Set-Clear位
            在C语言中,最小的可寻址单元是一个字符或字节
            11.3.2 将索引节点号转换为磁盘上的索引节点
            在EXT2文件系统中,每个文件都有一个唯一的索引节点结构
        11.4 编程示例
            11.4.1 显示超级块
            11.4.2 显示位图
            11.4.3 显示根索引节点
            11.4.4 显示目录条目
        11.5 遍历EXT2文件系统树
            11.5.1 遍历算法
                (1)读取超级块
                (2)读取块组描述符块,以访问组0描述符
                (3)读取InodeBeginBlock,获取/的索引节点
                (4)将路径名标记为组件字符串
                (5)从(3)中的根索引节点开始,在其数据块中搜索name[0]
                (6)使用索引节点号ino来定位相应的索引节点
                (7)重复(5)、(6)编写搜索函数
            11.5.2 将路径名转换位索引节点
                INODE *path2inode(int fd,char *pathname)
            11.5.3 显示索引节点磁盘块
        11.6 EXT2文件系统的实现
            11.6.1 文件系统的结构
            11.6.2 文件系统的级别
                大致分为三个级别
                第一级别实现了基本文件系统树
                第二级别实现了文件内容读/写函数
                第三级别实现了文件系统的挂载、卸载和文件保护
        11.7 基本文件系统
            11.7.1 type.h文件
                这类文件包含EXT2文件系统的数据结构类型
                此外还包含打开文件表、挂载表、PROC结构体和文件系统常数
            11.7.2 global.c文件
                这类文件包含文件系统的全局变量
            11.7.3 实用程序函数
            11.7.4 mount-root
            11.7.5 基本文件系统的实现
        11.8 1级文件系统函数
            11.8.1 mkdir算法
                创建一个带路径名的新目录
            11.8.2 creat算法
                创建一个空的普通文件
            11.8.3 mkdir-creat算法
            11.8.4 rmdir算法
            11.8.5 rmdir的实现
            11.8.6 link算法
            11.8.7 unlink算法
                创建一个从new_file到old_file的符号链接
            11.8.8 symlink算法
                读取符号文件的目标文件名并返回目标文件名的长度
            11.8.9 readlink算法
            11.8.10 其他1级函数
        11.9 2级文件系统函数
            11.9.1 open算法
            11.9.2 lseek
            11.9.3 close算法
        close(int fd)操作可关闭文件描述符
            11.9.4 读取普通文件
            11.9.5 写普通文件
        11.10 3级文件系统
            11.10.1 挂载算法
        mount filesys mount_point
            11.10.2 卸载算法
            11.10.3 交叉挂载点
            11.10.4 文件保护
        在Unix/Linux中,可通过文件索引节点中的权限位实现文件保护
            11.10.5 实际uid和有效uid
        在Unix/Linux中,每个进程都有一个实际uid和一个有效uid

            11.10.6 文件锁定

  • 相关阅读:
    mysql的binlog日志格式
    Git的基本使用
    Tomcat安装部署
    [ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)]
    云盘的创建及使用
    ntp服务器配置
    如何更改mysql的密码策略?
    Centos6 升级glibc-2.17,解决Requires: libc.so.6(GLIBC_2.14)(64bit)错误解决方法
    Git的基本使用
    UES
  • 原文地址:https://www.cnblogs.com/Ye-fen/p/15418689.html
Copyright © 2020-2023  润新知