堆栈和堆内存都是指RAM(假设没有使用分页)?

我目前正在参加一个操作系统课程,而我正在讨论流程的内存部分。 当一个程序被加载到内存中并因此成为一个进程时,可以使用两种形式的内存:一个是堆栈数据结构还是一个堆(我不太确定它是否被称为堆,因为它实际上使用了堆数据结构)。 我已经看过这个链接堆栈和堆都存在于你的系统RAM中吗? 这在一定程度上帮助了我,但实际上并没有回答我的问题。

现在我的问题是:

堆栈是存储局部变量的内存。 当一个函数被调用时,它会连同它的所有变量一起被压入堆栈,当它返回时,它会弹出堆栈。 这是一种暂时的记忆。 对于堆来说,内存有更多的控制权,因为一旦分配完毕,分配的内存将一直保留在内存中,直到明确释放为止。 但是,当我们引用堆栈和堆时,我们是在讨论RAM吗? 进程A的堆栈和堆是否驻留在RAM中的进程A的地址空间中?

我知道,由于分页并非总是如此,因为操作系统可以进行高效的内存管理,并且在进程未被使用时在磁盘上放置一些内存。 让我们假设不使用分页来隔离这两个想法,并且更清楚地了解特定进程的内存情况。


是的,他们都在RAM中。 也许这种ARM关于微处理器内存模型的链接有助于你的理解?

链接地址: http://www.djcxy.com/p/82735.html

上一篇: Do stack and heap memory both refer to the RAM(Assume no paging is being used)?

下一篇: Array as template parameter: stack or heap?