Linux进程地址空间

  我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。

  C程序一直由下列几部分组成:

  A.正文段。这是由cpu执行的机器指令部分。通常,正文段是可共享的,所以即使是经常执行的程序(如文本编辑程序、C编译程序、shell等)在存储器中也只需要有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改器自身的指令。

  B.初始化数据段。通常将此段称为数据段,它包含了程序中需赋初值的变量(也就是初始化的全局变量以及静态变量)。  

  C.非初始化数据段。通常将此段称为bss段,在程序开始执行之前,内核将此段初始化为0。函数外的说明:

  D.栈。存储相应的局部变量

  E.堆。通常在堆中进行动态存储分配。由于历史上形成的惯例,堆位于非初始化数据段顶和栈底之间。

posted @ 2013-10-11 09:59  学会淡定  阅读(199)  评论(0编辑  收藏  举报