world is simple

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 既然很多公司面试笔试都喜欢问,不妨把它列在这儿好了:

I guess this picture is enough.

 

 

 (2) 进程逻辑地址空间布局

 

 进程的组成部分:

 四部分:指令段,数据段,堆栈段和系统数据

n指令段(Text)
u程序的CPU指令代码,包括:主程序和子程序编译后的CPU指令代码,以及调用的库函数代码
u指令段的大小固定不变,只读
n用户数据段
u全局变量,静态(static)变量,字符串常数
u允许数据段增长和缩小,实现内存的动态分配

     Ø系统调用sbrk()允许编程调整数据段的大小

     Ø内存管理库函数,如:malloc()free() 

n用户堆栈段
u程序执行所需要的堆栈空间,实现函数的调用

     Ø用于保存子程序返回地址

     Ø在函数和被调函数之间传递参数

     Ø函数体内部定义的变量(静态变量除外)

umain函数得到的命令行参数以及环境参数

     Ø存放在堆栈的最底部

     Ømain函数运行之前,这些部分就已经被系统初始化

u堆栈段的动态增长与增长限制
n系统数据段
u上述三部分在进程私有的独立的逻辑地址空间内
u系统数据段是内核内的数据,每个进程对应一套

     Ø包括页表和进程控制块PCB 

 

 

posted on 2012-04-25 00:20  worldisimple  阅读(252)  评论(0编辑  收藏  举报