【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章

前言

此书在最后的附录 B 中,有给出部分重难点部分的参考答案。如果想要此书习题答案,可点以下链接:为一个压缩包,以图片形式,习题图片按章节排序,答案图片按书页排序。

《操作系统原理》孟庆昌等编著之课后部分习题+答案(图片版)-其它文档类资源-CSDN文库

但是其余习题,需此书读者在书中找到相应章节处得到答案。

所以,博主此系列文章,只是像做题一般,把未给出答案的部分题目(博主认为有需要写的)做出来,以当作复习,加深理解。

本章中,针对讲解不详细的题目,也有进一步的解析。

尽量保证正确(可能会把不是题目要求的但觉得重点的会考的也写上去),如果不同意见,可留言讨论。
 

其他章节内容链接:

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第一章

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第二章

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第三章

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第四章

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第六章

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第七章

目录

前言

一、第五章 文件系统 习题

二、书中附录已有答案(见下图:习题+答案)

三、补充习题

一、第五章 文件系统 习题

2. UNIX / Linux系统中文件分为哪些类型?

答: 在UNIX / Linux 和 MS DOS系统中,按文件的内部构造和处理方式分类

这些系统中的文件类型主要有普通文件、目录文件和特殊文件

① 普通文件:由表示程序、数据或文本的字符串构成,内部没有固定的结构。这类文件包括一般用户建立的源程序文件、数据文件、目标代码文件,也包括各种系统文件 (如操作系统本身的众多代码文件) 和库文件( 如标准 I/O 文件和数学函数文件)。通常分为 ASCII 文件和二进制文件。

② 目录文件:由下属文件的目录项构成的文件。它类似于人事管理方面的花名册本身不记录个人的档案材料,仅仅列出姓名和档案分类编号。对目录文件可进行读、写等操作。

③ 特殊文件特指各种外部设备。为了便于统管理,系统把所有 I/O设备都作为文件对待,按文件格式提供给用户使用,如目录查找、存取权限验证等方面与普通文件相似,而在具体读、写操作上,要针对不同设备的特性进行相应处理。特殊文件分为字符特殊文件块特殊文件。前者是有关输入 / 输出的设备,如终端、打印机和网络等;后者是存储信息的设备,如硬盘、软盘和磁带等。

3. 文件的逻辑组织有哪几种形式?

答:  文件的逻辑组织有 2 种形式:无结构文件和有结构文件。

(1)无结构文件:指文件内部不再划分记录,是由一组相关信息组成的有序字符流,即流式文件,其长度按字节计算。例如:大量的源程序、可执行程序、库函数等。

(2)有结构文件:在逻辑上可看做一组连续记录的集合,即文件是由若干相关记录组成,且对每个记录编上号码,依次为记录1,记录2,...... ,记录n。每个记录是一组相关的数据集合,用于描述一个对象某个方面的属性,如年龄、姓名、职务等。

6. 常用的磁盘空闲区管理技术有哪几种?试简要说明各自的实现思想。

答: 常用的磁盘空闲区管理技术有 4 种:空闲空间表法、空闲块链接法、位示图法和空闲块成组链接法。(考研常考后两种)

实现思想

(1)空闲空间表法

为记载磁盘上哪些盘块是空闲的,文件系统需要创建一个空闲空间表。

① 空闲块分配:在新建文件时,要为文件分配盘空间。为此,系统检索空闲空间表,寻找合适的表项。如果对应空闲区的大小恰好是所申请的值,就把该项从表中清除;如果该区大于所需数量则把分配后剩余的部分记在表项中

② 空闲块回收:当用户删除一个文件时,系统回收该文件占用的盘块,且把相应的空闲块信息填回空闲空间表中。如果释放的盘区和原有空闲区相邻接,则把它们合并成一个大的空闲区,记在一
个表项中。

