文件管理第六章课后习题答案

发布时间 2023-12-03 15:53:59作者: 郭培鑫同学

思考题:

  1. 分别给出卷、块、记录、文件的定义并说明它们之间的关系。
  1. 卷(Volume):

    • 定义: 一个卷是一个数据存储单元,通常是指一个物理存储介质,如硬盘、磁带或光盘。卷是一个相对独立的数据集合,可以包含一个或多个文件或记录。
    • 关系: 一个卷可以包含多个块、记录或文件。
  2. 块(Block):

    • 定义: 块是存储介质上的最小可分配单位,通常由一组相邻的字节组成。文件系统将数据划分为块进行管理,这样可以更有效地存储和检索数据。
    • 关系: 一个卷由多个块组成,块是存储介质的基本存储单位。文件通常由多个块组成。
  3. 记录(Record):

    • 定义: 记录是数据的逻辑单元,它包含一组相关的字段或属性。记录通常被组织成表格或数据表,并且在数据库中经常使用。在文件系统中,记录是文件中的一组相关数据。
    • 关系: 一个文件由多个记录组成,每个记录包含不同的数据字段。
  4. 文件(File):

    • 定义: 文件是一个逻辑上的数据单元,它包含相关联的数据和元数据。文件可以存储在一个或多个卷上,而且可以进一步划分为记录或块。
    • 关系: 一个文件可以包含多个记录或块,而一个卷可以包含多个文件。

总体而言,卷是一个物理存储单位,块是存储介质上的基本单元,记录是数据的逻辑单元,而文件是逻辑上组织的数据集合。文件可以存储在一个卷上,而文件内部可以由多个记录或块组成。这些概念在计算机科学和信息管理中用于组织和管理数据。

  1. 什么是文件的逻辑结构?它有哪几种组织方式。

什么是文件的逻辑结构:

文件的逻辑结构是指在文件中组织和存储数据的方式,它描述了文件中数据元素之间的关系和组织方式。逻辑结构与物理结构不同,物理结构关注数据在存储介质上的存储方式,而逻辑结构关注数据在文件中的组织方式。

文件的逻辑结构的几种常见组织方式:

  1. 顺序结构(Sequential Structure):

    • 数据元素按照其逻辑顺序存储在文件中,这种结构是最简单的。记录依次排列,可以按照记录在文件中的相对位置来访问。
  2. 链式结构(Linked Structure):

    • 数据元素通过指针或链接字段相互连接,形成链表的结构。每个数据元素中包含指向下一个元素的指针,这样可以实现灵活的插入和删除操作。
  3. 索引结构(Indexed Structure):

    • 利用索引表来组织文件中的数据元素。索引表中的每个条目包含关键字和对应数据元素的指针,通过索引表可以快速定位和访问文件中的记录。
  4. 散列结构(Hashed Structure):

    • 使用散列函数将关键字映射到文件中的地址,以实现直接访问。这种结构通过散列函数将关键字转化为文件中的地址,使得数据的查找过程非常高效。
  5. 多级结构(Multilevel Structure):

    • 文件的数据元素按照多个级别进行组织。通常采用树状结构,例如B树或B+树,以提高查找和访问效率。
  1. 什么是文件的物理结构?它有哪几种组织方式?

什么是文件的物理结构:

文件的物理结构是指在存储介质上(例如硬盘、磁带、光盘等)对数据进行组织和存储的方式。物理结构关注数据在存储介质上的实际存储方式,而逻辑结构则关注数据在文件中的逻辑组织方式。

文件的物理结构的几种常见组织方式:

  1. 顺序结构(Sequential Structure):

    • 数据元素按照其在文件中出现的顺序依次存储在存储介质上。这是一种简单而直观的组织方式,适用于顺序访问的场景。
  2. 链式结构(Linked Structure):

    • 数据元素通过指针或链接字段相互连接,形成链表的结构。在物理结构中,数据元素的存储位置不一定是连续的,通过指针关联起来。
  3. 索引结构(Indexed Structure):

    • 利用索引表来组织文件中的数据元素。在物理结构中,索引表通常存储在磁盘上,而实际的数据元素可能分散存储在不同位置。
  4. 散列结构(Hashed Structure):

    • 使用散列函数将数据元素的关键字映射到存储介质上的地址。这样可以实现直接访问,但在处理冲突时需要考虑解决策略。
  5. 集中式结构(Clustered Structure):

    • 多个相邻的数据元素被组织在一起形成簇(cluster),在存储介质上形成连续的存储空间。这样可以提高读取效率,因为可以一次性读取多个相邻的数据元素。
  6. 多级结构(Multilevel Structure):

    • 文件的数据元素按照多个级别进行组织,通常采用树状结构。例如,B树和B+树是常用的多级结构,用于提高查找和访问效率。

