我需要回答一个功课问题,我无法做出正面或反面。我已经多次查看了本书(操作系统概念第9版)中的相关部分,我不知道它来自何处。
问题:
考虑磁盘上的文件系统,其逻辑块和物理块大小均为512字节。假设有关每个文件的信息已经在内存中。对于三种分配策略(连续,链接和索引)中的每一种,回答以下问题:
一个。如何在此系统中完成逻辑到物理地址映射? (对于索引分配,假设文件总是小于512个块。)
湾如果我们当前处于逻辑块10(访问的最后一个块是块10)并且想要访问逻辑块4,那么必须从磁盘读取多少个物理块?
稍微修改了作业(从逻辑块12开始,想要分别访问逻辑块3而不是10和4)。
答案:
答案:设Z为起始文件地址(块号)。
一个。连续。
将逻辑地址除以512分别用X和Y得到的商和余数。
我。将X添加到Z以获取物理块编号。 Y是该区块的位移。
II。 1
湾已链接。
将逻辑物理地址除以511,用X和Y分别得到的数量和余数。
我。追逐链表(获得X + 1块)。 Y + 1是到最后一个物理块的位移。
II。 4
c.Indexed。
将逻辑地址除以512分别用X和Y得到的商和余数。
我。将索引块放入内存中。物理块地址包含在位置X的索引块中.Y是到所需物理块的位移。
II。 2
我不知道这些答案来自哪里,每个在线资源都只是反复回流。任何人都可以提供更全面的解释吗?
答案 0 :(得分:1)
这本书是纯粹的粪便废物。没有任何来源产生更大的混淆导致SO问题而不是那本书。我可以从你复制的内容中看到你为何如此困惑。
由于存在进一步混淆的风险,通常操作系统会对磁盘执行物理,逻辑和虚拟I / O.
对于物理I / O,您已指定磁盘上块的(ta-ta)物理位置。这就是盘子,赛道和扇区。
在逻辑I / O中,磁盘被视为块数组。磁盘上的每个块都有一个序列号。如今,大多数磁盘都在硬件中进行逻辑I / O.操作系统现在很少需要进行物理I / O.
虚拟I / O用于文件访问。磁盘虚拟I / O类似于磁盘逻辑I / O.不同之处在于,在虚拟I / O中,构成文件的块被视为一个数组而不是磁盘块。
如果您可以对磁盘执行逻辑I / O,则可以拥有该系统。
您书中的第一点困惑是,通常在我们处理文件系统时,我们只在块(或块集群)中工作。你的问题是要求使用字节偏移量。
本书的另一个混乱是它将文件的虚拟块称为“逻辑块”
在第一个问题中,您正在处理连续文件。在连续文件中,文件的虚拟块与磁盘的逻辑块之间将存在简单匹配。如果文件的第一个(或第零个)逻辑块是Z,则从任何虚拟块到逻辑块N的映射是N-Z。
在您的连续文件问题中,如果我想在文件中的偏移B处找到任意字节,则B DIV 512是包含该字节的虚拟块。 B MOD 512是包含字节的块内的偏移量。
因此,正在寻找的逻辑块是B DIV 512 + Z。
在这个问题的第2部分中,您希望从虚拟块10移动到虚拟块4.因为您在逻辑块10 + Z并且文件是连续的,所以通过读取逻辑块4 + Z来访问块4这可以直接完成而不需要介入
从那里,你的问题进入了总牛粪废物的范围。
从问题和答案看来,“书”假设一个链接结构,其中每个块包含511个字节的数据,一个字节包含到下一个块的偏移(这是完全不现实的)。
如果要访问第4个块,则必须读取第一个块,找到2d块的偏移量,读取第2个块,.....找到第4个块的偏移量,读取第4个块
另一个令人困惑的问题是,问题似乎在从0开始的块编号和从1开始的块编号之间切换。“4”仅在块从1开始编号时才是正确的。但是,分区在其余的答案假定块编号从0开始。
对于文件分配的索引方法,“book”显然假定存在连续索引。同样,它假定索引中偏移的大小是一个字节。
假设Z是索引的起点。然后,块4(编号为1到4)的条目是块Z + 3 DIV 512处的字节和3 MOD 512(3 = 4 - 1)处的偏移。
要查找块,您必须读取索引并读取数据块(2次读取)。
你正在阅读的内容与现实无关,我理解为什么你感到困惑。