use*_*982 5 executable operating-system memory-segmentation
假设有许多程序同时运行.
运行的每个可执行程序是否在RAM中具有自己的代码,数据和堆栈段,或者是完整的RAM分为4个段,每个段包含每个程序的相应段.
这取决于两件事:
如果你在普通主流Linux,Windows,BSD上运行x86那么
从历史上看,x86的设计具有支持分段内存的能力,但操作系统从未使用它,并且最初在AMD64中删除了对它的支持.虽然最近的处理器再次支持它用于虚拟化和管理程序.Userland应用程序通常在没有分段的情况下部署.
简短回答:这取决于它运行的硬件和操作系统.
通常,每个进程都有自己的虚拟内存空间,让人觉得它看起来像是计算机上运行的唯一进程.该虚拟存储空间由OS划分为代码/数据/堆栈段(这些通常具有固定/公共地址).
物理RAM的使用,完全取决于操作系统 - 它可以随意使用不同的RAM部分,程序甚至不知道它.