4.** 什么是按名存取?文件系统如何实现文件的按名存取?**

什么是按名存取:

按名存取是一种文件访问的方式,其中文件通过其唯一的名字或标识符而不是物理位置来访问。在按名存取的文件系统中,用户可以通过文件名来引用文件,而无需关心文件在存储介质上的具体位置。

文件系统实现按名存取的主要步骤包括:

  • 文件创建: 用户通过指定文件名来创建新文件。文件系统会在适当的目录中注册文件名,并为文件分配唯一的标识符,同时创建文件控制块记录文件的元数据。
  • 文件读取和写入: 用户可以通过文件名直接读取和写入文件,而不用关心文件在存储介质上的具体位置。文件系统根据文件名查找相应的文件控制块,从而得知文件的物理位置,并进行读取或写入操作。
  • 文件删除: 用户可以通过文件名来删除文件。文件系统会在相应目录中删除文件名的注册信息,并释放文件占用的存储空间。
  1. 什么是文件控制块(FCB)?

文件控制块(File Control Block,FCB)是文件系统中用于管理和维护文件元数据信息的数据结构。每个文件在文件系统中都对应一个相应的文件控制块。文件控制块存储了关于文件的各种属性和控制信息,使得文件系统能够有效地管理和操作文件。

通常,文件控制块包含以下主要信息:

  1. 文件名(File Name): 文件的唯一标识符,用于在文件系统中区分不同的文件。

  2. 文件类型(File Type): 指示文件的类型,例如文本文件、图像文件、可执行文件等。

  3. 文件大小(File Size): 记录文件所占用的存储空间大小,以字节为单位。

  4. 创建时间(Creation Time): 文件的创建时间戳,表示文件何时被创建。

  5. 修改时间(Modification Time): 文件的最后修改时间戳,表示文件最后一次被修改的时间。

  6. 访问时间(Access Time): 文件的最后访问时间戳,表示文件最后一次被访问的时间。

  7. 文件权限和属性(File Permissions and Attributes): 指定了文件的读取、写入和执行权限,以及其他文件属性信息。

  8. 文件指针或地址(File Pointer or Address): 记录文件在存储介质上的物理位置,指示文件数据块或记录的起始位置。

  9. 文件状态(File Status): 包括文件是否打开、是否被锁定等状态信息。

  10. 其他元数据(Other Metadata): 可能包括与文件相关的其他信息,如所有者、文件扩展名、文件版本等。

文件系统通过维护文件控制块,可以实现对文件的有效管理、检索和访问。当用户执行文件操作时(例如打开、读取、写入、关闭等),文件系统会使用文件控制块来获取和更新文件的相关信息。文件控制块的具体结构和内容可能因文件系统的设计而有所不同。

  1. 什么是文件目录?什么是目录文件?

文件目录:

文件目录是文件系统中用于组织和管理文件的一种结构。它是一个存储文件和其他目录信息的数据结构,通常以层次结构的形式存在。文件目录中包含了文件名及其对应的文件控制块(FCB)或其他元数据,这样操作系统就能够快速地查找、访问和管理文件。目录可以嵌套,形成目录树,使得文件系统能够更有效地组织文件。

目录文件:

目录文件是一个特殊的文件,它存储了目录中的信息,包括文件名和对应的文件控制块(FCB)或其他元数据。目录文件是文件系统中用于组织和管理目录信息的关键组件。

  1. 试分别解释文件路径名、绝对路径名和相对路径名的概念。

文件路径名:

