一:进程的定义
进程控制块PCB:为来使参与并发执行的每个程序(含数据)都能独立的运行,系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程。
进程实体:程序段、相关的数据段、PCB
进程的定义:
1、进程是程序的一次执行过程
2、进程是一个程序及其数据在处理机上顺序执行时所发生的活动
3、进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
二:进程的特征
1) 动态性:进程是程序的一次执行,他有着创建、活动、暂停、终止等过程,具有一定的生命周奇奇,是动态的产生、变化和消亡的。动态性是进程最基本的特征。
2) 并发性:至多个进程实体,同存于内存中,能在一段时间内同时运行,并发性是进程的重要特征,同时也是操作系统的重要特征,引入进程的目的就是为了是程序能与去其他进程的程序并发执行,以提高资源利用率。
3) 独立性:指进程实体是一个能独立运行、独立获得资源和独立接收调度的基本单位。范围建立PCB的程序都不能作为一个独立的单位参与运行。
4) 异步性:由于进程的相互制约,是进程具有执行的间断性。也即进程按各自独立的、不可预知的速度向前推进。异步性会导致执行结果不可再现性,为此,在操作系统中必须配置相应的进程同步机制。
5) 结构性:每个进程都配置一个PCB对其进行描述。从结构上来看,进程实体是由程序段、数据段和进程控制端三部分组成的。
三:进程的状态
1、基本状态
a:就绪状态:就绪队列
b:执行状态
c:阻塞状态:阻塞队列
2、创建状态和终止状态
3、挂起操作和激活状态
四:进程控制
进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。
1、操作系统内核
1、处理机的执行状态分为:
a、系统态:管态或内核态,具有较高的特权,能执行一切指令,访问所有的寄存器和存储区,传统的OS都在系统态运行
b、用户态:目态,具有较低特权的执行状态,仅能执行规定的指令,访问指定的寄存器和存储区
2、支撑功能
a:中断处理
b:时钟管理:时间片用完后,由时钟管理产生一个中断信号,促使调度程序重新进行调度
c:原语操作:原子操作,一个操作中的所有动作要么全做,要么全不做
3、资源管理功能
- 进程管理:在进程管理中,或由于各个功能模块的运行频率比较高,通常将他们放在内核中,提高OS的性能
- 存储器管理:存储器管理软件的运行效率也比较高,如用于实现将用户空间的逻辑地址变换为内存空间的物理地址的地址转换机构、内存分配与回收以及内存保护和对换功能的模块。通常也将他们放在内核中,保证存储器管理具有较高的运行速度。
- 设备管理
2、进程的创建
1、进程的层次结构
在OS中,允许一个进程创建另一个进程,把创建进程的进程称为父进程,而被创建的进程称为子进程。子进程可以继承父进程所拥有的资源,例如,继承父进程打开的文件,继承父进程所分配的缓冲区等。当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程。在撤销父进程时,应将其从父进程获得的资源归还给父进程。在PCB中设置来家族关系表项标识进程之间的家族关系。进程不能拒绝子进程的继承权。
windows中不存在进程层次结构,而是获得句柄与否、控制与被控制的简单关系。
2、引起创建进程的事件
用户登录、作业调度、提供服务、应用请求
3、进程的创建
系统中出现创建新进程的请求后,OS便调用进程创建原语Creat创建一个新进程:
- 创建空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合索取一个空白PCB
- 为新进程分配其运行所需的资源,包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU事件。这些资源或从操作系统或从其父线程获得。
- 初始化进程控制块PCB
- 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列
3、进程的终止
1、引起进程终止的事件
- 正常结束:表示进程的任务已经完成,准备退出运行
- 异常结束:进程在运行时发生来某种异常事件,使程序无法继续运行。常见的异常事件有:越界错、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障
- 外界干预:指进程应外界的请求而终止运行。干预有:操作员或操作系统干预、父进程请求、因父进程终止。
2、进程的终止过程
如果系统中发生来要求终止进程的某事情,OS便调用进程终止原语,终止过程:
- 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态
- 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度
- 若该进程还有子孙进程,应将其所有子孙进程都予以终止
- 将被终止的进程所拥有的全部资源或者归还给父进程,或者归还给系统
- 将被终止进程PCB从所在队列或链表中移出,等待其它程序来搜集信息
4、进程的阻塞与唤醒
1、引起进程阻塞和唤醒的事件
- 向系统请求共享资源失败。进程在向系统请求共享资源时,由于系统已无足够的资源分配给它,进程不能运行转变为阻塞状态
- 等待某种操作的完成
- 新数据尚未到达
- 等待新任务的到达
2、进程阻塞过程
正在执行的进程,如果发生来上述事件,进程便通过调用阻塞原语block将自己阻塞。阻塞是进程自身的一种主动行为。进入block过程后,由于该进程还处于执行状态,应先立即停止执行,把进程控制块中的现行状态由“执行”改为阻塞,并将PCB插入阻塞队列。最后,转调度程序进行重新调度,并将处理机分配给另一就绪进程,并进行切换,保留被阻塞进程的处理机状态,按新进程的PCB中的处理机状态设置CPU的环境
3、进程唤醒过程
唤醒原语wakeup执行的过程:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后将该PCB插入到就绪队列
Block原语和wakeup原语是一对作用相反的原语,必须成对使用。block原语是由被阻塞进程自我调用实现的,而wakeup原语是由一个与被唤醒进程相合作或被其它相关进程调用实现的。
4、进程的挂起
当系统中出现了引起进程挂起的事件时,OS将利用挂起原语的suspend将指定进程或处于阻塞状态的进程挂起,suspend的执行过程是:
- 首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪
- 对于活动阻塞状态的进程,则改为静止阻塞
- 为方便用户或父进程考察该进程的运行情况,而把该进程的PCB复制到某指定的内存区域
- 若被挂起的进程正在执行,则转向调度程序重新调度
5、进程的激活过程
激活原语active
- 先将进程从外存调入内存
- 若是静止就绪,改为活动就绪;若是静止阻塞,改为活动阻塞
- 抢占调度策略:每当有静止就绪进程被激活而插入就绪队列时,便应当检查是否重新进行调度,如优先级高,则剥夺当前进程的运行,将处理机分配给刚刚激活的进程。