进程被分成三个区域: 文本,数据和堆栈。我们把精力集中在堆栈区域,但首先按照顺序简单介绍一下其他区域。
1. 文本区域是由程序确定的,包括代码(指令)和只读数据。该区域相当于可执行文件的文本段。这个区域通常被标记为只读,任何对其写入的操作都会导致段错误(segmentation
violation)。
2. 数据区域包含了已初始化和未初始化的数据。静态变量储存在这个区域中。数据区域对应可执行文件中的heap-bss段。它的大小可以用系统调用brk(2)来改变。如果bss数据的扩展或用户堆栈把可用内存消耗光了,进程就会被阻塞住,等待有了一块更大的内存空间之后再运行.
新内存加入到数据和堆栈段的中间。
|