数据结构 - 内存还是存储?

时间:2018-05-03 09:46:39

标签: data-structures

当我们谈论数据结构(如数组)时,我们是指数据如何存储在RAM(连续的内存位置)或硬盘中?如果它也指硬盘,那么物理实现与RAM有何不同?

1 个答案:

答案 0 :(得分:0)

我们更喜欢连续的内存位置。如果我们看一下硬件级别,原因就变得很明显了。

CPU 不直接与 RAM 互动,而是通过CPU caches进行互动(通常分为L1等级别,L2L3等,L1最小,最快。每当 CPU 想要一些数据时,它就会向L1发送请求,如果找不到,L1会将请求委托给L2,依此类推(直到硬盘)为如下图所示:

enter image description here

现在,当在任何缓存中找不到数据时,我们将其称为缓存未命中。为了减少缓存未命中,当 CPU 想要访问地址{{ 1}}在 RAM 中,它不仅会在地址x处获取数据,还会在地址x附近获取数据(参见下图)。因为我们假设"如果在特定时间引用了特定的内存位置,那么很可能在不久的将来引用附近的内存位置(又名引用位置)。

enter image description here

访问数组元素可确保顺序数据访问,从而确保最小缓存未命中。您现在可以想象出为什么数组比随机/顺序数据访问方面的链接列表等数据结构快得多。同样,过程也适用于其他数据结构。