1. 程序是保存在磁盘上的可执行文件。
2. 运行程序时,需要将可执行文件加载到内存,形成进程。
3. 一个程序(文件)可以同时存在多个进程(内存)。
4. 进程在内存空间中的布局就是进程映像。
从低地址到高地址依次为:
代码区(text):可执行指令、字面值常量、
具有常属性的全局和静态局部变量。只读。
数据区(data):初始化的全局和静态局部变量。
BSS区:未初始化的全局和静态局部变量。
进程一经加载此区即被清0。
数据区和BSS区有时被合称为全局区或静态区。
堆区(heap):动态内存分配。从低地址向高地址扩展。
栈区(stack):非静态局部变量,
包括函数的参数和返回值。从高地址向低地址扩展。
堆区和栈区之间存在一块间隙,
一方面为堆和栈的增长预留空间,
同时共享库、共享内存等亦位于此。
2. 运行程序时,需要将可执行文件加载到内存,形成进程。
3. 一个程序(文件)可以同时存在多个进程(内存)。
4. 进程在内存空间中的布局就是进程映像。
从低地址到高地址依次为:
代码区(text):可执行指令、字面值常量、
具有常属性的全局和静态局部变量。只读。
数据区(data):初始化的全局和静态局部变量。
BSS区:未初始化的全局和静态局部变量。
进程一经加载此区即被清0。
数据区和BSS区有时被合称为全局区或静态区。
堆区(heap):动态内存分配。从低地址向高地址扩展。
栈区(stack):非静态局部变量,
包括函数的参数和返回值。从高地址向低地址扩展。
堆区和栈区之间存在一块间隙,
一方面为堆和栈的增长预留空间,
同时共享库、共享内存等亦位于此。
命令行参数与环境区:命令行参数和环境变量。