文章目录
- 什么是进程
- 进程与程序
- 进程与程序的联系
- 进程与程序的区别
- 进程的状态
- 三态模型
- 五态模型
- 公众号
- 赞赏
什么是进程
进程:是指计算机中已运行的程序。程序本身只是指令、数据及其组织形式的描述,相当于一个名词,进程才是程序(那些指令和数据)的真正运行实例,可以想像说是现在进行式。现代计算机系统可在同一段时间内以进程的形式将多个程序加载到内存中,并借由时间共享(分时复用),以在一个处理器上表现出同时(平行性)运行的感觉。
看完上述定义,可能你已经对进程有了比较感性的认识,亦或者感觉稍微有点绕。没事,我们尝试用比较直观的方式来理解。其实只要打开我们电脑中的进程管理器,就能清晰地看到进程的存在,我们日常生活中所使用的一个个软件就是以进程的形式在电脑中活动,如下图所示:
进程与程序
新手可能比较容易被程序和进程之间的关系搞晕,为了更好的理解进程的概念,很有必要对比一下“进程”和“程序”这两个概念。
进程与程序的联系
- 程序是进程的根本
- 从进程的定义中就能看出,进程就是程序的动态形式,进程始于程序
- 程序多次运行可产生多个进程
- 举个例子,我们可以在电脑中同时打开两个Word,每次打开就是一个进程,而这两个进程对应的是同一份程序
- 程序通过进程实现其功能
- 程序的编写,是为了实现某些功能,比如上网、聊天,而且这些功能就是程序的执行效果,其执行过程就是通过进程实现的
进程与程序的区别
- 程序
- 静态概念,指的是存储在磁盘中的文件,如源代码、可执行程序等
- 永久的,只要用户不删除,程序就会一直存储在磁盘中
- 进程
- 动态概念,一个进程就是一个正在执行的程序。当我们双击运行一个程序时,系统就会为该程序建立一个进程,为该进程分配内存、CPU等资源
- 短暂的,当用户关闭进程后,该进程就会消失,其所占用的资源也会被系统回收
上述进程与程序之间的关系,总结如下图所示:
进程的状态
最后我想讲解的一点是进程的状态,一个进程的生命周期可以划分为一组状态,这些状态刻画了整个进程。进程状态即体现一个进程的生命状态。
三态模型
一个进程从创建而产生至撤销而消亡的整个生命期间,有时占有处理器执行,有时虽可运行但分不到处理器、有时虽有空闲处理器但因等待某个事件的发生而无法执行,这一切都说明进程和程序不相同,它是活动的且有状态变化的,这可以用一组状态加以刻画。为了便于管理进程,一般来说,按进程在执行过程中的不同情况至少要定义三种不同的进程状态:
- (1)运行(running)态:进程占有处理器正在运行
- (2)就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行
- (3)等待(wait)态:又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成
通常,一个进程在创建后将处于就绪状态。每个进程在执行过程中,任意时刻当且仅当处于上述三种状态之一。同时,在一个进程执行过程中,它的状态将会发生改变。引起进程状态转换的具体原因如下:
- (1)运行态一一等待态:等待使用资源或某事件发生,如等待外设传输;等待人工干预
- (2)等待态一一就绪态:资源得到满足或某事件己经发生,如外设传输结束;人工干预完成
- (3)运行态一一就绪态:运行时间片到,或出现有更高优先权进程
- (4)就绪态一一运行态:CPU空闲时被调度选中一个就绪进程执行
五态模型
在一个实际的系统里进程的状态及其转换比上节叙述的复杂一些,引入了专门的新建态(new)和终止态(exit )。
引入新建态和终止态对于进程管理来说是非常有用的。新建态对应于进程刚刚被创建的状态,创建1个进程要通过两个步骤,首先,是为一个新进程创建必要的管理信息;然后,让该进程进入就绪态。此时进程将处于新建态,它并没有被提交执行,而是在等待操作系统完成创建进程的必要操作。必须指出的是,操作系统有时将根据系统性能或主存容量的限制推迟新建态进程的提交。
类似地,进程的终止也要通过两个步骤,首先,是等待操作系统进行善后;然后,退出主存。当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止态。进入终止态的进程以后不再执行,但依然保留在操作系统中等待善后。一旦其他进程完成了对终止态进程的信息抽取之后,操作系统将删除该进程。引起进程状态转换的具体原因如下:
- (1)NULL一一新建态: 执行1个程序,创建一个子进程
- (2)新建态一一就绪态: 当操作系统完成了进程创建的必要操作,并且当前系统的性能和内存的容量均允许
- (3)运行态一一终止态: 当1个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结
- (4)终止态一一NULL: 完成善后操作
- (5)就绪态一一终止态: 未在状态转换图中显示,但某些操作系统允许父进程终结子进程
- (6)等待态一一终止态: 未在状态转换图中显示,但某些操作系统允许父进程终结子进程