概念
进程(0process)是一个可执行程序的实例。
进程是由内核定义的抽象的实体,并为该实体分配用以执行程序的各项系统资源。
程序是包含了一系列信息的文件:
- 二进制格式标识
- 机器语言指令
- 程序入口地址
- 数据
- 符号表和重定位表
- 描述程序中函数和变量的位置和名称
- 用途:调试和运行时的符号解析(动态链接)
- 共享库和动态链接信息
程序文件中的一些字段列出了程序运行时需要使用的共享库,以及加载共享库的动态链接器的路径名。
从内核角度看,进程由用户内存空间(user-space memory)和一系列内核数据结构组成,用户内存空间包含程序代码及代码所使用的的变量,内核数据结构用于维护进程状态信息。
进程的内存布局
创建和执行进程
进程ID和父进程ID
进程终止和终止状态
1._exit()系统调用或相关的exit( )库函数,请求退出,进程自己指明终止状态。
- 向进程传递信号,将其kill,根据导致进程kill的信号类型设置进程的终止状态。
无论进程以什么方式退出都会生成“终止”状态,一个非负小整数,可供父进程wait()系统调用检测,终止状态为0则为正常退出,非0则有错误发生。
init进程
系统引导时内核创建init进程,是“所有进程之父”,对应的程序文件为/sbin/init。init进程pid总为1,以root权限运行。
主要任务是创建并监控系统运行的系列进程。
所有其他进程都是init和其后代通过fork()创建的。