文件路径名是用于唯一标识文件在文件系统中位置的字符串。它描述了文件的层次结构和所在位置,允许用户或程序通过路径名来访问文件。路径名可以表示文件所在的目录层次,以及如何从根目录或当前工作目录导航到文件。文件路径名通常由目录名和文件名组成,它们之间通过特定的分隔符(如斜杠“/”或反斜杠“\”)分隔。

绝对路径名:

绝对路径名是指文件或目录在文件系统中的完整路径,从根目录开始一直到文件所在目录的路径。它提供了一条明确的路径,不依赖于当前工作目录。绝对路径名对于确切地指定文件的位置非常有用,因为它不受当前工作目录的影响。在UNIX/Linux系统中,绝对路径名以斜杠“/”开头,在Windows系统中,可能以盘符开头,如"C:\path\to\file"。

相对路径名:

相对路径名是相对于当前工作目录的文件路径。与绝对路径不同,相对路径没有从根目录开始的完整路径,而是描述了如何从当前位置导航到文件的路径。相对路径名通常不包括根目录,而是从当前目录(工作目录)开始,使用相对的目录结构描述文件的位置。例如,"documents/file.txt"表示文件位于当前工作目录下的 "documents" 目录中。

应用题:

  1. 设某文件为采用成组方式存放的定长记录(一个块中有整数个逻辑记录)的连续文件,共有18条逻辑记录。如果每条记录长为 512 B,每个物理块大小为1024 B,起始块号为12,请叙述将第15 号逻辑记录读人内存缓冲区的过程。

要将第15号逻辑记录读入内存缓冲区,我们可以按照以下步骤进行:

  1. 确定逻辑块号:
    • 计算第15号逻辑记录所在的逻辑块号。由于每个物理块有整数个逻辑记录,而且每个记录长度为512 B,因此第15号逻辑记录将位于第15/(1024/512)15/(1024/512)个逻辑块。在这个情境下,逻辑块号为7。
  2. 计算物理块号:
    • 将逻辑块号加上起始块号,即 7+12=197+12=19。因此,第15号逻辑记录所在的物理块号为19。
  3. 读取物理块内容:
    • 读取物理块号为19的块内容到内存缓冲区。这个块包含了第15号逻辑记录以及其它逻辑记录。
  4. 定位第15号逻辑记录:
    • 由于每个块中有整数个逻辑记录,我们需要在读入的块中找到第15号逻辑记录的起始位置。计算 15mod  (1024/512)15mod(1024/512),结果为1。因此,第15号逻辑记录在物理块中的起始位置为块的第2个逻辑记录(从0开始计数)。
  5. 复制到内存缓冲区:
    • 将第15号逻辑记录的内容从物理块中复制到内存缓冲区。
  1. 设某文件为连接文件,由5个逻辑记录组成,每个逻辑记录的大小与盘块大小相等,均为512 B,并依次存放在 50、121、75、 80、63 号磁盘块上。若要存取文件的第 1 569 字节处的信息,则要访问哪一个磁盘块?

连接文件是一种文件组织方式,其中各逻辑记录顺序存储在不同的磁盘块中,每个逻辑记录的大小与磁盘块大小相等。

在这个情况下,每个逻辑记录大小为512 B,且文件由5个逻辑记录组成,分别存放在50、121、75、80、63号磁盘块上。我们需要存取文件的第1569字节处的信息。

计算存取位置在哪个逻辑记录:

  1. 第1个逻辑记录占用512字节。
  2. 第2个逻辑记录占用512字节。
  3. 第3个逻辑记录占用512字节。
  4. 第4个逻辑记录占用512字节。
  5. 第5个逻辑记录占用512字节。

累计到第5个逻辑记录时,已经有 (5 \times 512 = 2560) 字节。由于我们需要存取的位置是在1569字节处,因此我们需要访问第4个逻辑记录(也就是存放在80号磁盘块上)。

