operating-system - 每个程序是否在内存中都有自己独立的段(代码、堆栈、数据)?

标签 operating-system executable memory-segmentation

假设有许多程序同时运行。
每个运行的可执行程序是否在 RAM 中都有自己的代码、数据和堆栈段,或者是完整的 RAM 分为 4 个段,每个段分别保存每个程序的段。

最佳答案

这取决于两件事:

  • 您的部署架构
  • 运行进程的操作系统

  • 如果您在常见的主流 Linux、Windows、BSD 上运行 x86,那么
  • 每个进程都有自己的私有(private)虚拟 RAM
  • 所有段文本(代码)、堆、数据都在同一个逻辑地址空间(虚拟 RAM 段)

  • 从历史上看,x86 被设计为能够支持分段内存,但操作系统从未使用过它,并且最初在 AMD64 中放弃了对它的支持。尽管最近的处理器再次支持它用于虚拟化和管理程序。如今,用户态应用程序通常在没有分段的情况下部署。

    关于operating-system - 每个程序是否在内存中都有自己独立的段(代码、堆栈、数据)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17948638/

    相关文章:

    operating-system - 当有人说计算机 'Hangs' 或死机时会发生什么?

    python - 重要的包和模块与 py2exe 不兼容?

    c - 从c程序构建可执行程序

    assembly - fs和gs寄存器如何计算有效地址

    assembly - Linux x86 64 中 MSR_GS_BASE 的详细信息

    c++ - 可移植系统/过程信息库

    c - 进程中的 fork()、wait() 和 exit() 功能

    linux - 是否有实现纳秒级延迟的实时 Linux 发行版?

    python - 如何在 python 3.8.5 中创建 py 文件的可执行文件?

    assembly - x86-64 和远程调用/跳转