【发布时间】:2020-09-09 03:57:31
【问题描述】:
在 CS 中,有不同的内存类型,例如 Stack 和 Heap。但是,在物理层面上,它们是否相同,并且这些概念仅适用于软件编写者?或者在给定的计算机中是否有不同类型的内存。我知道 HDD 和 SSD 存储存在差异,但是给定的磁盘呢?在给定的 HDD 上,每个内存块是否都与其他内存块相同?
【问题讨论】:
标签: caching memory stack dynamic-memory-allocation ram
在 CS 中,有不同的内存类型,例如 Stack 和 Heap。但是,在物理层面上,它们是否相同,并且这些概念仅适用于软件编写者?或者在给定的计算机中是否有不同类型的内存。我知道 HDD 和 SSD 存储存在差异,但是给定的磁盘呢?在给定的 HDD 上,每个内存块是否都与其他内存块相同?
【问题讨论】:
标签: caching memory stack dynamic-memory-allocation ram
标题问题的答案是“不一定”。软件决定如何分配内存。软件可能会从物理地址开始使用内存并向上移动,或者以相反的顺序,或者随机等等。所以如果你使用了总内存的 50%,它可能分散在各处,或者它可能是物理内存的下半部分。
磁盘也是如此。这取决于软件(可能是驱动程序软件,但也可能是磁盘控制器)将事物物理放置在磁盘上的位置。
当然也有保留区域,但同样是按照惯例。例如,引导加载程序放置在磁盘驱动器的固定区域,BIOS 入口点放置在特定的内存地址等。
一般来说,内存位置就是内存位置。你的程序请求一块一定大小的内存,操作系统的内存分配器会返回一个指向内存的指针。您可能正在将该物理内存块用于程序的堆,而在过去,同一块可能已用于其他程序的可执行代码。
记忆就是记忆。除了操作系统或机器 BIOS 使用的少数保留区域外,其他区域都是一样的。磁盘空间也是如此。
【讨论】: