【问题标题】:Memory Layout of a C program (Phyical vs Logical view)C 程序的内存布局(物理与逻辑视图)
【发布时间】:2014-09-25 19:26:20
【问题描述】:

按照我的理解,C程序的逻辑视图分为很多段如

Code
Data
Bss
Heap
Stack (typical implementation: Heap and Stack growing in opposite directions).

这些段如何在物理内存中对齐?

据我了解,物理内存使用固定大小的帧来存储进程的页面。

如果是这样,那么这与用户视图有何实际一致性?示例:堆栈和堆区域可能分布在许多页面中。页面可能分散在内存中。

【问题讨论】:

  • 看来您的问题一般是关于虚拟内存的。这与“C 程序”完全没有关系。这也与“代码”、“数据”或“Bss”等部分无关。
  • 这取决于操作系统和硬件

标签: c memory memory-management


【解决方案1】:

如果是这样,那么这实际上与 用户视图?示例:堆栈和堆区域可能分布在 很多页。页面可能分散在内存中。

虚拟内存系统将“虚拟”地址映射到物理地址,因此用户代码永远不会知道或关心它正在使用的内存在物理内存中的位置。这通常使用硬件内存管理单元 (MMU) 完成,但也可以由没有 MMU 的操作系统完成。就用户代码而言,只有一个不错的大地址空间始终可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    相关资源
    最近更新 更多