所以,要存取文件的第1569字节处的信息,需要访问的磁盘块是80号磁盘块。

  1. 某文件系境采用索引文件结构,设文件索引表的每个表项使用3 B的空间存放磁盘块号,磁盘块的大小为512 B。计算此文件系统采用直接寻址、二次间接索引和三次间接索引所能管理的最大磁盘空间。
  1. 直接寻址:

    • 直接寻址允许文件直接引用磁盘块号,因此直接寻址最多能管理 (3× 512) 字节的磁盘空间,即 (3 ×512) B。
  2. 二次间接索引:

    • 二次间接索引允许一个索引表引用其他索引表,每个表项可以指向一个磁盘块。因此,每个索引表最多能表示 (512 / 3) 个磁盘块,而文件索引表本身能表示 (512 / 3) 个索引表。所以,二次间接索引最多能管理的磁盘空间为 (512 \times 512) 字节。
  3. 三次间接索引:

    • 类似地,三次间接索引允许两层索引表引用磁盘块。每个索引表最多能表示 (512 / 3) 个磁盘块,而文件索引表本身能表示 (512 / 3) 个索引表。因此,三次间接索引最多能管理的磁盘空间为 (512 × 512× 512) 字节。

总结:

  • 直接寻址最多能管理 (3 × 512) 字节的磁盘空间。
  • 二次间接索引最多能管理 (512× 512) 字节的磁盘空间。
  • 三次间接索引最多能管理 (512 ×512× 512) 字节的磁盘空间。
  1. 某操作系统的磁盘文件空间包含 500个块,现用字长为32位的位示图管理磁盘空间。试问:①位示图需多少个字? ②第i字第j位对应的块号是多少? ③请给出申请/归还一块的工作流程。

(1)位示图需要的字数计算:INT(500/32)=16 个字。

(2)块号b=(i-1)*32+j

(3)申请的过程:顺序扫描位示图、找到空闲块并分配、修改位示图map[i,j]=1。

归还的过程:找到回收盘块在位示图中的行和列,修改位示图map[i,j]=0。

  1. 某磁盘共有100个柱面,每个柱面有8个磁头,每个盘面分4 个扇区。若逻辑记录与扇区等长,柱面、磁道、扇区均从0起编号。现用16位的200个字(0-199)组成位示图来管理意盘空间。 试问:①位示图第 15个字的第7位为0,而准备分配给某一记录,该块的柱面号、磁道号、扇区号是多少? ②现回收第 56柱面第6磁道第3扇区,这时位示图的第几个字的第几位应清0?

首先,让我们根据问题中给出的信息来计算逻辑块数。每个柱面有8个磁头,每个盘面有4个扇区,所以每个柱面有8 * 4 = 32个扇区。共有100个柱面,因此总的逻辑块数为100 * 32 = 3200块。

  1. 位示图第15个字的第7位为0,表示第15个块未被分配。要确定该块的柱面号、磁道号、扇区号,首先将块号转换为柱面、磁道、扇区的形式。假设该块号为k,则:

    柱面号 = k / (磁头数 * 扇区数)
    磁道号 = (k / 扇区数) % 磁头数
    扇区号 = k % 扇区数

    在这里,磁头数为8,扇区数为4。所以,对于第15个块:

    柱面号 = 15 / (8 * 4) = 0
    磁道号 = (15 / 4) % 8 = 3
    扇区号 = 15 % 4 = 3

    因此,位示图第15个字的第7位为0时,对应的柱面号为0,磁道号为3,扇区号为3。

  2. 现回收第56柱面第6磁道第3扇区。同样地,将块号转换为柱面、磁道、扇区的形式:

    柱面号 = 56 / (8 * 4) = 1
    磁道号 = (56 / 4) % 8 = 6
    扇区号 = 56 % 4 = 3

    所以,被回收的块对应的柱面号为1,磁道号为6,扇区号为3。

    接下来,确定该块在位示图中的位置。假设该块在位示图中的索引为i,其对应的位示图字节为byte,位为bit。则:

    i = 柱面号 * (磁头数 * 扇区数) + 磁道号 * 扇区数 + 扇区号
    byte = i / 8
    bit = i % 8

    对于第56柱面第6磁道第3扇区:

    i = 1 * (8 * 4) + 6 * 4 + 3 = 32 + 24 + 3 = 59
    byte = 59 / 8 = 7
    bit = 59 % 8 = 3

    因此,位示图的第7个字的第3位应清0。