进程的创建终止、阻塞唤醒、挂起激活(操作系统)

news/2024/11/30 8:01:14/

目录

一、引起创建进程的事件

二、进程的创建

三、进制的终止

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


http://www.ppmy.cn/news/763192.html

相关文章

windows7添加打印机以及共享的步骤

windows7添加打印机以及共享的步骤 1、点击电脑右下角的开始图标,然后再点击“控制面板” 2、会弹出一个控制面板窗口,点击“硬件和声音”选项 3、然后再点击右侧的“设备和打印机”链接 4、然后点击上方的“添加打印机”选项 5、然后点击“添加网络…

国产linux系统对打印机的支持,Linux系统下对打印机进行配置

(中国软件网讯)在Linux下采用假脱机(spooling)打印方法,当用户需要打印一个文件时,该文件并不直接送到打印机,而是送到spool目录下,然后由一个负责打印的后台进程把这些数据送入打印机。 Linux对每台打印机都定义了一个打印缓冲区…

linux系统添加打印机失败,Linux系统下打印机怎样配置?

在Linux下采用假脱机(spooling)打印方法,当用户需要打印一个文件时,该文件并不直接送到打印机,而是送到spool目录下,然后由一个负责打印的后台进程把这些数据送入打印机。 Linux对每台打印机都定义了一个打印缓冲区,打…

Excel无法响应,挂起,冻结或停止工作

Excel无法响应,挂起,冻结或停止工作 Office 365的 Excel Excel 2019 Excel 2016 Excel 2016 Excel 2013Excel 2010 Excel 2007 本文讨论了疑难解答步骤,可以帮助您解决最常见的问题,当您收到Excel响应错误,启动或打…

远程用计算机加共享打印机,如何在远程桌面上使用本地打印机

从远程2113会话打印到本地打印机在远程桌面会话5261的过程4102中,可以使用打印机打印存储在远程计算机上的1653个文档. 只需在连接前进行设置即可. 设置将被保存,下次连接时无需更改. 通过单击“开始”,单击“程序”或“所有程序”&#xff0…

远程打印机 只能用计算机名,教你玩转远程终端打印机

打印机是现代化办公必不可少的设备,因而如何高效而又经济地使用打印机是用户们普遍关心的问题。下面,提供远程终端打印机的使用的技巧与方法,虽然没有多少秘密可言,但是如果能正确地执行它,相信一定会提高你的工作也会…

连的共享打印机显示服务器脱机,打印机显示服务器脱机

打印机显示服务器脱机 内容精选 换一换 RAW协议是大多数打印设备的默认协议LPR协议作为网络打印的真正标准而被广泛采用(一般保持默认即可)不同点:RAW协议使用端口9100至9102打印,如果选择RAW协议,必须输入9100、9101或9102;一般激光打印机是…

win10 打印机脱机怎么办

打印机脱机,导致打印的文件被挂起,文件不能打印,更改打印机高级设置没有起作用,就需要删除当前的打印机设备并且重新添加打印机设备。 步骤: 1.在桌面底部菜单栏右击打印机设备,选择“打开设备和打印机”选…