进程的概念和特征
2015-06-20 20:50
239 查看
进程的概念
在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程(Process)的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。为了使参与并发执行的程序(含数据)能独立地运行,必须为之配置一个专门的数据结构,称为进程控制块(Process Control Block, PCB)。系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。相应地,由程序段、相关数据段和PCB三部分构成了进程映像(进程实体)。所谓创建进程,实质上是创建进程映像中的PCB;而撤销进程,实质上是撤销进程的PCB。值得注意的是,进程映像是静态的,进程则是动态的。
注意:PCB是进程存在的唯一标志!
从不同的角度,进程可以有不同的定义,比较典型的定义有:
进程是程序的一次执行过程。
进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
在引入进程实体的概念后,我们可以把传统操作系统中的进程定义为:”进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。“
进程的特征
进程是由多程序的并发执行而引出的,它和程序是两个截然不同的概念。进程的基本特征是对比单个程序的顺序执行提出的,也是对进程管理提出的基本要求。动态性:进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡的。动态性是进程最基本的特征。
并发性:指多个进程实体,同存于内存中,能在一段时间内同时运行,并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,以提高资源利用率。
独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。
异步性:由于进程的相互制约,使进程具有执行的间断性,即进程按各自独立的、 不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此,在操作系统中必须配置相应的进程同步机制。
结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制段三部分组成的。
进程与程序的区别:
1.程序是进程的静态文本,进程是执行程序的动态过程;
2.一个进程可以执行一个或多个程序,几个进程可以同时执行一个程序;
3.程序可作为软件资源长期保存,进程只是一次执行过程,是暂时的;
4.进程是系统分配调度的独立单位,能与其他进程并发执行。
进程状态及其演变: | ||
进程执行的间断性,决定了进程可能具有多种状态。事实上,运行的进程可能具有就绪状态、 执行状态、阻塞状态三种基本状态。 | ||
进程基本状态演示图 | 进程的三种基本状态演变图如左图所示。 当进程已分配到除CPU以外的所有必要资源时,它便处于就绪状态, 一旦获得CPU,便立即执行。 已获得CPU的进程进入执行状态。 正在执行的进程,由于发生某个事件而暂时无法执行时,便放弃处 理机而进入阻塞状态。 由于执行的进程变为阻塞状态后,调度程序立即把处理机分配给另 一个就绪进程;因此,阻塞进程的事件消失后,进程不会立即恢复到执 行状态,而转变为就绪状态,重新等待处理机。 |
具有挂起操作的 进程状态演变图 | 在实际系统中,进程还有其它几个状态。 有的系统有时希望能人为地把进程挂起,使之处于静止 状态,以便研究其执行情况或对它进行修改。 左图示出了具有挂起状态的进程状态演变图。 |
进程控制块PCB: | ||||||||||||||||||||
为了描述和控制进程的运行,系统为每个进程定义了一个数据结构--进程控制块PCB,它是进程 存在的唯一标志。【进程控制块PCB:(Process Control Block)这是为使多个程序能并发执行而为 每个程序所配置的一个数据结构,其中存放了用于描述该进程情况和控制进程运行所需的全部信息】 进程控制块的内容:
进程控制块的组织方式: 为了有效地对进程控制块进行管理,应该采用适当的方式把它们组织起来。 目前常用的组织方式有以下两种: |
按链接方式组织PCB | 按索引方式组织PCB | |
相关文章推荐
- Android关于TextView 宽度过大导致Drawable无法居中问题
- shell知识点
- 【组合】 达到了继承的效果,又不破坏封装
- 计算cell的高度和自动适配高度
- 常用希腊字母总结
- Hadoop简介与hadoop2.4.1伪分布式搭建
- 《C++专项练习》 — (2)
- 《C++专项练习》 — (2)
- ACM 头文件与宏定义 (以后有好的会随时更新)
- Redis Sentinel机制与用法[转]
- 矩阵常用归一化
- 隐藏系统保留区
- Socket剖析
- Python MySQLdb Linux下安装笔记
- android如何将一个字符串生成二维码
- 解决"应用程序无法启动,因为应用程序的并行配置不正确"问题
- c语言第二周总结-函数
- XSS学习笔记(五)-XSS防御
- 面向对象程序设计
- 转:谈谈iOS中粘性动画以及果冻效果的实现