一、程序与进程的区别
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程序而进入跟踪暂停状态,等待其父进程发送命令。
在外存暂停:处于跟踪暂停态的进程被交换到外存上
创建态:新进程正在被创建、但尚未完毕的中间状态
终止态:进程终止自己
转载于:https://blog.51cto.com/zhujifang/1380193