综述:何谓进程,进行中的程序,顾名思义,进程就是运行中的程序。即用户使用时的东西。所以进程是一种动态的概念,是只存在一段时间的过程概念。有着开始有着灭亡。进程可以称为是动态的程序。是程序实现功能时的投影。操作系统因为有了进程的概念,可以进行并发操作,并发运行的就是这些进程们。
进程的概念
为了实现进程,特别的设置一种数据结构叫做PCB(进程控制块),这里面包含着一个进程的各种信息,可以帮助完成各种操作。而进程的产生就是pcb的产生,而进程的灭亡就是pcb的灭亡,pcb就是进程存在的唯一标志。再加上程序段和数据段,一个进程就完整了。进程是一个动态的概念,可以这样理解,程序段和数据段是基础,没有程序数据也就没了进程,而程序段和数据段都是静态的,想让程序运行起来就需要合力一起创建PCB,这样进程就诞生了,程序就可以以进程的方式运行了。当需要关掉程序时,也就删除pcb。程序段和数据段也就变回了静止的样子。进程在运行过程中,是需要计算机资源的,进程就是计算机分配资源的一个最小单位。系统资源可以理解为时间片,每个进程宠幸几个时间片,也都是以进程为分配单位的。皇帝宠爱皇妃,不能以皇妃身上的汗毛为单位吧。
进程的特征
进程的特征是相对于单个程序顺序执行而提出的
动态性:是一次动态的过程,有创建、活动、暂停、终止等过程。具有生命周期。(是最基本的特征)
并发性:指进程的目的,进程的提出本身就是为了程序并发而设计的,进程的存在当然实现了程序的并发。也自然就有并发性的特征。
独立性:指进程是一个可以独立运行的独立单位。可以独立获得资源,独立接受调度的单位。
异步性:由于是并发进行的,资源又有限,进程以不可知的速度向前推进。进程的异步性与操作系统的异步性是一样的。表达的具有不可预知性。
结构性:进程具有相对规整的结构,都是由PCB、程序段、数据段构成的。
进程的状态与其转换
进程从创建到消亡,整个生命周期,具有几个特点鲜明的状态。通常有五种状态(也称为五态图)
运行状态:正在使用处理机资源(此时是并发进行的,微观上依旧存在走走停停,但即使短暂的挺也算运行状态)
就绪状态:进程已经准备好了所有运行所需要的条件,就差cpu临幸了。一旦得到资源,立刻就可以运行。
阻塞状态:又称等待状态,进程因为某一件事暂停运行(这里是宏观上的暂停,不是微观上的暂停),阻塞状态就是进程还没有达到就绪的状态。即使cpu空闲也不能临幸它。
创建状态:进程正在被创建,PCB初始化。然后由系统分配必备的资源,最后把进程转入就绪状态。
结束状态:进程正在消失,可能是正常结束也可能是中断退出。系统置进程结束状态,收回资源,删除pcb。
【ps】就绪状态要转入运行状态的时候,系统分配的是时间片,当时间片进程还没结束的时候,会被重新挂为就绪状态。
进程控制
计算机中的控制就是管理,对进程实现创建,结束,状态转换的控制。控制进程所用的是原语。
进程创建
进程的创建可以是一个新的进程,也可以是已有进程创建的子进程。子进程可以继承父进程的资源,当子进程被撤销时,资源归还给父进程,而不是归还给系统。当父进程被撤销时,子进程也不能独立存在,也要被撤销。
操作系统创建一个进程的过程如下(创建原语)
1)分配进程标识号,申请空白PCB(申请失败则创建失败)
2)为进程分配资源(程序、数据、内存空间)。(分配失败则转为阻塞状态而非失败)
3)初始化PCB(标志信息、处理机状态信息、处理控制信息、设置优先级)。
4)如果就绪队列可以接纳新进程,则接收到就绪队列中。
进程的终止
进程的中止有三种情况:1)正常结束2)异常结束3)外界干预(我关的,咋地?)
操作系统终止进程的过程(撤销原语):
1)根据要禁止的标识号,检索PCB,找到它,并读取状态。
2)终止。
3)如果还有子进程,终止。
4)归还资源,或父进程或操作系统。
5)从PCB中删除。
进程的阻塞与唤醒
进程的阻塞是一种进程自身的主动行为,是进程自己要求的,因为自身条件不满足。
阻塞原语:
1)根据标识号找到对应的pcb
2)若在运行,保护好现场。将状态转为阻塞。
3)把该PCB插入到对应事件的等待队列中(等待资源)
当被阻塞的进程所期待的事情都发生之后,便安排让它重新就绪。执行唤醒原语。
唤醒原语:
1)找到相应进程的pcb
2)将其从等待队列中移除,并将状态转换为就绪状态。
3)把该pcb插入到就绪队列中。
进程切换
进程切换是指处理机从这个进程到另一个进程的转换。切换过程如下:
1)保护现场
2)更新pcb
3)把该进程移入等待队列(如就绪队列)
4)选择另一个进程,并更新其pcb
5)更新内存管理的数据结构
6)恢复上下文
进程切换是逻辑上的切换,而处理机模式切换不一样,模式切换可能处理机还在执行这个进程,可能进程刚刚去了一趟核心态,回来的时候,逻辑没有变,依旧是这个程序。所以,无需如此复杂的切换环境。
【注解】调度是指资源的分配,切换是进程的切换,实际的行为。进程的切换效率不高,所以后文中的线程帮助提高效率,减少进程间的切换。
进程的结构
PCB
一旦进程被创建,那他的PCB就常驻在内存中,只有在进程结束的时候才会被删除。PCB是进程实体的一部分,也是进程存在的唯一标志。
主要组成部分如下:
1)进程描述信息
进程标识符:所有进程的编号
用户标识符:进程归属的用户的编号
2)进程控制和管理信息