进程的存储空间
每当进程申请一片存储空间或者企图读写已分配的存储空间时,内核负责映射虚地址到物理地址,即负责虚地址空间至实地址空间的转换。
进程的地址空间
进程的地址空间由系统允许程序引用或访问的所有存储单元组成。进程的地址空间及其寄存器上下文,反映了进程所运行的当前状态。当进程用exec()装入一个新程序时,内核便为这个新程序建立地址空间。
进程的地址空间由若干不同的段组成,每个段是一片连续存储单元。有以下几种段:
(1)正文段:存放程序的执行代码。
(2)初始化数据段:用于存放程序中赋予了初值的静态变量和全局变量
(3)未初始化数据段(bss段):用于存放程序中不带初值的全局变量和静态局部变量。这个段的数据在程序运行之前可由内核置为0.
(4)栈:用于存放函数内的局部变量、临时变量以及函数的调用环境。高地址向低地址生长。
(5)堆:用于存放动态申请的存储空间。低地址向高地址生长。
这里main调用do_line,do_line调用cmd_add