学习笔记4

关于知识点

知识点归纳

第七章

  • 7.1文件操作级别
    文件操作分为五个级别,按照从低到高的顺序排列如下:
    • 硬件级别
      包括fdisk、mkfs、fsck、碎片整理等。
    • 操作系统内核中的文件系统函数
    • 系统调用
    • I/O库函数
    • 用户命令
  • 7.2 文件I/O操作
  • 7.3 低级别文件操作
    • 7.3.1 分区
      一个块存储设备,如硬盘、U盘、SD卡等,可以分为几个逻辑单元,称为分区。
    • 7.3.2 格式化分区
      低级别文件操作中的格式化分区指的是对存储设备(如硬盘、闪存等)进行分区和格式化的操作。
      分区是将存储设备分割成一个或多个逻辑区域的过程。每个分区被视为独立的存储单元,并可以被独立地格式化和挂载。通过分区,可以更好地组织和管理存储设备上的文件和数据。
      格式化是对分区进行初始化的过程。在分区格式化之前,分区是无法直接存储数据的,因为它没有任何指定文件系统的结构。格式化的过程会在分区上创建文件系统结构,包括文件系统的元数据、目录结构和数据区域等。格式化还会清除分区中的所有数据,因此在进行格式化之前,需要事先备份重要的数据。
      格式化分区通常需要使用特定的工具或命令,如Windows中的磁盘管理工具、Linux中的fdisk和mkfs命令等。这些工具可以将存储设备分成多个分区,并选择合适的文件系统类型进行格式化,如FAT32、NTFS、EXT4等。格式化分区是进行文件操作的基础,确定了文件系统的结构和可用空间,使得文件可以被正确地存储和访问。
    • 7.3.3 挂载分区
      低级别文件操作中的挂载分区是指将格式化好的分区与操作系统的文件系统层关联起来,使得文件系统能够在这个分区上进行文件操作。
      当一个分区被挂载到操作系统上时,操作系统会识别这个分区上的文件系统类型,并将其作为一个独立的逻辑卷加入到文件系统的目录树中。挂载分区的过程包括两个主要步骤:
  1. 识别分区:操作系统首先需要能够识别分区的存在和文件系统的类型。对于硬盘等存储设备,可以通过设备节点(如/dev/sda1)来表示分区,并通过分区表来获取分区的信息。对于移动设备(如USB闪存驱动器),操作系统可能需要识别分区的文件系统类型;
  2. 挂载分区:一旦分区被识别,就可以将它挂载到指定的目录下。在Linux中,可以使用mount命令实现分区的挂载。这将在指定目录上创建一个挂载点,使得该目录成为了分区的入口点。此后,对该挂载点的文件操作就会直接映射到分区上,实现对分区的读写操作。
    挂载分区的目的是将分区中的文件系统与操作系统的文件系统层进行连接,使得文件系统能够直接访问和管理分区上的文件和目录。挂载分区通常发生在系统启动时,也可以在运行时根据需要进行手动挂载或取消挂载。通过挂载分区,用户可以方便地在操作系统中进行文件操作,如读取、写入、复制、删除等。
  • 7.4 EXT2文件系统简介
    • 7.4.1 EXT2文件系统数据结构
    • 7.4.2 超级块
      EXT2(Second Extended File System)中的超级块(Superblock)是文件系统的关键元数据结构之一。
  1. 超级块位置:每个EXT2文件系统都有一个超级块,通常位于文件系统的起始部分。超级块存储了关于文件系统的重要信息,如文件系统大小、块大小、inode(索引节点)数量、挂载计数等。
  2. 文件系统元数据:超级块中包含了文件系统的元数据,这些元数据描述了文件系统的整体结构和属性。例如,超级块中存储了文件系统的魔数(用于识别文件系统类型)、块大小、文件系统的总块数、已使用块数、inode的总数、已使用inode数等。
  3. 挂载计数:超级块中的挂载计数字段跟踪了文件系统当前被挂载的次数。这个计数用于避免多次挂载同一文件系统,以确保数据的一致性。挂载计数的增加和减少是在文件系统挂载和卸载时进行的。
  4. 日志信息:EXT2文件系统中的超级块也包含了与日志相关的信息,包括日志块的位置和大小。EXT2文件系统支持日志功能,以提高文件系统的可靠性和恢复能力。
  5. 块组描述符表:超级块中包含了块组描述符表的位置,块组是文件系统的逻辑分组,用于更好地组织和管理数据块。块组描述符表存储了每个块组的信息,如空闲块数量、空闲inode数量、块位图和inode位图的位置等。
  6. 备份超级块:EXT2文件系统通常会在文件系统的不同位置保存备份超级块,以提供文件系统恢复的支持。这些备份超级块具有与主超级块相同的信息,但位置略有不同。
    超级块是EXT2文件系统的核心元数据之一,它包含了文件系统的关键参数和属性信息,用于文件系统的管理和操作。
    • 7.4.3 块组描述符
      EXT2(Second Extended File System)文件系统中的块组描述符是存储在超级块(Superblock)之后的一个关键数据结构,用于描述和管理文件系统中的块组。
  7. 块组:EXT2文件系统将整个文件系统划分为多个块组。每个块组是文件系统的逻辑分组,包含一定数量的数据块、inode(索引节点)以及与块组相关的元数据。块组的划分有助于更好地组织和管理文件系统的数据。
  8. 块组描述符表:每个块组都有一个块组描述符表,块组描述符表存储了关于该块组的重要信息,如空闲块数量、空闲inode数量、块位图和inode位图的位置等。块组描述符表的位置在超级块中有记录。
  9. 块组描述符的结构:块组描述符通常由一个数据结构表示,包含多个字段,其中包括:
    • 块位图块号:存储了该块组中每个数据块的使用情况,用于标记哪些数据块已分配给文件或目录。
    • inode位图块号:存储了该块组中每个inode的使用情况,用于标记哪些inode已分配给文件或目录。
    • inode表块号:存储了该块组中的inode表的位置,inode表包含了所有inode的详细信息。
    • 空闲块数量:记录了该块组中尚未分配的数据块数量。
    • 空闲inode数量:记录了该块组中尚未分配的inode数量。
    • 目录数量:记录了该块组中的目录数量,有助于快速查找目录。
    • 文件数量:记录了该块组中的文件数量。
    • 文件系统状态:记录了文件系统的状态,包括是否需要进行文件系统检查(fsck)等信息。
  10. 多个块组描述符:每个文件系统可以包含多个块组,因此也会有多个块组描述符。这些块组描述符按顺序存储在文件系统中,每个块组描述符对应一个块组。
  11. 块组描述符表的位置:块组描述符表通常存储在超级块之后,它们的位置在超级块中有记录。超级块中的块组描述符表块号字段指定了块组描述符表的位置。
    块组描述符是EXT2文件系统中的重要数据结构,它们用于跟踪和管理文件系统中每个块组的状态和元数据。通过块组描述符,文件系统可以更有效地分配和管理数据块和inode,以及维护文件系统的一致性和可用性。
    • 7.4.4 位图
    • 7.4.5 索引节点
    • 7.4.6 目录条目

