-2

有人可以告诉我之间的区别:

  • 直接文件访问(又名随机文件访问)
  • 顺序文件访问
  • 索引顺序文件访问
  • 分区文件访问
4

3 回答 3

6

“随机访问”的一个更好的术语是“直接访问”,因为硬件允许您在磁盘上的任何位置检索数据。它真的很有用!至于“顺序访问”,硬件只能从头到尾遍历每条数据,虽然顺序检索接近该序列开头的数据可能会更快,但如果如果您想在该序列结束时检索一条数据,因为该过程必须遍历每条信息。

这真的很有意义吗..?

于 2012-08-26T11:58:05.473 回答
3

“随机”意味着您可以按任何顺序获取文件的任何部分。因此,例如,您可以在开始之前阅读中间部分。

“顺序”意味着您必须首先阅读文件的第一部分,然后再阅读第二部分,然后是第三部分,等等......

从操作系统的角度来看,所有文件都是“随机的”。1这是您从应用程序访问文件的方式,使其“随机”或“顺序”。文件的格式可以针对一种或另一种访问进行优化,例如文本通常是“顺序的”,而数据库文件往往是高度“随机的”。


1至少在硬盘上。存储在磁带上的文件实际上是物理顺序的,但磁带通常仅用于归档,无论如何您不太可能直接处理它们。

于 2012-08-26T12:30:02.957 回答
3

这取决于您的抽象级别,以及在您的抽象中构成“文件”的基本元素是什么。(将“文件”视为“ File<T>”,其中 T 最常见的是字符)

一般而言,“文件”是“元素序列”。“随机”意味着您可以以任何顺序访问任何位置的任何元素(本质上,您可以跳转到序列中)。“顺序”意味着要访问给定位置,您必须首先扫描前面的任何内容。

这是否来自物理限制,或软件限制或“数据结构约束”,取决于文件抽象建模的内容以及物理“元素序列”和您之间堆叠的抽象层。

磁带上的文件按顺序存储和读取。磁盘上的文件被原子顺序读取,但“原子”(磁盘簇)可以单独查找,因此允许更高级别的随机访问抽象。匹配基于时间的事件序列(如通信套接字)的文件通常是顺序的(时间不能倒带),但双向通信可用于实现允许随机访问的协议(想想 NFS)。内存存储的序列具有本地随机访问,但如果元素具有可变长度,或者以不受地址原始算法确定的方式链接,则只能进行顺序访问。

这个问题看起来微不足道,但如果我们不将我们的域仅限于磁盘存储的文件……就会出现大量案例。

于 2012-08-26T13:30:11.730 回答