进程--一个执行中的程序。它是动态的实体。
进程四要素-------
1--有一段程序供其执行。这段程序不一定是某个进程所专有,可以和其它进程共用。
2--有进程专用的内核空间堆栈。
3--在内核中有一个task_struct数据结构,即进程控制块。有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核调度。
4---有独立的用户空间
有独立的用户空间----进程。
有共享的用户空间----用户线程。
无用户空间----内核线程。
进程是资源分配的最小单位,线程是调度的最小单位。
进程描述--------
线程和进程都使用struct task_struct
pid_t pid ----------进程号。
volatile long state -----进程状态
1--TASK_RUNNING---对应操作系统原理的就绪和执行态
当一个进程刚被创建时,就处于此状态
2--TASK-INTERRUPTIBLE---
处于等待中的进程,待等待条件为真时被唤醒,也可以被信号或中断唤醒。
3--TASK-UNINTERRUPTIBLE---
处于等待中的进程,待资源有效时唤醒,但不可以由其它进程通过信号或中断唤醒。
4--TASK_STOPPED
进程终止执行。当接收到SIGSTOP和SIGTSTP等信号时,进程进入该状态,接收到SIGCONT信号后,进程重新回到TASK_RUNNING.
5--TASK_KILLABLE
类似于TASK-UNINTERRUPTIBLE,但是可以被致命信号SIGKILL唤醒。
6--TASK_TRACED
正处于被调试状态的进程。
7--TASK_DEAD
进程退出时,(调用do_exit)state字段被设置为该状态。
int exit_state-----进程退出时的状态
EXIT_ZOMBIE---僵死进程
EXIT_DEAD---僵死撤销状态。
struct mm_struct *mm---进程用户空间描述指针,内核线程该指针为空。
unsigned int policy----该进程的调度策略。
int prio---优先级-数值越大进程优先级越小。
0----(MAX_PRIO-1)之间取值(MAX_PRIO定义为140)其中,0---MAX_RT_PRIO-1
属于实时进程。MAX_RT_PRIO------MAX_PRIO属于非实时进程。MAX_RT_PRIO定义为100
int static_prio----静态优先级
struct sched_rt_entity rt
rt->time_slice----时间片
current ----指向当前正在运行的进程的task_struct