进程
由操作系统控制和协调并发程序之间的资源共享和竞争,避免发生预料之外的错误。
我们需要一个能够描述程序的执行过程且能用来共享资源的基本单位,这个基本单位被称为进程(或者任务)。
进程:
- 进程是可以并发执行的计算部分。
- 进程是一个独立的可以调度的活动。
- 进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源。
- 行为的规则称为程序,程序在处理机上执行时的活动称为进程。
- 一个进程是一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述进程。
可以看到,我们要注重进程是一个动态的执行过程这一概念。我们可以这样定义进程:并发执行的程序在执行过程中分配和管理资源的基本单位。
进程和程序的联系与区别:
- 进程是一个动态的概念,而程序则是一个静态概念。
- 程序是指令的有序集合,而进程强调执行过程。
- 进程具有并发特征(独立性和异步性),而程序没有。
- 进程是竞争计算机系统资源的基本单位。
- 不同的进程可以包含同一程序,只要该程序多对应的数据集不同。
进程的描述
进程的静态描述由三部分组成:进程控制块(PCB)、有关程序段和该程序段对其进行操作的数据结构集。
PCB
PCB集中反映一个进程的动态特征。进程的PCB是系统感知进程的唯一实体。
创建一个进程时,应首先创建其PCB,然后才能根据PCB中的信息对进程实施有效的管理和控制。当一个进程完成其功能之后,系统则释放PCB,进程也随之消亡。
PCB的内容
- 描述信息:(1)进程名或进程标识号;(2)用户名或用户标识号;(3)家族关系。
- 控制信息:(1)进程当前状态;(2)进程优先级(包括:占有CPU时间、进程优先级偏移、占据内存时间,等等);(3)程序开始地址;(4)各种计时信息;(5)通信信息。
- 资源管理信息:(1)占用内存大小及其管理用数据结构指针;(2)在某些复杂系统中,还有对换或覆盖用的有关信息;(3)共享程序段大小及起始地址;(4)输入输出设备的设备号,索要传送的数据长度、缓冲区地址、缓冲区长度及所用设备的有关数据结构指针等;(5)指向文件系统的指针及有关标识等。
- CPU现场保护结构。
进程上下文
进程上下文实际上是进程执行过程中顺序关联的静态描述。进程上下文是一个与进程切换和处理机状态有关的概念。
进程上下文是一个抽象的概念,它包含了每个进程执行过的、执行时的以及待执行的指令和数据,在指令寄存器、堆栈(存放各调用子程序的返回点和参数等)和状态字寄存器等中的内容。
已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文,正在执行的指令和数据在寄存器与堆栈中的内容称为正文 ,待执行的指令和数据在寄存器与堆栈中的内容称为下文。
进程的系统级上下文又分为静态与动态部分。动态部分是与寄存器上下文相关联的。
进程上下文切换
进程上下文切换发生在不同的进程之间而不是同一个进程内。
进程上下文切换过程一般包含3个部分:(1)保存被切换进程的正文部分(或当前状态)至有关存储区;(2)操作系统进程中有关调度和资源分配程序执行,并选取新的进程;(3)激活被选取的新进程。
进程空间与大小
任一进程,都有一个自己的地址空间,该空间称为进程空间 或 虚空间。进程空间的大小只与处理机的位数有关。例如,16位长处理机的进程空间大小为2^16。程序的执行都在进程空间内进行。用户程序、进程的各种控制表格等都按一定的结构排列在进程空间中。进程空间还被划分为用户空间和系统空间两大部分。用户程序在用户空间内执行,操作系统内核程序在系统空间内执行。进程的大小就是进程空间的大小。
要保证多个应用程序同时处于内存中并且不互相影响,解决办法是创造一个新的内存抽象:地址空间。就像进程的概念创造了 一类抽象的CPU以运行程序一样,地址空间为程序创造了一种抽象的内存。地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间。