一、程序与进程的区别

1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概 念,有一定的生命期,是动态产生和消亡的。 

2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有 可顺序地执行若干个程序。

 

 

二、父进程【PPID】与子进程【PID】

1、子进程是由一个进程所产生的进程,产生这个 子进程的进程称为父进程。 

2、在Linux系统中,使用系统调用fork创建进程。 fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。 

3、父进程终止子进程自然终止。 

4、两种特殊情况

(1)父进程终止,子进程依然存在,子进程变成孤儿进程,其自动PPID指向init

(2)子进程死亡,父进程不知到,子进程变成僵尸进程

 

三、前台进程与后台进程

前台进程: 

在Shell提示处敲入命令后,创建一个子进程【父进程是Shell】,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在 它完成之前不能执行另一个命令。 

后台进程: 

在Shell提示处敲入命令,若后随一个&,Shell创建的子 进程运行此命令,但不用等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运 行。后台进程必须是非交互式的。

如:find /home -name init > test/tmp.txt

 

四、进程状态

就绪状态:进程已经分配到资源,但因为 其它进程正占用 CPU,所以暂时不 能运行而等待分配 CPU的状态。 

等待状态:因等待某种 事件而暂时不能运 行的状态。 

运行状态:进程分配到 CPU,正在处理器 上运行。

 

 

五、进程状态细化

用户态运行:在CPU上执行用户代码 

核心态运行:在CPU上执行核心代码 

在内存就绪:具备运行条件,只等调度程序为它分配CPU 

在内存睡眠:因等待某一事件的发生,而在内存中排队等待 

在外存就绪:就绪进程被交换到外存上继续处于就绪状态 

在外存睡眠:睡眠进程被交换到外存上继续等待 

在内存暂停:因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令。 

在外存暂停:处于跟踪暂停态的进程被交换到外存上 

创建态:新进程正在被创建、但尚未完毕的中间状态 

终止态:进程终止自己