程序是存在磁盘上的可执行文件;
进程是程序的执行实例,是资源(CPU时间、内存等)分配和拥有的实体。
进程ID:进程的唯一数字标识符,用pid_t定义,用getpid()得到,需要头文件unistd.h。PID最大32767。
进程描述符process descriptor:都是task_struct类型结构,它的字段包含了与一个进程相关的所有信息(属性、指针)。
用于进程控制的主要函数:fork、exec、waitpid。
创建进程时,接受父进程地址空间等一个(逻辑)拷贝,并从进程创建系统调用的下一条指令开始执行与父进程相同的代码。
waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。需要头文件sys/types和sys/wait.h
线程:是CPU调度的最小单位。通常一个进程只有一个控制线程thread。在一个进程内的所有线程共享同一地址空间、文件描述符、栈以及与进程相关的属性。
一个进程有几个用户线程组成,每个线程都代表进程的一个执行流。(pthread库的标准库函数集编写)
进程状态
进程描述符中state字段描述了进程当前所处的状态。用标志表示进程状态,它们是互斥的。
可运行状态 TASK_RUNNING(进程中CPU上执行或准备执行)
可中断的等待状态 TASK_INTERRUPTIBLE(进程被挂起即睡眠,直到某个条件变为真。硬件中断,释放进程正等待的系统资源;或传递一个信号可唤醒进程,进程状态则放回到TASK_RUNNING。)
不可中断的等待状态 TASK_UNINTERRUPTIBLE(信号传递到睡眠进程不能改变它的状态)
暂停状态 TASK_STOPPED(进程的执行被暂停。当进程接收到SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号后,进入暂停状态。)
跟踪状态 TASK_TRACED(进程的执行已由debugger程序暂停)
僵死状态 EXIT_ZOMBIE(进程的执行被终止,但父进程没有发布wait4()或waitpid()系统调用来返回有关死亡进程的信息)
僵死撤销状态 EXIT_DEAD(最终状态:由于父进程刚发出wait4()或waitpid()系统调用,因而由系统删除。)
原文:http://www.cnblogs.com/LarryGen/p/4927708.html