这种方法把若干连续的空闲块组合在一个空闲表项中,它们一起被分配或释放,特别适合存放连续文件。(易产生外存的外部碎片
 

(2)空闲块链接法

如下图所示,所有的空闲盘块链接在一个队列中, 用一个指针 ( 空闲块链头 ) 指向第1个空闲块,而各个空闲块中都含有下一个空闲区的块号,最后一块的指针项记为NULL,表示链尾。

当分配空闲块时,从链头取下一块,然后使空闲链头指向下一块。若需 n 块,则重复上述动作 n 次。当删除文件时,只需把新释放的盘块依次链入空闲链头,且使空闲链头指向最后释放的那一块。

这种技术易于实现,只需要用一个内存单元保留链头指针,但其工作效率低,因为每当在链上增加或移走空闲块时都需要大量I/O操作。

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第1张图片

(3)位示图法

它利用一串二进位值反映磁盘空间的分配情况,也称位向量(Bit Vector)法。每个盘块都对应一个二进制位。如果盘块是空闲的,对应位是1;如果盘块已分出去,则对应位是0 (注意,有些系统标志方式与此恰好相反)。

主要优点:在寻找第 1 个空闲块或几个连续的空闲块时相对简单和有效

实际上,很多计算机都提供位操作指令,可以有效地用于查找。为了找到第 1 个空闲块,系统顺序检查位示图中的每个字,查看其值是否等于0。若不为0,则第 1 个不是 0 的位就对应第 1 个空闲块。

块号的计算公式如下:字长 * "0" 值字数 + 首位 "1" 的偏移

【可见三、补充习题的例3】
 

(4)空闲块成组链接法

① 空闲块成组链接

空闲块链接法可以节省内存,但实现效率低。UNIX系统中,一种改进办法是把所有空闲盘块按固定数量分组。

例如,每 50 个空闲块为一组,组中的第 1 块为 “组长” 块。

第 1 组的 50 个空闲块块号放在第 2 组的组长块中,而第 2 组的其余 49 块是完全空闲的;

第2组的 50 个块号又放在第 3 组的组长块中而第 3 组的其余 49 块是完全空闲的;

依此类推,组与组之间形成链接关系。最后一组的块号 (可能不足 50 块) 通常放在内存的一个专用栈 (即文件系统超级块中的空闲块号栈)结构中。

这样,平常对盘块的分配和释放在栈中 ( 或构成新的一组 ) 进行,如图 5-18 所示。

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第2张图片

所以,若是反向推导,可从图中可以看出,

目前系统共有四组空闲盘块,第一组为 40 块,第二,三组分别为 50 块,第四组虽记为 50 块,但除去用于结束标记的那一块后实际只有 49 块,故空闲盘块总数为 189 块(40 + 50 + 50 + 49)。

② 空闲块分配

当需要为新建文件分配空闲盘块时,总是先把超级块中表示栈深( 即栈中有效元素的个数 )的数值减1

如图 5-18 中所示情况:40 - 1 = 39。以 39 作为检索超级块中空闲块号栈的索引,得到盘块号111,它就是当前分出去的第1个空闲块。如果需要分配20个盘块,则上述操作就重复执行20次。

如果当前栈深的值是 1,需要分配 2 个空闲盘块,那么栈深值( 1 ) 减1,结果为 0,此时系统做特殊处理:

首先,以 0 作为索引下标,得到盘块号 150,它是第 78 组的组长;

然后,把 150 号盘块中的内容,即下一组 ( 即第 77 组) 中所有空闲盘块的数量 ( 50 ) 和各个盘块的块号分别放入超级块的栈深和空闲块号栈中,超级块的栈中记载了第 77 组盘块的情况;

最后,把 150 号盘块分配出去。至此,1 个空闲盘块就分配好了。接着再分配 1 个盘块,此时的工作简单多了: 50 - 1 = 49,以 49 为索引得到第 77 组的 151 号盘块。

③ 空闲块释放

在图 5-18 所示的情况下,若要删除一个文件,它占用 3 个盘块,盘块号分别是 69、75 和 87。首先释放 69 号块,其操作过程是:把块号 69 放在栈深 40 所对应的元素中,然后栈深值加1,变为41。接着分别释放 75 号块和 87 号块。最后,超级块中栈深的值为 43,空闲块号栈中新加入的 3 个盘块出现的次序是 69、75、 87。

如果栈深的值是 50,表示该栈已满,此时还要释放一个盘块 89 号,则进行特殊处理:

先将该栈中的内容 ( 包括栈深值和各空闲块块号 ) 写到需要释放的新盘块 (即 89 号) 中;

将栈深及栈中盘块号清0;

以栈深值 0 为索引,将新盘块号 89 写入相应的栈单元中,然后栈深值加1,即栈深值变为1。这样,盘块 89 号就成为新组的组长块。

图 5-18 中第 1 组只有 49 块,它们的块号放在第 2 组的组长块 3950 号中。该块中记录第1组的总块数为 50,而首块块号标志为 0。这个 “0” 并不表示物理块号,而是分配警戒位作为空闲盘块链的结束标志。

如果盘块分配用到这个标志,说明磁盘上所有空闲块都用光了,系统会发出告警信号,提示必须进行特殊处理。

成组链接法是UNIX系统中采用的空闲盘块管理技术,它兼具空闲空间表法和空闲块链接法的优点,克服了两种方法中表(或链)太长的缺点。当然,成组链接法在管理上要复杂一些,尤其当盘块分配出现栈空,盘块释放遇到栈满时,要做特殊处理。

【补充】

有个关于成组链接法的题目,可参考如下链接(博主发现这个链接挺不错的)

实例讲解成组链接法_Ajay666的博客-CSDN博客

8. 什么是文件保护?常用的保护机制有哪些?

答: (1)文件保护:指文件免遭由于文件主或其他用户错误的操作而使文件受到破坏。

(2)常用的保护机制:一是命名;二是口令;三是存取控制;四是密码;

10. 硬盘分区有哪三种类型?Linux 可以安装在哪些分区上?

答:  (1)硬盘分区有三种类型:主分区、扩展分区和逻辑分区。

(2)Linux 既可以安装在主分区上,也可安装在逻辑分区上。

【补充】

建立主分区的用途:安装操作系统。(若有多个主分区,则只有一个可设置为活动分区,操作系统就从这个分区启动)

因为最多只能有4个主分区,为了克服此限制,就设立扩展分区,它不能直接用来保存数据,其主要功能是在其中建立若干逻辑分区。

逻辑分区不是独立的分区,是建立在扩展分区中的二级分区,在 DOS / Windows 下,一个逻辑分区对应一个逻辑驱动器,例如 D盘、E盘。

一个硬盘最多只能划分为 4 个主分区,或者 3 个主分区 + 1 个扩展分区,在扩展分区上可以划分出多个逻辑分区。

11. 在 Linux 系统中,ext2 文件系统的构造形式是什么?超级块的作用是什么?

答: 与其他文件系统一样, ext2 文件系统中的文件信息都保存在数据块中。对同一个 ext2 文件系统而言,所有数据块的大小都是样的, 如 1024B (字节)。但是,不同的 ext2 文件系统中,数据块的大小可以不同。

(1)ext2文件系统的物理构造形式如图15-22所示。

ext2 文件系统分布在块结构的设备中,文件系统不必了解数据块的物理存储位置,它保存的是逻辑块的编号块设备驱动程序能够将逻辑块号转换到块设备的物理存储位置。ext2 文件系统将逻辑块划分成块组,每个块组重复保存着一些有关整个文件系统的关键信息,以及实际的文件和目录的数据块。

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第3张图片

如图5-22所示,系统引导块总是介质上的第一个数据块, 只有根文件系统才有引导程序放在这里,其他一般文件系统都不使用引导块。

使用块组对于提高文件系统的可靠性有很大帮助:由于文件系统的控制管理信息在每个块组中都有一份副本,从而当文件系统意外出现崩溃时,可以很容易地恢复它。另外,由于在有关块组内部,索引节点表和数据块的位置很近,在对文件进行 I / O 操作时,可减少硬盘磁头的移动距离。

从图 5-22 中可以看出,每个块组重复保存着一些有关整个文件系统的关键信息、 真正的文件和目录的数据块。每个块组中包含超级块、块组描述结构、块位示图、索引节点位示图、索引节点表和数据块。

(2)超级块( Superblock )
超级块中包含文件系统本身的大小和形式的基本信息。文件系统管理员可以利用这些信息来使用和维护文件系统。每个块组都是一个超级块。在一般情况下, 当安装文件系统时,系统只读取数据块组 1 中的超级块,将其放入内存,直至文件系统被卸载。

超级块中包含以下内容:
① 幻数。用于安装时确认是 ext2 文件系统的超级块。
② 修订级别。这是文件系统的主版本号和次版本号。
③ 安装计数和最大安装数。系统用它来确定文件系统是否应该进行全面检查。
④ 块组号码。包含此超级块的数据块组的号码。
⑤ 数据块大小。文件系统创建后,数据块的大小就确定了,一般为1024B、2048B 或 4096B。
⑥ 每组数据块的个数,文件系统创建后,它就确定了。
空闲块。文件系统中空闲块的个数。
空闲索引节点。文件系统中空闲索引节点的数目。
第一个索引节点。文件系统中第一个索引节点的号码。在 ext2 根文件系统中, 第一个索引节点是根目录( / )的入口。

12. 一般来说,文件系统应具备哪些功能?

答: (1)完成文件存储系统的管理,即分配空间和回收空间。

(2)实现文件名到物理地址的映射。

(3)实现文件和目录的建立,读写管理。

(4)向用户提供有关文件和目录操作的接口。

14. 在 UNIX / Linux 系统中, 如何表示一个文件的存取权限?

答:在 UNIX / Linux 系统中,目录和文件会有3种权限,分别是:可读r,可写w,可执行x。

一个文件的存取权限用 9 个二进制位表示:

前三位分别表示文件属主的读、写和执行权限,中间三位分别表示同组用户的读、写和执行权限 ,最后三位分别表示其他用户的读、写和执行权限。

比如:

文件的权限(9位) 说明
rw-r--r--

只有属主才有读取和写入的权限;

同组人和其他人只有读取的权限

rwxrw-r--

只有属主才有读取、写入和执行权限;

同组人有读取、写入的权限;

其他人只有读取的权限

15. 在 Linux 系统中,为什么要提供 VFS?

答: 在 Linux 系统中,提供了 VFS ,通过 VFS 将不同文件系统的实现细节隐藏起来。Linux 文件系统可以根据需要随时装卸,从而实现文件存储空间的动态扩充。

【补充】

虚拟文件系统(Virtual File System,简称VFS)是Linux内核的子系统之一,它为用户程序提供文件和文件系统操作的统一接口屏蔽不同文件系统的差异和操作细节

16. 简述管道文件的实现机制。执行命令 “cat myfile | wc -l” 的输出应是什么?

答:(1) 在执行管道命令行时,要创建一个管道文件和两个进程:“ | ” 对应管道文件;由系统自动处理两个进程按先入先出的方式同步、调度和缓冲。管道文件是利用系统调用 pipe() 创建的、在同族进程间进行大量信息传送的打开文件(其实只存于内存中)。

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第4张图片

(2)在 Linux 中,wc 命令用于计算字数。

语法:

wc [-clw][--help][--version][文件...]

参数

  • -c 或 --bytes或--chars 只显示Bytes数。
  • -l 或 --lines 显示行数。
  • -w 或 --words 只显示字数。
  • --help 在线帮助。
  • --version 显示版本信息。

所以,从 wc 的语法和参数中可知,执行命令 “cat myfile | wc -l” 的输出是文件 myfile 的行数。

二、书中附录已有答案(见下图:习题+答案)

1. 解释以下术语:文件、文件系统、目录项、目录文件、路径、当前目录、文件控制块、文件的逻辑组织、文件的物理组织。

答: (1)文件:被命名的相关信息的集合体,它通常存放在外存(如磁盘、 磁带)上,可以作为一个独立单位存放并实施相应的操作(如打开、关闭、读、写等)。

(2)文件系统:操作系统中负责操纵和管理文件的一整套设施,它实现文件的共享和保护,方便用户“ 按名存取 ”。

(3)目录项:为了 加快对文件的检索,把文件控制块集中在一起进行管理。 这种文件控制块的有序集合称为文件目录。当然,文件控制块也是其中的目录项。

(4)目录文件:全由目录项构成的文件称为目录文件。

(5)路径:在树型 目录结构中,从根出发经由所需子目录到达指定文件的通路。

(6)当前目录:为节省文件检索的时间,每个用户可以指定一个目录作为当前工作目录,以后访问文件时,就从这个目录开始向下顺序检索。这个目录就称做当前目录。

(7)文件控制块:用于描述和控制文件的数据结构,其中包括文件名、 文件类型、位置、大小等信息。

(8)文件的逻辑组织:用户对文件的观察和使用是从自身处理文件数据时所采用的组织方式来看待文件组织形式。这种从用户观点出发所见到的文件组织形式称为文件的逻辑组织。

(9)文件的物理组织:文件在存储设备上的存储组织形式称为文件的物理组织。

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第5张图片

4. 文件的物理组织形式主要有哪几种?各有什么优缺点?

答: 文件的物理组织形式主要有:连续文件、链接文件、索引文件和多重索引文件,如下表所示。

文件的物理组织形式 优点 缺点
连续文件 顺序存取速度较快

很难实现创建文件时就确定它的长度;不便于文件的动态扩充;可能出现外部碎片,从而造成浪费

链接文件 克服了连续文件的缺点 一般仅适用于顺序访问,而不利于对文件的随机存取;每个物理块上增加一个连接字,为信息管理增加了一些麻烦
索引文件 除了具备链接文件的优点之外,还克服了它的缺点 需要增加索引表带来的空间开销。往往以内存空间为代价来换取存取速度的改善
多重索引文件 除具有一般索引文件的优点外,还可满足对灵活性和节省内存的要求 间接索引需要多次访盘而影响速度

5. 文件系统中的目录结构有哪几种基本形式?各有何优缺点? UNIX / Linux系统中采用哪种目录结构?

答: 文件系统中的目录结构有:单级目录结构、二级目录结构、树型目录结构和非循环图目录结构,如下表所示。
UNIX 系统采用非循环图目录结构,即带链接的树形目录结构。

文件系统的目录结构 优点 缺点
单级目录结构 简单,能实现按名存取 查找速度慢;不允许重名,不便于共享
二级目录结构 允许重名;提高了检索目录的速度 不利于文件共享
树型目录结构 文件的层次和隶属关系清晰,便于实现不同级别的存取保护和文件系统的动态装卸 只能在用户级对文件进行临时共享
非循环图目录结构 具有树型结构的优点,而且实现对
文件的永久共享
管理较复杂

7. 什么是文件的共享?文件链接如何实现文件共享?

答:(1)文件的共享:是指系统允许多个用户 ( 进程 ) 共同使用某个或某些文件。

(2)文件链接:是给文件取别名,即将该文件的目录项登记在链接目录中,这样访向该文件的路径就不止一条。不同的用户 (或进程) 就可以利用各自的路径来共享同文件。

9. 什么是文件的后备?数据备份的方法有哪几种?按时机分,后备分哪儿种?

答: (1)文件的后备就是把硬盘上的文件转储到其他外部介质上。

将磁盘上的数据转储到磁带上有两种方式:物理转储和逻辑转储。

① 物理转储是从磁盘上第 0 块开始,把所有的盘块按照顺序写到磁带上,当复制完最后一块时,转储结束。

② 逻辑转储方式是从一个或多个指定的目录开始,递归地转储自某个日期以来被修改过的所有文件和目录。

(2)通常有以下三种备份策略:完全备份、增量备份和更新备份。

① 完全备份:也称简单备份,即每隔一定时间就对系统做一 次全面的备份;

② 增量备份:每隔一段较短的时间进行一次备份,但仅仅备份在这段时间间隔内修改过的数据;

③ 更新备份:备份从上次进行完全备份后至今更改的全部数据文件。

13. 文件控制块与文件有何关系?

答:文件控制块与文件一一对应,即在文件系统内部,给每个文件唯一地设置一个文件控制块,核心利用这种结构对文件实施各种管理。

17.  在实现文件系统时,为了加快文件目录的检索速度,可用文件控制块分解法。假设目录文件存放在磁盘上,每个盘块为 512B。文件控制块占 64B,其中文件名占 8B。通常将文件控制块分成两个部分,第一部分占10B ( 包括文件名和文件内部号 ),第二部分占 56B ( 包括文件内部号和文件其他描述信息)。

① 假设某个目录文件共有 254 个文件控制块,试分别给出采用文件控制块分解法前后,查找该目录文件的某个文件控制块的平均访问磁盘次数。

② 一般情况下, 若目录文件分解前占用 n 个盘块, 分解后改用 m 个盘块存放文件名和文件号,请给出访问磁盘次数减少的条件。

答: 利用文件控制块分解法可以加快文件目录的检索速度,在 UNIX 系统中就采用类似方祛,其原理减少因查找文件内部号而产生的访问磁盘次数

因为在查找文件内部号 ( I 节点号) 的过程中不需要把文件控制块的所有内容都读入内存,只要把文件名和文件内部号这一部分读入内存即可,从而减少所需读入的存储块,就有可能减少访问磁盘的次数。

当找到所需的文件控制块后,要把该文件控制块的全部内容读入内存,它还需要访问一次磁盘,因而,在一定条件下采用这种方法并不能减少访问磁盘的次数。

① 采用分解法,查找该目录文件的某个文件控制块的平均访问磁盘次数为:

64 * (254 / 2) / 512 ≈ 16

采用分解法,查找该目录文件的某一个文件控制块的平均访问磁盘次数为:

10 * (254 / 2) / 512 + 1 ≈ 4

详解:

首先要知道,全由目录项构成的文件称为目录文件,且文件控制块的有序集合称为文件目录。

所以,看题目所给条件:“假设目录文件存放在磁盘上,每个盘块为 512B。文件控制块占 64B。假设某个目录文件共有 254 个文件控制块。”

可知,采用分解法前

存放 254 * 64 个文件控制块的有序集合,即文件目录,

它所占的盘块数为:254 * 64 / 512 = 31.75,即 32 个盘块。

所以,查找一个文件的平均访问的盘块数:(32 + 1) / 2 = 16.5 次;

采用分解法后,

因为在查找文件内部号 ( I 节点号) 的过程中不需要把文件控制块的所有内容都读入内存,只要把文件名和文件内部号这一部分读入内存即可,而这一部分占 10 B。

所以,存放 10 * 254 个文件控制块的有序集合,即文件目录,

它所占的盘块数为:254 * 10 / 512 = 4.90,即 5 个盘块。

所以,查找一个文件的第 1 部分平均访问的盘块数:(1 + 5) / 2 = 3次;

加上查找第 2 部分需要访问磁盘 1 次,

所以,查找一个文件控制块的平均访问磁盘次数是 3+1= 4 次。

② 访问磁盘次数减少的条件为 m < n - 2。

详解

若目录文件分解前占用 n 个盘块, 分解后改用 m 个盘块存放文件名和文件号,

可知,分解前,查找一个文件的平均访问的磁盘次数为 (n + 1) / 2 ,

分解后,查找一个文件的平均访问的磁盘次数为 (m + 1) / 2 + 1

访问磁盘次数减少的条件为 (m + 1) / 2 + 1 < (n + 1) / 2 ,所以有 m < n - 2。

18. 在 UNIX 系统中,假定磁盘块大小是 1 KB,每个盘块号占 4B,文件索引节点中的磁盘地址明细如图 5-26 所示,请将下列文件的字节偏移量转换为物理地址(写出计算过程)。
① 8000                ② 13000                ③ 350 000

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第6张图片

答:先明确,

每个盘块1KB,盘号为 4B,即一个盘块可以放 1KB / 4 = 256个盘号,

说明一次间接 428 块中存放了 256 个盘号,可以存储 256 * 1 KB 的内存,同理二次间接 9156 可以存储为 256 * 256 * 1KB 的内存。

直接地址为 0 ~ 10 K,

一次间接内存为10K ~ 10K + 256K,

二次间接内存为 266K ~ 266 K + 256 * 256 K,即 266K ~ 65802 K

三次间接内存为 65802K - 65802K + 256*256*256 K

若求该文件系统允许文件的最大长度,即为 

10 K + 256K + 256 * 256 K + 256 * 256 * 256 K = 16,843,018 K 约等于 16GB

① 直接地址为 0 ~ 10 K,8000 < 10K,对应 7K - 8K 的范围,即为 盘块号 101

8000 / 1024 = 7, 8000 % 1024 = 832

使用直接地址,其物理地址是: 101 块内 832 字节。

② 13000 / 1024 = 12,13000 % 1024 = 712

逻辑块数 12 超出直接地址范围( 10 ), 但是小于 266 ( = 10 + 256), 利用一次间接。

从 428 块中得到相应的物理块号为 954,所以其物理地址是: 954 块内 712 字节。

③ 350000 / 1024 = 341,350000 % 1024 = 816

逻辑块数 341 超出一次间接地址范围( 266 ), 但是小于 65802 ( = 10 + 256 + 2562),

利用二次间接:341 - (10 + 256) = 7575 / 256 = 075 % 256 = 75

从 9156 块中找到物理块 331,再从 331 块中找到下标为 75 的项,进而得到物理块号 333,

所以其物理地址是:333 块内 816 字节。

【补充】可看博主对此题的分析:

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第7张图片

三、补充习题

例1:假定盘块的大小为 1KB, 硬盘的大小为 500MB,采用显示链接分配方式时,其 FAT 需要占用多少存储空间?

答:FAT 的每个表项对应于磁盘的一个盘块,其中用来存放分配给文件的下一个盘块的块号,故FAT 的表项数目由物理盘块数决定,而表项的长度则由磁盘系统的最大盘块号决定(即它必须能存放最大的盘块号)。

为了地址转换的方便,FAT表项的长度通常取半个字节的整数倍,所以必要时还必须由最大盘块号获得的 FAT 表项长度作一些调整。

由题意可知,该硬盘共有 500K 个盘块,故 FAT 中共有 500K 个表项;如果盘块从1开始编号,为了能保存最大的盘块号 500K,该 FAT 表项最少需要19 位,将它扩展为半个字节的整数倍后,可知每个FAT表项需 20 位,即 2.5 个字节。

因此,FAT需占用的存储空间的大小为:2.5 * 500K = 1250KB

例2:设某系统磁盘共有 1600 块,块号从 0 ~ 1599,若用位示图管理这 1600 块的磁盘空间,问位示图需要多少个字节?

答:在位示图中,用 1 位二进制数描述 1 个磁盘块的状态。

1600 个磁盘块共需要 1600 位二进制数,每个字节长为 8 位,位示图需要:1600 / 8 = 200 (字节)

例3:有一计算机系统采用如下图所示的位示图( 行号、列号都从 0 开始编号)来管理空闲盘块。如果盘块从 1 开始编号,每个盘块的大小为 1KB。
(1)现要为文件分配两个盘块,试具体说明分配过程。
(2) 若要释放磁盘的第300块,应如何处理?

【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章_第8张图片

 解:首先明确,位示图的基本概念。

位示图,也称位向量法,每个盘块都对应一个二进制位。若盘块是空闲的,对应位是1。如果盘块已分配出去,则对应位是0。(注意,有些系统标志方式与此恰好相反)

计算公式
i, j 从 1 开始 盘块的分配 b = n * ( i - 1 ) + j
盘块的回收 i ( b - 1 ) DIV n + 1
j ( b - 1 ) MOD n + 1
i, j 从 0 开始 盘块的分配 b = n * i + j + 1
盘块的回收 i ( b - 1 ) DIV n
j ( b - 1 ) MOD n

b 是盘块号(上表中,盘块号从 1 开始编号),i,j 分别是行、列号

n 为每行的位数。例如此题 n 为 16 。

从此题可知,若盘块是空闲的,对应位是0,如果盘块已分配出去,则对应位是1。

且行号、列号都从 0 开始编号。盘块从 1 开始编号。

有公式:盘块号 b = n * i + j + 1

              行号 i = ( b - 1 ) DIV n

              列号 j = ( b - 1 ) MOD n

(1)为某文件分配两个盘块的过程如下:

顺序检索位示图,从中找到第一个值为 0 的二进制位,得到其行、列号分别为 i_1=2, j_1=2

第二个值为 0 的二进制位,得到其行、列号分别为 i_2=3, j_2 = 6

计算出找到的两个空闲块的盘块号分别为:

 b_1=i_1*16+j_1+1=2*16+2+1=35

b_2=i_2*16+j_2+1=3*16+6+1=55

修改位示图,令 map[2,2] = map[3, 6] = 1, 并将对应块 35、55 分配出去。

(2)释放磁盘的第 300 块时,应进行如下处理:

计算出磁盘第 300 块所对应的二进制位的行号 i 和列号 j:

i= (300 - 1) / 16 = 18,j = (300 - 1) % 16 = 11

修改位示图,令 map[18, 11] = 0,表示对应块为空闲块。

你可能感兴趣的:(考研,操作系统,开发语言,windows,linux,unix)