1. 进程通常定义为程序执行的一个实例,在linux系统中,常把进程称为任务(task)或者线程(thread),可以把进程看作充分描述程序已经执行到何种程度的数据机构的汇集。
2.从内核来看,进程的目的就是担当分配系统资源(CPU时间、内存等)的实体。
3.进程描述符,其数据类型是task_struct类型结构,它包含了与一个进程相关的所有信息。
4.进程状态由进程描述符中的state字段表示,state描述了进程当前所处的状态。在linux中,进程状态有以下几种:
1)可运行状态(TASK_RUNNING)
2)可中断的等待状态(TASK_INTERRUPTIBLE)
3)不可中断的等待状态(TASK_UNINTERRUPTIBLE)
4)暂停状态(TASK_STOPPED)
5)跟踪状态(TASK_TRACED)
6)僵死状态(EXIT_ZOMBIE)
7)僵死撤销状态(EXIT_DEAD)
以上几种状态是互斥的,也即任何时候进程只能被设置成其中的一个。
5.linux使用进程标示符(PID)来标示进程,PID存放在进程描述符的pid字段中。
6.当前系统中存在的所有进程的进程描述符被存放在进程链表中,每个进程描述符中都含有一个list_head类型的tasks变量,这个变量中的prev和next变量分别指向进程链表中该进程描述符的前一个和后一个进程描述符。进程链表的头是init_task描述符,也就是linux中的0进程的描述符,0进程描述符的tasks.prev变量指向链表中最后插入的进程描述符的tasks。
7.进程间的关系。进程间的关系可以分为两种:具有亲属关系和非亲属关系。表示这些关系的字段或者变量在进程描述符中有表示。如进程描述符中的real_parent指向创建了该进程的进程描述符(当然,有可能创建该进程的父进程已经不存在了,则这个字段指向进程1(init)的描述符),parent字段指向了当前父进程,通常与real_parent一致。