进程
进程是什么?
- An abstraction of a running job/program/task. 正在执行的程序。
- 程序是被动的实体,进程是主动的实体。
进程镜像:
C 程序在内存中的组织方式
基本上来说一个可执行程序由4个区域组成:代码段、静态数据区、堆与栈。
- 代码段包含程序运行时所执行的机器指令。
- 静态数据区包含在程序生命周期内一直持久的数据,比如全局变量和静态局部变量。
- 堆包含程序运行时动态分配的存储空间,比如用malloc分配的内存。
- 栈包含函数调用的信息。按照惯例,堆的增长方向为从程序低地址到高地址向上增长,而栈的增长方向刚好相反(实际情况可能不是这样,与CPU的体系结构有关)。
当C程序中调用了一个函数时,栈中会分配一块空间来保存与这个调用相关的信息。每一个调用都被当做是活跃的。栈上的那块存储空间称为活跃记录,或者称为栈帧(stack frame)。