定义:
具有一定独立功能的程序关于某个数据集合的一次活动。
基本的分配单元和执行单元。
结构:
程序、数据、进程控制块(PCB)。
【注】:从进程的结构,就可以看出进程和程序的主要区别,程序只是构成进程的一部分,是不能划等号的。
特征:
- 动态性:进程的实质是在多道程序系统中的一次执行过程,进程从被创建到销毁有一个生命周期。
- 并发性:多个进程可以在同时运行,这也是OS的重要特征。
- 独立性:进程是一个能独立运行的单位,能独立参与资源分配和调度。
- 异步性:进程的执行的速度和顺序具有不确定性。
状态和转换:
其实仅仅从上图以及其文字描述,在不知道进程状态概念的情况下,我们是无法获得足够的有效信息的,所以还是得先了解进程状态的概念。
举一个简单的例子:
汽车
熟悉汽车的朋友都知道汽车在公路上行驶,可以有3种状态:停止、待机、运行。
运行:只要轮子在转,汽车还在移动,那就是运行。
停止:汽车没油了,跑不动了。
待机:遇到红灯了,必须得停,但是不熄火,只要绿灯到了,就能继续跑。
把状态图里的内容稍微替换一下,现在能明白了吗?
运行->停止:没油了
运行->待机:红灯停
停止->待机:虽然加满了油,但是不能马上上路,只能先发动机器,只有绿灯来了,才能上路运行。
待机->运行:绿灯行
以上,我们很轻松地了解了汽车在公路上行驶期间可能存在的状态以及状态之间的关系,下面,类似的了解一下进程的状态以及相互关系。
进程具有3个状态(暂时这么认为):运行、就绪、等待(或者阻塞)
运行:就是运行,类比于汽车的运行
就绪:什么条件都满足,就是CPU没时间片了(这个概念比较生疏,可以理解为CPU太忙,没空管这个新添加的进程),类比于路况繁忙,汽车遭遇红灯了
等待(或者阻塞):不是CPU不给力,是你这个进程本身就不具备运行的条件,等你先凑齐必要的东西,再来找CPU吧,类比于汽车没油了
运行->等待:突然之间运行的条件不满足了,例如I/O问题,最典型的例子就是断网了
运行->就绪:CPU被其他进程占满了,没时间片了。
停止->就绪:运行条件满足了,但是还是要走流程的,先进入就绪队列中等着,等轮到你的时候再说。
就绪->运行:有CPU时间片,就能运行,没有的话,只能时刻准备着。