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

时间:2015-12-04 22:11:08

标签: c memory-management operating-system

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

现在我的问题是:

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

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

1 个答案:

答案 0 :(得分:1)

是的,他们都在RAM中。关于微处理器内存模型的这个link from ARM可能有助于您的理解吗?