进程通常定义为程序执行的一个实例。
一、进程、线程与轻量级进程
轻量级进程
Linux中常常将进程称为任务或者线程,因此在Linux中其实是没有线程这一概念的,所谓线程其实由进程来模拟实现,即我们说的轻量级进程。(但在Windows中有线程)
进程
目的:从内核的观点来看,进程的目的是担当分配系统资源(CPU时间、内存)的实体。
创建:每一个进程都只有一个父进程,它在创建时几乎与父进程相同,它接收父进程地址空间的一个逻辑拷贝,并从进程创建系统调用的下一条指令开始执行与父进程相同的代码。父子进程各自有独立的数据拷贝(堆与栈),因此父子进程对一个内存单元的修改对彼此都是不可见的。
线程
意义:每一个线程都代表进程的一个执行流。
进程是分配资源的最小单位,而线程是调度资源的最小单位。
二、进程描述符
为了管理进程,内核要对每一个进程做的事情有清楚的描述。
进程描述符中包含了许多进程属性的字段,一些字段还包括了指向其他数据结构的指针。
进程状态
进程状态分为以下几种:
可运行状态:进程正在CPU上执行或者准备执行。
可中断的等待状态:进程被挂起,直到某个条件变为真