用O(1 / B)实现堆栈和队列

时间:2014-04-09 19:34:25

标签: data-structures stack queue

这是this课本(第77页)中的练习:

  

练习48(外部存储器堆栈和队列)。设计I / O模型中每个操作需要O(1 / B)I / O的堆栈数据结构   来自第2.2节。将两个块保留在内部存储器中就足够了。   在只有一个块的天真实现中会发生什么   记忆?调整您的数据结构以实现FIFO,再次使用两个   内部缓冲存储器块。使用四个缓冲区实现deques   块。

我不想要代码。任何人都可以解释我需要什么,以及如何在O(1 / B)中进行操作?

1 个答案:

答案 0 :(得分:0)

正如本书所述,引用第27页第2.2节:

  

外部记忆:< ...>有一些特殊的I / O操作可以在慢速和快速存储器之间传输B个连续字。对于   例如,外部存储器可以是硬盘,M则是   主存储器大小和B将是块大小,这是一个很好的折衷方案   低延迟和高带宽之间。在当前技术上,M = 1   GByte和B = 1 MByte是实际值。然后就是一个I / O步骤   大约10ms,这是1GHz机器的107个时钟周期。和另外一个   设置参数M和B,我们可以建模较小的访问   硬件缓存和主内存之间的时差。

因此,在O(1 / B)中执行操作很可能意味着,换句话说,对每个B堆栈/队列操作使用恒定数量的这些I / O操作。

相关问题