admin管理员组

文章数量:1666622

目录

一、引起创建进程的事件

二、进程的创建

三、进制的终止

1.引起进程终止的事件

2.进程的终止过程

四、进程的阻塞和唤醒

1.引起进程阻塞和唤醒的事件

2.进程阻塞过程

3.进程唤醒过程

五、进程的挂起和激活

1.进程的挂起

2.进程的激活


 

进程控制是进程管理中最基本的功能。 进程控制包括:

创建进程         ◆ 终止进程         ◆ 进程状态转换

进程控制是由OS的内核完成的。

一、引起创建进程的事件


用户登录

作业调度

提供服务

        当用户进程提出某种请求后,系统将专门创建一个进程来提供用户所需的服务。如,文件打印。

应用请求

        是基于应用进程的需求,由应用进程自己创建一个新进程,以便新进程以并发运行方式完成特定任务。

二、进程的创建


调用进程创建原语Create(),按下述步骤创建一个进程:

(1)申请空白PCB;

(2)为新进程分配资源。主要是内存空间。

(3)初始化PCB。包括:

初始化标识信息

初始化处理机状态信息:程序计数器,堆栈指针等

初始化处理机控制信息:进程状态——就绪或静止就绪、优先级等。

(4)将新进程插入就绪队列

Win32创建进程API函数CreateProcess( );

创建线程APICreateThread( )函数

三、进制的终止


1.引起进程终止的事件


正常结束

异常结束

常见的异常——结束事件

越界错误 保护错 —— 试图访问不允许访问的资源或文件,或者以不适当方式访问 非法指令 特权指令错 —— 用户程序试图执行只允许 OS 执行的指令 运行超时 等待超时 算术运算错 —— 0 I/O 故障 

外界干预

操作员或操作系统干预(如发生死锁)

 父进程请求

 父进程终止

2.进程的终止过程


OS调用终止原语,按下述过程终止进程

(1) 根据被终止进程的标识, 从PCB集合中找除该进程的PCB,读出该进程状态。 (2) 若被终止进程正处于执行状态,应 立即 终止其执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。若该进程还有子孙进程 ,应将其所有子孙进程终止 ,以防止它们成为不可控进程。 (3) 将被终止进程的 所有资源 ,或者归还给其父进程,或者 归还给系统 (4) 将被终止进程 (它的PCB)从所在队列中移出 ,等待其他进程来搜索信息。 

Win32中终止进程的API函数是TerminateProcess( );

终止线程的API函数是TerminateThread( )。

四、进程的阻塞和唤醒


1.引起进程阻塞和唤醒的事件


请求系统服务

     当执行进程请求OS服务时,由于某种原因,OS并不立即满足该进程的请求时,该进程只能转变为阻塞状态来等待。

如,进程请求打印机

启动某种操作

        当进程启动某种操作后,如果该进程必须在该操作完成后才能继续执行,则必须先使该进程阻塞,以等待操作完成。

如,启动了某I/O设备

新数据尚未到达

        对于相互合作的进程,如果其中一个进程需要获得另一个(合作)进程提供的数据才能运行以对数据进行处理,则只要其所需数据尚未到达,该进程只有阻塞(等待)

无新工作可做

        系统往往设置一些具有特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来。

如,系统中发送数据的进程

2.进程阻塞过程


调用阻塞原语block把自己阻塞。(主动行为)

阻塞(block)过程:

立即停止执行; 把PCB中进程状态 执行 改为 阻塞 PCB 插入具有相同事件的 阻塞队列; 转进程调度程序,将处理机分配给某个就绪进程,并进行进程切换 —— 保留被阻塞进程的处理机状态(在PCB中) ,再按新进程的 PCB 中处理机状态设置 CPU 的环境。 

3.进程唤醒过程


调用唤醒原语wakeup( ),将等待事件的进程唤醒。

唤醒原语执行过程

将被唤醒进程的PCB从阻塞队列移出;

将其PCB中进程状态由阻塞改为就绪

将改PCB插入到就绪队列中。

block()和wakeup()是成对的。

Win32中线程阻塞的API函数是SuspendThread( );唤醒线程的API函数是ResumeThread ( )

Windows中一般没有挂起状态,即线程“挂起”后并不调到外存,而只是阻塞。唤醒也称为释放。

五、进程的挂起和激活


1.进程的挂起


当出现了引起进程挂起的事件时(用户进程请求将自己挂起,或父进程请求将子进程挂起),系统将用挂起原语suspend( )将指定进程或处于阻塞状态的进程挂起。

挂起原语的执行过程:

1、检查被挂起进程的状态:

若处于活动就绪或执行状态,则将其转为静止就绪;

若处于活动阻塞,则将其转为静止阻塞

2、把该进程的PCB复制到某指定内存区域 -----为方便用户或父进程考查该进程的运行状态。

3、若该进程正在执行,则转进程调度程序重新调度。

2.进程的激活


        当发生激活进程的事件时(如父进程或用户请求激活指定进程,而内存中已有足够空间时),系统利用激活原语active( )将指定进程激活。

激活过程是:

1、将进程从外存调入内存;

2、检查该进程现行状态:

若是静止就绪,则改为活动就绪;

若是静止阻塞,则改为活动阻塞。

3、若采用的是抢占式调度策略,则应检查被激活就绪进程的优先级,若其优先级比先行执行进程高,则应将处理机分配给被激活进程。

本文标签: 挂起进程操作系统