OS(二):进程管理之 进程的基本概念
进程是资源分配和独立运行的基本单位。
引入进程的目的在于,使多道程序并发执行,提高系统的资源利用率和吞吐量;而引入线程,是为了减少程序在并发时的时空开销,提高系统的并发性,线程相对于进程,大大降低了创建、撤销和切换可执行实体的成本和难度。
1、进程的定义与特征
1.1、定义
进程是程序的一次执行;
进程是一个程序及其数据在处理机上顺序执行时所发生的活动;
进程是程序在数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。
进程是一个可拥有资源的独立单位;进程是一个可独立调度和分派的基本单位。OS 提供了 创建进程、撤销进程、进程切换等进程操作,因此,进程才能成为一个独立运行的基本单位。
1.2、特征
1.2.1、结构特征
为了使程序能独立运行,为每一个程序配置进程控制块,即PCB(Process Control Block)。
进程实体由 程序段、数据段 和 PCB 三部分构成。
1.1、控制块(PCB,Process Control Block)
OS根据PCB来对进程进行控制和管理,进程的创建和撤销都是根据PCB来进行的;
存储:程序计数器、进程状态、CPU暂存器、存储器管理、输入输出状态等信息;
PCB在新建进程时创建,并常驻内存,是进程实体的一部分,也是该进程的唯一标识。
1.2、数据段
在数据区域(data region),存储(全局和静态)变量和进程执行期间使用的动态分配的内存,原始数据;
在堆栈(stack region)区域,存储活动过程调用的指令和本地变量,中间数据。
1.3、程序段
存放在文本区域(text region),存储处理器执行的代码,二进制格式;程序段可以被多个进程共享。
1.2.2、动态性
动态性是进程最基本的特征。
进程的实质是进程实体的一次执行过程,表现为:由创建而产生、由调度而执行、由撤销而消亡。
1.2.3、并发性
多个进程同时存在于内存中,可以同时运行;进程实体能和其它进程实体并发执行;程序的并发执行,是由PCB控制的。
1.2.4、独立性
进程实体是能独立分配资源;进程实体能独立接受调度;进程实体能独立运行;程序的独立执行,也是由PCB控制的。
1.2.5、异步性
进程实体按异步方式运行;进程与进程之间相互独立、互不干扰、以不可预知的速度运行。
2、进程的状态
2.1、基本状态
进程三种基本状态:就绪(Ready)、执行(Running)、阻塞(Blocked)。
2.1.1、就绪状态
进程已分配到除CPU外的所有必要资源后,再获取CPU便可立即执行,此时进程的状态称为就绪状态。
将多个就绪状态的进程排成一个队列,此队列被称为就绪队列。
2.2.2、执行状态
进程获得CPU,正在执行,此时进程的状态称为执行状态。
2.2.3、阻塞状态
正在执行的进程由于发生某种时间而暂时无法继续执行,放弃处理机而处于暂停状态,进程的执行受到阻塞,把这种暂停状态称为阻塞状态。
发生阻塞的典型事件:请求I/O、申请缓冲空间、进程同步。
2.2.4、状态转换
就绪状态的进程,调度程序为之分配处理机,进程执行,进程由就绪状态变为执行状态。
执行状态的进程,分配给他的时间片用完而被暂停执行,进程由执行状态变为就绪状态。
执行状态的进程,因某些操作使进程执行受阻,无法继续执行,进程由执行状态变为阻塞状态。
2.2、挂起状态
2.2.1、概念
使正在执行的进程暂停执行;
若此时用户进程正处于就绪状态而未执行, 则该进程暂不接受调度, 以便用户研究其执行情况或对程序进行修改;
此时,我们把这种静止状态称为挂起状态。
2.2.2、挂起的原因
终端用户的请求:发现可疑问题,希望进程静止下来
父进程请求:父进程希望挂起子进程,以便协调各子进程间的活动
负荷调节的需要:负荷较重,挂起不重要的进程
操作系统的需要:OS检查资源使用情况,或进行记账
2.2.3、进程状态的转换
·活动就绪→静止就绪
进程处于未被挂起的就绪状态时,称为活动就绪状态,表示为Readya。
未被挂起的就绪状态(Readya)--(Suspend原语)-->静止就绪状态(Readys),Readys状态不会被调度
·活动阻塞→静止阻塞
进程处于未被挂起的阻塞状态时,称为活动阻塞状态,表示为Blockeda。
未被挂起的阻塞状态(Blockeda)--(Suspend原语)-->静止阻塞状态(Blockeds),Blockeds状态不会被调度
·静止就绪→活动就绪
静止就绪状态(Readys)--(Active原语)-->活动就绪状态(Readya),Readya状态可以被调度
·静止阻塞→活动阻塞
静止阻塞状态(Blockeds)--(Active原语)-->活动阻塞状态(Blockeda),Blockeda状态可以被调度。
2.3、创建和终止状态
2.3.1、创建状态
1.1、进程创建的步骤
1、为一个新进程创建PCB,并填写必要的管理信息;
2、把该进程转入就绪状态并插入就绪队列之中。
1.2、创建状态的概念
新进程被创建时,系统已为其分配了PCB,填写进程标识,此时进程拥有自己的PCB,但进程尚未进入主存(未分配),进程不能被调度执行,当前进程所处的状态为创建状态。
1.3、创建状态的作用
保证进程的调度必须在创建工作完成后进行;
确保对进程控制块(PCB)操作的完整性;
增加了管理的灵活性,OS可以根据系统性能或主存容量的限制推创建状态进程的提交;
2.3.2、终止状态
2.1、进程终止步骤
1、OS将该进程标记为终止
2、资源释放和回收
2.2、终止状态
一个进程正常执行结束、异常执行结束或外界干预使进程被终结,当前进程所处的状态为终止状态。
终止状态的进程不能再执行,但会保留一个记录(保存状态码和一些计时统计数据),供其它进程收集;
等待操作系统进行善后处理,然后将其PCB清零, 并将PCB空间返还系统,该进程被删除。
2.3.3、进程状态转换图
3、PCB - 进程控制块
1、PCB
OS为每个进程定义了一个数据结构 - PCB(Process Control Block),即进程控制块,用来描述和控制进程运行的全部信息。
PCB是进程的唯一标识,OS根据PCB来对并发执行的进程进行控制和管理。
进程控制块的作用:使一个在多道程序环境中不能独立运行的程序,成为一个能独立运行的基本单位。
PCB的生命周期:创建新进程时,为其建立PCB,进程结束时回收其PCB,进程消亡。
PCB常被系统访问,所以常驻内存,OS将所有的PCB组成若干个链表(或队列),存放在OS专门开辟的PCB区中。
2、PCB中的信息
1、进程标识符
进程标识符,唯一地标识一个进程。常用 内部标识符 和 外部标识符 两种。
内部标识符:进程序号
部标识符:创建者提供,用户进程访问该进程时使用
2、处理机状态
处理机状态信息由处理机的寄存器中的内容组成。在运行时,许多信息都放在寄存器中。当处理机被中断时,所有这些信息必须保存在PCB中,以便该进程重新执行时,能从断点处继续执行。
3、进程调度信息
3.1、进程状态
指明进程的当前状态,作为进程调度和对换时的依据。
3.2、进程优先级
描述进程使用处理机的优先级别的一个整数
3.3、事件
进程由执行状态转变为阻塞状态等待发生的事件
3.4、进程调度所需其他信息
与进程调度算法相关的信息。
4、进程控制信息
4.1、程序和数据的地址
进程的程序和数据所在的内存或外存地址,以便再调度到该进程执行时,从PCB中找到程序和数据。
4.2、进程同步和通信机制
实现进程同步和通信是必需的机制。
4.3、资源清单
除CPU外,进程所需的全部资源及已分配到该进程的资源清单。
4.4、链接指针
给出本进程(PCB)所在队列中的下一个进程的PCB的首地址。
3、PCB中的组织方式
为了方便对PCB加以有效的管理,需要将PCB组织起来,PCB提供了两种组织方式: 链接方式 、 索引方式 。
3.1、链接方式
把具有同一状态的PCB,用其中的链接字链接成一个队列。如此便可以形成若干个就绪队列、阻塞队列和空白队列。
就绪队列按优先级高低排列,优先级高的排在PCB队列的前面。
3.2、索引方式
根据进程的建立索引表,将相同状态进程存放在一张表中,如就绪索引表、阻塞索引表等。
将个各索引表在内存的首地址记录在内存中的专用单元中,记录具有相应状态的某个PCB在PCB表中的地址。