进程的定义
操作系统的重要任务之一是使用户充分、有效的利用系统资源。为了充分反映操作系统的执行并发、资源共享及用户随机的特点,提出进程的概念,来描述计算机程序的执行过程和作为资源分配的基本单位。
当计算机系统中只有一个程序运行时,称之为单道程序,此时这个程序独占系统中所有的资源,在执行过程中不受外界影响;而多道程序在执行时,就是所谓的程序并发执行,即若干个程序同时在系统中执行,这时,这些程序就不可能独占所有系统资源了,而需要多个程序共享系统的资源,导致各个程序在执行时出现相互制约的关系。为了刻画系统内部出现这种动态情况,描述程序的并发执行的活动规律,在操作系统中引入了进程这个概念,进程的出现是为了使多个程序并发执行,用以改善资源利用率,并提高系统的吞吐量。
1.进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。
2.进程是一个程序与其数据一道通过处理机的执行所发生的活动。
3.进程是一个”执行的程序”,即程序在处理机上执行时所发生的活动,而程序只是行为的一种规则。
进程与程序的区别
进程是一个动态的概念,而程序则是一个静态的概念;进程具有并发执行的特征,而程序没有;进程是竞争计算机资源的基本单位,从而其并发性受到系统自己的制约;不同的进程可以包含同一个程序,只要该程序所对应的数据集不同。
进程描述
一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。进程的静态描述包括三部分:进程控制块PCB、有关程序段和该程序段对其进行操作的数据结构集。进程的PCB是系统感知程序的唯一实体,因此几乎所有的多道操作系统中,一个进程的PCB结构都是全部或部分常驻内存的。
进程控制块PCB
进程控制块是操作系统核心中一种数据结构,主要表示进程状态。PCB包含一个进程的描述信息、控制信息和资源信息,有些系统中还有进程调度等待所使用的现场保护区。在创建一个进程时,应首先创建其PCB,然后才能根据PCB中信息对进程实施有效的管理和控制。当一个进程完成其功能之后,系统则释放PCB,进程也随之消亡。
描述信息
1.进程名或进程标识号。每个进程都有唯一的进程名或进程标识号。
2.用户名和用户标识号。每个用户都隶属于某个用户。
3.家族关系。进程之间互成家族关系,如父子进程。
控制信息
包括进程的当前状态(初始态、就绪态、执行态、等待状态和终止状态),进程的优先级,各种计时信息和通信信息(用来说明该进程在执行过程中与别的进程所发生的信息交换情况)。
资源管理信息
PCB中包含最多的是资源管理信息,包括有关存储器的信息,使用输入输出设备的信息,有关文件系统的信息等等。
CPU现场保护结构
当前进程因等待某个事件而进入等待状态或者因某种事件发生被终止在处理机上的执行时,为了以后该进程能在被打断处恢复执行,需要保护当前进程的CPU现场。PCB中设有专门的CPU现场保护结构,以存储退出执行时的进程现场数据。
由于PCB中包含较多的信息,一个PCB表往往要占据较大的存储空间,为了减少PCB对内存的占用量,只允许PCB中最常用的部分,如CPU现场保护、进程描述信息、控制信息等常驻内存。PCB结构中的其他部分则存放于外存之中,待该进程将要执行时与其他数据一起装入内存。
进程上下文
在进程执行过程中,由于中断、等待或程序出错等原因造成进程调度,这时操作系统需要知道和记忆进程已经执行到什么地方或新的进程将从何处执行。另外,进程执行过程中还经常出现调用子程序的情况,在调用子程序执行之后,进程将返回何处继续执行,执行结果将返回或存放到什么地方等都需要进行记忆。
进程上下文是一个抽象的概念,它包含了每个进程执行过的、执行时的以及待执行的指令和数据,在指令寄存器、堆栈(存放各调用子程序的返回点和参数等)、状态字寄存器等中的内容。
把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文,把正在执行的指令和数据在寄存器与堆栈中的内容称为正文,把待执行的指令和数据在寄存器与堆栈的内容称为下文。
在不发生进程调度时,进程上下文的改变都是在同一进程内进行,此时,每条指令的执行对进程上下文的改变较小,一般反映为指令寄存器、程序计数器以及保存调用子程序返回接口用的堆栈值等的变化。
进程上下文切换
进程上下文切换发生在不同的进程之间而不是同一个进程内。进程上下文切换过程一般包含3个部分,并涉及3个进程。第一个部分为保存被切换进程的正文部分至有关存储区,例如该进程的PCB中;第二部分是操作系统进程中有关调度和资源分配程序执行,并选取新的进程;第三部分是将被选中进程的原来被保存的正文部分从有关存储区中取出,并送至有关寄存器与堆栈中,激活被选中进程执行。
进程上下文切换涉及到了系统调度和分配程序,这些都比较耗费CPU时间,为了提高系统执行效率,有的计算机在设计采用了多组寄存器技术,即进程上下文切换时,不把被切换进程上下文的正文保留到下关存储区,而是直接切换相应的寄存器,这就减少了数据保存和获取所耗费的时间。
进程空间与大小
任一进程,都有一个自己的地址空间,我们把该空间称为进程空间或者虚空间,进程的大小就是进程空间的大小。
在进程空间中被划分为两部分:用户空间和系统空间,用户程序在用户空间内执行,而操作系统内核程序则在进程的系统空间执行。为了防止用户程序访问系统空间,造成访问出错,计算机系统还通过程序状态寄存器等设置不同的执行模式,即用户模式和系统模式来进行保护。也把用户模式和执行模式分别称为用户态和系统态。
进程的状态
一个进程的生命期可以划分为一组状态,这些状态刻画了整个进程,系统根据PCB结构中的状态值控制进程。一个进程在并发执行中,由于资源共享与竞争,有时于执行状态,有时则因为等待某种事件发生而处于等待状态。另外,当一个处于等待状态的进程因等待事件发生,被唤醒后,又因不可能立即得到处理机而进入就绪状态。进程刚被创建时,由于其他进程正占有处理机而得不到执行,只能处于初始状态。进程在执行结束后,将退出执行而被终止,这时进程处于终止状态。因此在进程的生命周期内,一个进程至少具有5种基本状态:初始态,执行状态,等待状态,就绪状态和终止状态。
处于就绪状态的进程已经得到除CPU之外的其他资源,只要调度得到处理机,便可立即投入执行。在单CPU系统中,任一时刻处于执行状态的进程只能有一个,只有处于就绪状态的进程调度选中之后才可进入执行状态。
进程状态转换
进程的状态反映进程执行过程中的变化,事实上,进程的状态转换是一个非常复杂的过程,从一个状态到另一个状态的转换除了要使用不同的控制过程,有时还要借助于硬件触发器才能完成。
进程控制
进程和处理机管理的一个重要的任务是进程控制。所谓进程控制,就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。
原语:是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性,即原语的执行必须是连续的,在执行过程中不允许被中断。
原语有两类,一是机器指令级的原语,其特点是执行期间不允许中断,正如在物理学中的原子一样,在操作系统中,它是一个不可分割的基本单位;另一类是功能级的,其特点是作为原语的程序段不允许并发执行。用于进程控制的原语有:创建原语,撤销原语,阻塞原语,唤醒原语。