进程四要素
1、有一段程序供其执行。
2、有进程专用的内核空间堆栈
3、在内核中有个task_struct数据结构,即通常所说的"进程控制块",有了这个数据结构
进程才能成为内核调度的一个基本单位接受内核的调度。
4、有独立的用户空间
进程描述
在Linux中,线程、进程都是用struct task_struct来表示,他包含了大量描述进程/线程的信息,
其中比较重要的有:
1、pid_t pid; 进程号,最大10亿
2、volatile long state 进程状态
2.1、TASK-RUNNING 进程正在被CPU执行,或者已经准备就绪随时可以执行。
当进程刚被创建时,就处于TASK-RUNNING状态
2.2、TASK_INTERRUPTIBLE 处于等待中的进程,等待条件为真时被唤醒,也可以
被信号或者中断唤醒。
2.3、TASK_UNINTERRUPTIBLE 处于等待中的进程,待资源有效时唤醒,但是不可以
由其他进程通过信号(signal)或中断唤醒
2.4、TASK_STOPPED 进程中止执行。当接受到SIGSTOP和SIGTSTP等
信号时,进程进入该状态,接收到SIGCONT信号后,进程重新回到TASK_RUNNING。
2.5、TASK-KILLABLE Linux2.6.25新引进的进程睡眠状态,原理类似于TASK_UNINTERRUPTIBLE
但是可以被致命信号(SIGKILL)唤醒。
2.6、TASK_TRACED 正处于被调试状态的进程
2.7、TASK_DEAD 进程退出时(调用do_exit),state字段被设置为该状态。