有人可以告诉我之间的区别:
答案 0 :(得分:6)
“随机访问”的更好术语是“直接访问”,因为硬件允许您在光盘上的任何位置检索数据。这真的很有用!对于“顺序访问”,硬件只能从头到尾运行每个数据,尽管顺序检索接近该序列开头的数据可能更快如果你想要在该序列的终点附近检索一段数据,它会变得非常慢,因为这个过程必须遍历每一条信息。
这根本没有意义吗??
答案 1 :(得分:3)
“随机”表示您可以按任何顺序获取文件的任何部分。例如,您可以在开始之前阅读中间部分。
“顺序”意味着您必须先读取文件的第一部分,然后再读取第二部分,然后读取第三部分...
从操作系统的角度来看,所有文件都是“随机”。 1 这是您从应用程序访问文件的方式,使其“随机”或“顺序”。文件的格式可以针对一种访问或另一种访问进行优化,例如,文本通常是“顺序的”,而数据库文件往往是高度“随机的”。
1 至少在硬盘上。存储在磁带上的文件实际上是物理顺序的,但磁带通常仅用于存档,无论如何您都不太可能直接处理它们。
答案 2 :(得分:3)
这取决于你的抽象级别,以及构成抽象的“文件”的基本元素是什么。 (将“文件”视为“File<T>
”,其中T最常见为char)
一般而言,“文件”是“元素序列”。 “随机”意味着您可以按任何顺序访问任何位置的任何元素(基本上,您可以跳转到序列中)。 “顺序”意味着要访问给定位置,您必须先扫描前面的任何内容。
这是来自物理限制,还是软件限制或“数据结构约束”,取决于文件抽象的建模内容以及物理“元素序列”与您之间堆叠的抽象层。
磁带上的文件按顺序存储和读取。 磁盘上的文件按顺序原子读取,但“原子”(磁盘簇)可以单独搜索,因此允许随机访问的更高级抽象。 与基于时间的事件序列(如通信套接字)匹配的文件通常是顺序的(时间不能倒带),但是双向通信可用于实现允许随机访问的协议(想想NFS)。 存储器存储序列具有本机随机访问,但如果元素具有可变长度,或者以不是由地址原始aritmetic确定的方式链接,则只能进行顺序访问。
这个问题看起来微不足道,但是如果我们不将我们的域仅限制为磁盘存储文件......就会打开一大堆案例。