一、进程的定义与特征
1、进程的定义
进程是具有独立功能的程序关于某个数据集合上一次运行活动,是系统进行资源管理分配和调度的独立单位。
2、进程的组成
进程=程序+数据+PCB
- 程序部分:描述了进程所要完成的功能;
- 相关数据:是程序在执行时所需要的数据和工作区,这两部分是进程存在的物质基础。
- PCB:是最重要的,创建进程实际上是指创建进程实体中的进程控制块,而撤销进程也是指将这个进程实体中的进程控制块撤消掉。
3、进程的特征
- 动态性
是进程实体的执行过程,是进程最基本的特征。动态性还表现在“它由创建而产生,由调度而执行,由撤销而消亡
- 并发性
指多个进程实体同时存在于内存中,并能在一段时间内同时运行。
- 独立性
指进程实体是一个独立运行,独立获得系统资源和独立接受调度的基本单位。
- 异步性
指进程按各自独立、不可预知的速度向前推进。
4、进程与程序的区别与联系
(1)进程是程序的一次动态执行活动;程序是进程运行的静态描述文本。比如做菜和菜谱。
(2)一个进程可以执行一个或多个程序,同一个程序也可以被多个进程同时执行。
(3)程序是一种软件资源,可以长期保存;而进程是一次执行过程,是暂时存在的。
(4)程序不具备进程的4个基本特征。
二、进程的基本状态与转换
1、进程的三种基本状态
- 就绪状态
进程获得除CPU以外的所有资源时的状态。由就绪状态的进程排成的队列称为是就绪队列,进程只有进入就绪队列才有权被CPU调度执行。
- 执行状态
进程已获得CPU,并且正在执行时的状态。
- 阻塞状态
正在执行的进程由于某种原因而被系统停止执行这时停止执行的进程要放弃处理机。
2、三种基本状态的转换
进程的三种基本状态及其转换,如下图:
为了满足进程控制块对数据及操作的完整性要求以及增加管理的灵活性,又引入2个常用的状态,创建状态和终止状态。
(1)创建状态
创建步骤:先申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息;然后为该进程分配运行时所需的资源,最后把该进程转入就绪状态插入就绪队列中。
只拥有自己的PCB,但还未拥有一些必须的资源,并且进程还未进入到内存中。创建未完成,进程还不能被调度的状态即为创建状态。
处于创建状态的进程不能直接被CPU调度执行。
(2)终止状态
进程终止步骤:等待操作系统进行善后处理,将PCB清零,将PCB的空间返还系统。
终止状态就是停止执行且进程资源已被系统回收所处的一种状态
一个进程正常结束或异常结束后。 进入终止状态的进程,不再有执行资格。它的记录暂时由操作系统保留,其中保存状态码和一些计时统计数据,供其他进程收集。其他进程完成信息提取后,操作系统删除该进程。
处于终止状态的进程不能再被CPU直接调度执行。
进程的五种基本状态及其转换,如下图:
三、挂起操作和进程状态的转换
为了系统和用户观察和分析进程的需要,还引入了一个对进程的重要操作,挂起操作。
1、挂起状态
- 挂起状态:使原来活动的进程处于静止状态
引起挂起状态的原因:
- 父进程请求
- 负荷调节的需要
- 操作系统的需要
- 终端用户的请求
2、进程状态的转换
在引入挂起的系统中,进程的就绪状态分为活动就绪和静止就绪状态,而进程的阻塞状态分为活动阻塞和静止阻塞状态。
活动就绪(Readya)→→ 静止就绪(Readys)
活动阻塞(Blockeda)→→ 静止阻塞(Blockeds)
静止就绪 →→ 活动就绪
静止阻塞 →→ 活动阻塞
原语:
是指完成特定功能的,具有原子性的子程序。其中有原语有挂起原语(Suspend)和激活原语(Active)。
具有挂起状态的进程状态转换,如下图:(有活动和静止之分)
具有创建、终止和挂起状态的进程状态转换,如下图:
四、进程控制块PCB
1、PCB的概念与作用
(1)PCB的概念
PCB是系统为管理进程设置的一个记录型数据结构,存放用于描述该进程情况和控制进程运行所需的全部信息。系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志。
进程与PCB是一一对应的,PCB经常被系统访问,故常驻内存。
(2)PCB的作用
PCB的作用是使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位。
-
作为独立运行基本单位的标识:系统是通过PCB感知进程的存在。
-
能实现间断性运行方式:保存CPU现场信息
-
提供进程管理所需要的信息:根据PCB的资源清单了解进程所需要的资源
-
提供进程调度所需要的信息:进程处于什么状态
-
实现与其他进程的同步通信:实现诸进程的协调运行。设置通信区域和指针
2、进程控制块中的信息
(1)进程标识符(唯一地标识一个进程)
- 外部标识符
由创建者提供,通常由字母、数字组成,可重名。
- 内部标识符
系统为每个进程赋予唯一的数字标识符,不可重名。
(2)处理机状态
- 通用寄存器
用户可以访问的寄存器,因此又称为用户可视寄存器,用于暂存信息。
- 指令计数器
存放了程序将要访问的下一条指令的地址。
- 程序状态字PSW
包含了正在执行程序的状态信息:条件码、执行方式、中断屏蔽标志等。
- 用户栈指针
每个用户都有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。
(3)进程调度信息
- 进程状态,指明进程的当前状态, 作为进程调度和对换时的依据;
-
进程优先级,用于描述进程使用处理机的优先级别的一个整数, 优先级高的进程应优先获得处理机;
-
进程调度所需的其它信息,它们与所采用的进程调度算法有关,比如,进程已等待CPU的时间总和、 进程已执行的时间总和等;
-
事件,是指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。
(4)进程控制信息
- 程序和数据的地址,即进程的程序和数据所在的内存或外存(首)地址,以便再调度到该进程执行时,能从PCB中找到其程序和数据;
-
进程同步和通信机制,指实现进程同步和进程通信时必需的机制, 如消息队列指针、信号量等,它们可能全部或部分地放在PCB中;
-
资源清单,是一张列出了除CPU以外的、进程所需的全部资源及已经分配给该进程的资源的清单;
-
链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址。
3、进程控制块的组织方式
为了有效地对进程控制块进行管理,应该采用适当的方式把它们组织起来。
目前常用的组织方式有以下三种:
-
线性方式(适用于进程个数不多的系统)
-
按链接方式组织PCB(队列)
-
按索引方式组织PCB(表)