目录
一、进程
1.定义
进程是已启动的可执行程序的运行中的实例
2.组成
已分配的内存的地址空间
安全属性,包括所有凭证和特权
程序代码的一个或多个执行线程
进程状态
3.进程环境包括
本地和全局变量
当前调度上下文
分配的系统资源,如文件描述符合网络端口
4.进程的生命周期
现有的父进程复制自己的地址空间(fork)来创建一个新的子进程结构,每个新进程分配有一个唯一进程ID(PID),满足跟踪和安全性需求,PID和父进程ID(PPID)是新进程环境的元素,任何进程可创建子进程,所有进程都是第一个系统进程的后代
通过fork进程,子进程继承安全性身份、过去和当前的文件描述符、端口、资源特权,环境变量,以及程序代码。随后,子进程可能exec其自己的程序代码。通常,父进程在子进程运行期间处于睡眠状态,设置一个在子进程完成时发出信号的请求(wait),在退出时,子进程已经关闭或者丢弃了其资源和环境。剩下唯一的资源叫僵停,是进程表中的一个条目。父进程在子进程退出时收到信号而被唤醒,清理子条目的进程表,由此释放子进程的最后一个资源,然后,父进程继续执行自己的程序代码。
二、描述进程状态
名称 |
标志 |
内核定义的状态名称和描述 |
运行 |
红 |
TASK_RUNNING:进程正在CPU上执行,或者正在等待运行。处于运行中(或可运行)状态时,进程可能正在执行用户例程或内核例程(系统调用),或者已排队并就绪 |
睡眠 |
S |
TASK_INTERRUPTICLE:进程正在等待吗某一条件 |
睡眠 |
D |
TASK_UNINTERRUPTICLE:此进程也在睡眠,但是与S状态不同,不会响应信号。仅仅在进程中断可能会导致意外设备状态的情况使用 |
睡眠 |
K |
TASK_KILLABLE:与不可中断的D状态相同,但是有修改,允许等待中的任务响应要被中断(彻底退出)的信号 |
睡眠 |
I |
TASK_REPORT_IDLE:D状态的一个子集,在计算负载均衡值时,内核不会统计这些进程 |