Memory 进程如何准确地存储在内存中?

Memory 进程如何准确地存储在内存中?,memory,process,stack,heap-memory,virtual-memory,Memory,Process,Stack,Heap Memory,Virtual Memory,我了解流程是如何以页面的形式存储的。此外,程序的内存布局通常包含4个段,即代码段、数据段、堆栈和堆。但我有一些问题,而结合上述两件事 堆栈和堆是否也存储在页面中?它们如何区分特定的部分是堆栈,而另一部分是堆 如果堆栈和堆(也是数据段)存储在页面中,那么它们是如何链接到特定进程的 完整的物理内存是分为页还是只分为存储代码段的部分内存?(我很困惑,因为页面框架包含页码和指令偏移量,而指令意味着程序的代码。) 另外,当我们说系统中有4GB的虚拟内存时,是指每个进程有4GB的虚拟内存,还是总共有4GB的

我了解流程是如何以页面的形式存储的。此外,程序的内存布局通常包含4个段,即代码段、数据段、堆栈和堆。但我有一些问题,而结合上述两件事

  • 堆栈和堆是否也存储在页面中?它们如何区分特定的部分是堆栈,而另一部分是堆
  • 如果堆栈和堆(也是数据段)存储在页面中,那么它们是如何链接到特定进程的
  • 完整的物理内存是分为页还是只分为存储代码段的部分内存?(我很困惑,因为页面框架包含页码和指令偏移量,而指令意味着程序的代码。)
  • 另外,当我们说系统中有4GB的虚拟内存时,是指每个进程有4GB的虚拟内存,还是总共有4GB的虚拟内存?如果它的总容量为4GB,那么它不是与物理内存(RAM)类似吗

  • 所有这些都取决于实施情况。请标记您感兴趣的实现。@RaymondChen实际上,我对程序如何划分为段以及如何将所有这些段存储在页面中的一般概念感兴趣。如果它在不同的操作系统中有很大的不同,那么它在Linux中的实现将会很有帮助,谢谢。。!