第八章

  • 8.1 系统调用
    系统调用(简称syscall)是一种允许进程进入Kmode以执行Umode不允许操作的机制。
  • 8.3 使用系统调用进行文件操作
  • 8.4 常用的系统调用
    • 文件操作:用于读取、写入、创建、删除文件等,并提供对文件属性的访问和修改。例如,open、close、read、write、unlink等系统调用。
    • 进程控制:用于创建、终止、等待进程,以及获取和修改进程的相关属性。例如,fork、exec、exit、wait等系统调用。
    • 内存管理:用于分配、释放内存,以及修改内存页的保护属性。例如,brk、mmap、munmap、mprotect等系统调用。
    • 信号处理:用于向进程发送信号以及处理接收到的信号。例如,kill、signal、sigaction等系统调用。
    • 网络通信:用于网络通信,包括创建、连接、发送、接收网络数据等。例如,socket、bind、listen、accept、send、recv等系统调用。
    • 进程间通信:用于不同进程之间的相互通信。例如,pipe、shmget、shmat、msgsnd、msgrcv等系统调用。
    • 时间和日期:用于获取当前时间和日期,以及进行时间和日期的格式转换。例如,time、gettimeofday、strftime等系统调用。
  • 8.5 链接文件
    • 8.5.1 硬链接文件
      硬链接文件是指多个文件系统中的目录项(文件名)指向同一个物理文件数据块的情况。在硬链接中,多个文件名被关联到相同的inode(索引节点),这意味着它们共享相同的数据内容和文件属性,包括文件的权限、所有者等。硬链接允许多个文件名指向相同的文件数据,而不会占用额外的磁盘空间。
  1. 多个文件名:硬链接允许在文件系统中使用多个不同的文件名来引用相同的文件数据。这些文件名可以存在于不同的目录中,甚至可以位于不同的文件系统中,但它们都指向同一个inode。
  2. 共享数据和属性:所有硬链接都共享相同的文件数据和文件属性,包括权限、拥有者、修改时间等。当一个硬链接文件被修改时,所有其他硬链接也会反映这些修改,因为它们实际上都指向相同的数据块。
  3. 删除文件的行为:删除硬链接文件并不会立即删除物理数据,只有当所有与inode相关的硬链接文件都被删除时,相关的磁盘空间才会被释放。
  4. inode:硬链接之所以能够实现,是因为文件系统中的每个文件都与一个唯一的inode相关联。inode包含有关文件的元数据信息和指向数据块的引用。多个文件名可以指向相同的inode,从而实现硬链接。
    硬链接对于节省磁盘空间和简化文件管理非常有用。然而,它们也有一些限制,例如不能用于目录(只能用于普通文件),不能跨文件系统创建硬链接,以及不能创建硬链接指向特殊文件(如设备文件或套接字)。
    • 8.5.2 符号链接文件
      符号链接文件(Symbolic Link或简称为symlink)是一种特殊的文件,它包含了对另一个文件或目录的引用。符号链接文件通过文件路径来指向目标文件或目录,而不是直接引用目标文件的inode。它允许在文件系统中创建一个指向其他文件或目录的别名。
  5. 软链接:符号链接文件是软链接,它只包含了对目标文件或目录的路径引用,而不是直接引用目标文件的inode。软链接类似于窗口快捷方式,可以将一个文件或目录链接到另一个位置。
  6. 跨文件系统:不同于硬链接,符号链接可以跨越文件系统边界,可以在不同的文件系统之间创建链接。这是因为它们不是直接引用目标文件的inode,而是通过文件路径来引用目标文件。
  7. 占用空间:符号链接文件本身很小,仅占用一些磁盘空间。符号链接不会复制或共享目标文件的内容,而只是提供了对目标文件的引用路径。
  8. 修改与删除:符号链接可以被修改或删除而不会改变目标文件的内容或属性。当符号链接被删除时,目标文件不受影响。
  9. 相对路径与绝对路径:符号链接可以使用相对路径或绝对路径来指向目标文件或目录。相对路径是相对于符号链接文件本身的路径,而绝对路径是从文件系统根目录开始的完整路径。
    符号链接文件在实际使用中非常常见。它们可以用于创建快捷方式、链接共享库或程序包、跨越文件系统边界引用文件等。
  • 8.6 stat系统调用
    • 8.6.1 stat文件状态
    • 8.6.2 stat结构体
    • 8.6.3 stat与文件索引节点
    • 8.6.4 文件类型和权限
    • 8.6.5 opendir-readdir函数
    • 8.6.6 readlink函数
    • 8.6.7 ls函数
  • 8.7 open-close-lseek系统调用
  • 8.8 read()系统调用
  • 8.9 write()系统调用

苏格拉底挑战

问题1:文件操作级别

问题2:链接文件

遇到问题以及实践过程截图

实践截图

问题1:

posted @ 2023-10-01 19:50  20211403左颖  阅读(6)  评论(0编辑  收藏  举报