2014-09-25 72 views
-1

按我理解,C程序的逻辑视图被分成许多区段,如内存布局(Phyical VS逻辑视图)

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

如何这些段在物理存储器对准?

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

如果是这种情况,那么这与用户视图实际上是一致的?例如:堆栈和堆区可能分布在多个页面中。页面可能分散在内存中。

+0

它看起来像你的问题是关于一般的虚拟内存。这与“C程序”完全没有关系。这也与“代码”,“数据”或“Bss”等部分无关。 – AnT 2014-09-25 19:37:36

+0

这取决于操作系统和硬件 – 2014-09-25 20:17:20

回答

0

如果是这样的话,那么这与 用户视图实际上是一致的呢?例如:堆栈和堆区可能分布在多个页面之间的 。页面可能分散在内存中。

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