我目前正在学习操作系统课程,而我正在讨论一个过程的内存部分。当一个程序加载到内存中并因此成为一个进程时,可以使用两种形式的内存:堆栈数据结构或堆(我不太确定它是否被称为堆,因为它实际上使用堆数据结构)。我已经看过这个链接Do the Stack and Heap both exist within your systems RAM?,它在一定程度上帮助了我,但实际上没有回答我的问题。
现在我的问题是:
Stack是存储局部变量的内存。当一个函数被调用时,它会与它的所有变量一起被压入堆栈,当它返回时,它会弹出堆栈。它是一种临时记忆。对于堆,对内存有更多控制,因为一旦分配,分配的内存将保留在那里直到明确释放。但是,当我们引用堆栈和堆时,我们是在谈论RAM吗?进程A的堆栈和堆是否驻留在RAM中的进程A的地址空间中?
我知道由于分页并非总是如此,因为操作系统可以进行有效的内存管理,并在不使用该进程时在磁盘上放置一些内存。让我们假设没有使用分页只是为了隔离这两个想法,并更清楚地了解特定过程在内存中发生的事情。