我相信很多人都使用过任务管理器,如下图所示:
在进程的选项卡下面显示了所有当前正在运行的进程,包括应用程序、后台服务等,也可以在这里找到那些隐藏在系统地层深处的病毒程序或者木马程序,不过前提是你必须知道它的名称。正因为如此,在应用程序出现未响应,即俗话说的卡死现象时,只要调出任务管理器,强行终止应用程序或者进程,就可以结束卡死的状态。
说了这么多,无非就是想让大家对进程有一个直观的概念。那么具体什么是进程,它的定义是什么?为什么会有进程?……我给大家接着说。
进程的概念起源于20世纪60年代初期,首先由美国MIT的MULTICS系统和IBM公司的CTSS/360系统所引入,得到人们的普遍重视,并被其后的操作系统研究者和设计者们广为采用。当然与操作系统一样,进程目前也尚无统一的定义。下面给出几种说法以供参考:
1. 进程是程序的一次执行。
2. 进程是可以参与并发进程执行的程序。
3. 进程是程序与数据一道通过处理器执行时所发生的活动。
4. 所谓进程,就是一个程序在给定的空间和初始环境下,在一个处理器上执行的过程。
而中国于1978年在庐山召开的国内操作系统研讨会上给出的定义是:进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。
为什么会有进程呢?因为在多道程序系统中运行的程序是处于时断时续的状态之中的。当一个程序获得处理器资源后向前推进,当它需要某种资源而未得到时只好暂时停下来,等到得到需要的资源时再继续向前推进。那么在程序暂停时,必须把中断的信息保存,以便再次推进时能够恢复暂停时的信息并从断点处开始执行。这样,在多道程序系统中运行的程序需要一个保存断点现场信息的区域,而这个区域并不是程序的组成部分,因此就需要一个能够更准确地描述多道程序系统中执行程序的术语,这就是所谓的进程(process)。
进程有3个基本状态:运行态、就绪态、等待态。它们之间的转换关系可以用下图来描述:
当然了,对于不同的处理器调度算法,进程状态转换图可能略有不同。
下面是几个非常重要的概念,如果不太清楚的可以查资料,我就不再赘述了。
进程控制块(PCB):是标志进程存在的数据结构,其中包含系统对进程进行管理所需要的全部信息。
进程由两个部分组成,即PCB和程序,其中程序包括代码和数据等。
为实现对进程的管理,系统将进程组织成若干队列,系统中的进程队列分为3类:就绪队列,等待队列,运行队列。
从操作系统的角度看,进程分为系统进程和用户进程两大类。
进程的创建:pid =fork()
进程的撤销:exit(status)
看到这里,你可能会对进程和程序产生了混淆,不过没关系,最后对进程与程序的联系和区别进行一下说明:
联系:程序是进程的组成部分之一,进程存在的目的就是执行其所对应的程序。如果没有程序,进程就没了任何意义。
区别:1.程序是静态的,而进程则是动态的。
2.程序可以写在纸上或者是存储在某种介质上,而进程具有生存周期,创建后存在,撤销后消亡。
3.一个程序可以对应多个进程,但是一个进程只能对应一个程序。另外,一个程序的多次执行也分别对应不同的进程。