进程:资源分配的最小单位,拥有独立的用户空间。
线程:调度的最小单位,拥有共享的用户空间。
内核线程:没有用户空间。
1.用户进程状态转换图
2.内核进程状态转换图
3 . task_struct结构
pid_t pid;
volatile long state;//进程状态
int exit_state;//进程退出时的状态
struct mm_struct *mm;//用户空间指针(区分用户进程还是内核进程)
unsigned int policy;//进程调度策略
int prio;//优先级,数字越大优先级越小,0~(MAX_PRIO-1) (MAX_PRIO==140),其中0~MAX_RT_PRIO-1 (MAX_RT_PRIO==100)属于实时进程,以上属于非实时进程
int static_prio;//静态优先级,和nice的意义一样在-20~19之间变动,数值越大,优先级越小,仅仅影响非实施进程优先级,进程初始时间片的大小取决于进程静态优先级,(实时 and 非实时)实时进程的static_prio不参与优先级计算static_prio=MAX_PRIO_RT+nice+20
struct sched_rt_entity rt;//rt->time_slice为时间片=MIN_TIMESLICE+((MAX_TIMESLICE-MIN_TIMESLICE)*(MAX_PRIO-1-(p)->static_prio)/MAX_USER_PRIO-1))