【发布时间】:2015-02-06 04:35:02
【问题描述】:
外部排序的主要原因是数据可能比我们拥有的主内存大。但是,我们现在使用的是虚拟内存,虚拟内存会负责主内存和磁盘之间的交换。为什么我们要那么需要外部排序吗?
【问题讨论】:
-
虚拟内存不是无限的,我猜是一回事
-
这是否与磁带驱动器上的排序有关?我听说 knuth 对此有很多话要说。你的磁带驱动器可能比你的硬盘驱动器大很多(因此是最大的虚拟内存。)
-
@Oxinabox iirc 32 位 Windows 机器的虚拟内存限制为 16TB?需要仔细检查它。第二种选择是不支持 VM 的操作系统。第三,一些进程可能有他们可以使用的虚拟机受到管理员等的限制。
-
实内存中的随机内存访问需要几纳秒。硬盘上的随机磁盘查找需要几毫秒。当我们实际使用虚拟内存时,具有错误访问模式的程序会导致大量磁盘寻道花费了很长时间,以至于看起来它们已经失败了。这些天真正发生的是物理内存非常大,以至于对于几乎所有大小的问题,一旦从磁盘读取数据,它就会保留在物理内存的缓存中,并且永远不必再次从中读取。
-
具有高度不均匀访问时间的机械设备的大容量存储正在成为过去 - 想想 TB 分米远,泽字节大约 100 公里。
标签: algorithm sorting virtual-memory external-sorting