组成要素
1、有一段程序供其执行
- 程序段:能被进程调度到 CPU 执行的代码
2、有进程专用的系统堆栈空间
- 数据段:进程对应的程序加工处理的原始数据、栈
3、在内核有task_struct数据结构
- 进程控制块PCB :进程存在的唯一标识,包括进程描述信息、控制信息、资源分配信息等
4、有独立的存储空间,拥有专有的用户空间
如果只具备前面三条而缺第四条,那就称为 “线程”
- 如果完全没有用户空间,就称为
“内核线程”
; - 而如果共享用户空间则就称为
“用户线程”
子进程
- 使用 fork 创建子进程,创建的子进程会复制父进程的 文件描述符
状态
① 可执行状态,正在运行或等待运行。
② 可中断的等待状态。
③ 不可中断的等待状态。
④ 停止状态。
⑤ 终止状态(僵尸进程)。
启动
- init:init 进程是所有linux进程的父进程,进程号为1,也是内核态进入用户态的入口
- 启动进程需要读取()配置文件: /etc/inittab
- 通过调用init函数,由1号内核态进程转成init进程