进程的概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体,在当代面向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
进程的提出
进程是60年代初首先由麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统引入的。
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动,它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体,它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
进程的定义
狭义定义:进程是正在运行的程序的实例 (an instance of a computerprogram that is being executed)。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程是操作系统中最基本、重要的概念,是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
进程的概念主要有两点
第一、进程是一个实体。
每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion)、数据区域(dataregion)和堆栈(stack region)。
文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
第二、进程是一个“执行中的程序”。
程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
引入进程的原因
为了能正确反映程序执行时,的活动规律和状态变化,需要引入一个新的概念——进程,从变化的角度,动态的分析和研究程序的执行。
1、提高资源的利用率
把一个计算问题中的,可独立执行的程序模块,看做一个进程来处理,比如输入进程、处理进程、打印进程,通过进程的同步,可以这些进程正确合作,从而是处理器和外围设备并行的工作,提高资源的利用率。
2、正确的描述程序的执行情况
从程序的角度无法正确的描述程序的执行状态,尤其是采用多道程序设计,引入进程是非常必要的。
从理论角度看,是对正在运行的程序过程的抽象。
从实现角度看,是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
进程的特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
进程的内容
程序的可运行机器码的一个在存储器的映像。
分配到的存储器(通常包括虚拟内存的一个区域),存储器的内容包括可运行代码、特定于进程的数据(输入、输出)、调用堆栈、堆栈(用于保存运行时运数中途产生的数据)。
分配给该进程的资源的操作系统描述符,诸如文件描述符(Unix术语)或文件句柄(Windows)、数据源和数据终端。安全特性,诸如进程拥有者和进程的权限集(可以容许的操作)。处理器状态(内文),诸如寄存器内容、物理存储器寻址等。
当进程正在运行时,状态通常储存在寄存器,其他情况在存储器。
进程的状态
进程执行时的间断性,决定了进程可能具有多种状态,运行中的进程可能具有以下三种基本状态。
1、就绪状态(Ready)
进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行,就绪进程可以按多个优先级来划分队列。
例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列,当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
2、运行状态(Running)
进程占用处理器资源,处于此状态的进程的数目小于等于处理器的数目,在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
3、阻塞状态(Blocked)
由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行,该事件发生前即使把处理器资源分配给该进程,也无法运行。
每个进程在执行过程中的任一时刻,当且仅当处于上述三种基本状态之一。