Unix环境高级编程读书笔记(1):c程序进程空间布局
来源:互联网 发布:好听的男英文歌知乎 编辑:程序博客网 时间:2024/06/07 02:12
C程序进程空间布局
Linux进程空间由四部分构成,Text, Global Data, Heap, Stack
如下图所示:
在多线程进程中,会有多个栈,并且共享Text, global data和heap
Text(正文段)
就是CPU需要执行的机器指令部分。通常是可以共享的,所以即使频繁执行的程序在存储器中也只需要一个副本,而且该部分常常是只读的。Global Data(数据段)
上图中的未初始化的数据与初始化的数据合成为数据段,用来保存程序中的静态变量和全局变量Stack(栈)
局部变量以及每次函数调用时需保存的信息都存放与此段中。每次函数调用时,其返回地址以及以及调用者的环境信息(如函数调用前的寄存器信息)都存放在栈中。然后,最后被调用的函数在栈上为其自动和临时变量分配存储空间。Heap(堆)
Heap存放动态变量。
当有函数调用发生时,Stack会向下增加一帧,在新的一帧中放置函数的返回地址以及传入函数的参数。位于栈底的帧和全局变量一起,构成了当前的环境。
当程序中使用malloc的时候,heap会向上增加。当stack和heap发生重叠时,就叫栈溢出(stack overflow)。
当程序中调用fork命令后,子进程获得父进程数据空间、堆和栈的副本,共享正文段。
在MacOS中可以使用size命令查看文件的空间布局信息:
huangyus-MacBook:tower walker$ size /sbin/launchd __TEXT __DATA __OBJC others dec hex258048 24576 0 4295008256 4295290880 10004f000
0 0
- Unix环境高级编程读书笔记(1):c程序进程空间布局
- UNIX环境高级编程-读书笔记-进程
- unix进程的环境--unix环境高级编程读书笔记
- 《UNIX环境高级编程》十七高级进程间通信读书笔记
- 《UNIX环境高级编程》读书笔记之进程环境
- 《UNIX环境高级编程》七进程环境读书笔记
- 《Unix环境高级编程》读书笔记(1)
- 《unix环境高级编程》 读书笔记 (1)
- 《读书笔记》系列1:UNIX环境高级编程
- unix高级环境编程-读书笔记(1)
- Unix环境高级编程读书笔记(1)
- UNIX环境高级编程读书笔记(1)
- c程序进程空间布局
- UNIX环境高级编程读书笔记(十三)—守护进程
- UNIX环境高级编程读书笔记(十三)—守护进程
- 《UNIX环境高级编程》第13章 守护进程 【读书笔记】
- linux进程控制(一)--unix环境高级编程读书笔记
- 《UNIX环境高级编程》读书笔记之进程控制
- poj1419——Graph Coloring(dfs)
- poj1273 2010.2.17
- usaco dualpal
- include<>与include""的区别
- lesson 01 Hello Sdl
- Unix环境高级编程读书笔记(1):c程序进程空间布局
- [转] MySQL5绿色版安装教程
- Java程序员需要了解的8个开发工具
- usaco frac1
- PAT1003.我要通过!
- poj1459 2010.2.17
- poj1047 2010.2.17
- usaco friday
- [转] 编程语言解惑:学.Net还是学Java