【发布时间】:2013-10-06 17:49:58
【问题描述】:
好的,我有一个菜鸟学生的问题。
所以我熟悉堆栈包含子程序调用,堆包含可变长度数据结构,全局静态变量分配到永久内存位置的事实。
但是,这一切在理论层面上是如何运作的呢?
编译器是否只是假设它拥有从地址 0 到地址无穷大的整个内存区域?然后就开始分配东西?
它在哪里布置指令、堆栈和堆?在内存区域的顶部,内存区域的末尾?
然后这如何与虚拟内存一起工作?虚拟内存对程序是透明的?
很抱歉有一个问题,但我正在学习编程语言结构,它一直提到这些区域,我想在更实际的层面上理解它们。
非常感谢!
【问题讨论】:
-
我可以要求快速跟进吗?程序编译时调用函数、创建局部变量并将它们添加到堆栈的底层机制是否包含在程序中?还是机器是操作系统的一部分?
标签: memory assembly compiler-construction operating-system virtual-memory