操作系统(二)进程控制

1 进程状态

1. 进程的三种基本状态

1) 就绪(Ready)状态
2) 执行状态3)
阻塞状态(请求I/O,申请缓冲空间等)

2. 挂起状态

引入挂起状态的原因有:

(1)终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态称为挂起状态。

(2)父进程请求。有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。

(3)负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

(4) 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。

(1) 活动就绪→静止就绪。当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Readya。当用挂起原语Suspend
将该进程挂起后,该进程便转变为静止就绪状态,表示为Readys,处于Readys状态的进程不再被调度执行。

(2)活动阻塞→静止阻塞。当进程处于未被挂起的阻塞状态时,称它是处于活动阻塞状态,表示Blockeda。当用Suspend原语将它挂起后,进程便转变为静止阻塞状态,表示为Blockeds。处于该状态的进程在其所期待的事件出现后,将从静止阻塞变为静止就绪。

(3) 静止就绪→活动就绪。处于Readys
状态的进程,若用激活原语Active
激活后,该进程将转变为Readya
状态。

(4) 静止阻塞→活动阻塞。处于
Blockeds 状态的进程,若用激活原语Active
激活后,该进程将转变为Blockeda
状态。

3.创建状态和终止状态

为了管理的需要,还存在着两种比较常见的进程状态,即创建状态和终止状态。

1) 创建状态

创建一个进程一般要通过两个步骤:首先,为一个新进程创建PCB,并填写必要的管理信息;其次,把该进程转入就绪状态并插入就绪队列之中。

当一个新进程被创建时,统已为其分配了PCB,填写了进程标识等信息,但由于该进程所必需的资源或其它信息,如主存资源尚未分配等,一般而言,此时的进程已拥有了自己的PCB,但进程自身还未进入主存,即创建工作尚未完成,进程还不能被调度运行,其所处的状态就是创建状态.

2)终止状态

进程的终止也要通过两个步骤:首先等待操作系统进行善后处理,然后将其PCB
清零,并将PCB
空间返还系统。

进入终止态的进程以后不能再执行,但在操作系统中依然保留一个记录,其中保存状态码和一些计时统计数据,供其它进程收集。一旦其它进程完成了对终止状态进程的信息提取之后,操作系统将删除该进程。

如图2-8
所示,引进创建和终止状态后,在进程状态转换时,相比较图2-7
所示的进程五状态转换而言,需要增加考虑下面的几种情况。

(1)NULL→创建:一个新进程产生时,该进程处于创建状态。

(2)创建→活动就绪:在当前系统的性能和内存的容量均允许的情况下,完成对进程创建的必要操作后,相应的系统进程将进程的状态转换为活动就绪状态.

(3)创建→静止就绪:考虑到系统当前资源状况和性能要求,并不分配给新建进程所需资源,主要是主存资源,相应的系统进程将进程状态转为静止就绪状态,对换到外存,不再参与调度,此时进程创建工作尚未完成。

(4)执行→终止:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,进程即进终止状态。

2 进程控制块

1.进程控制块的作用

为了描述和控制进程的运行,系统为每个进程定义了一个数据结构——进程控制块PCB(ProcessControl
Block),它是进程实体的一部分,是操作系统中最重要的记录型数据结构.

2.进程控制块中的信息

1) 进程标识符

(1) 内部标识符(2)
外部标识符。

2) 处理机状态

1 通用寄存器2
指令计数器3
程序状态字PSW 4
用户栈指针

3) 进程调度信息

1 进程状态
2 进程优先级3
进程调度所需的其它信息,它们与所采用的进程调度算法有关4事件,指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因.

4) 进程控制信息

1 程序和数据的地址,2
进程同步和通信机制3资源清单,即一张列出了除CPU
以外的、进程所需的全部

资源及已经分配到该进程的资源的清单;4
链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB
的首地址。

3. 进程控制块的组织方式
1) 链接方式
2) 索引方式

2 进程 控 制

1.进程的创建与终止

引起创建进程的事件

(1) 用户登录(2)
作业调度。(3)提供服务。(4)应用请求。

进程的创建(Creationof Process)

(1) 申请空白PCB。(2)为新进程分配资源。(3)初始化进程控制块。(4)将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。

2.进程的终止

引起进程终止的事件

1) 正常结束2)
异常结束3)
外界干预

(1) 越界错误。这是指程序所访问的存储区已越出该进程的区域。

(2) 保护错。这是指进程试图去访问一个不允许访问的资源或文件,或者以不适当的方

式进行访问,例如,进程试图去写一个只读文件。

(3) 非法指令。这是指程序试图去执行一条不存在的指令。出现该错误的原因,可能是

程序错误地转移到数据区,把数据当成了指令。

(4) 特权指令错。这是指用户进程试图去执行一条只允许OS
执行的指令。

(5) 运行超时。这是指进程的执行时间超过了指定的最大值。

(6) 等待超时。这是指进程等待某事件的时间超过了规定的最大值。

(7) 算术运算错。这是指进程试图去执行一个被禁止的运算,例如被0
除。

(8) I/O 故障。这是指在I/O
过程中发生了错误等

进程的终止过程

(1) 根据被终止进程的标识符,从PCB
集合中检索出该进程的PCB,从中读出该进程的状态。

(2) 若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。

(3) 若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防它们成为不可控的进程。

(4) 将被终止进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。

(5) 将被终止进程(PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息。

2 进程的阻塞与唤醒

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

1) 请求系统服务2)
启动某种操作3)
新数据尚未到达4)
无新工作可做

统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来。例如,系统中的发送进程,其主要工作是发送数据,若已有的数据已全部发送完成而又无新的发送请求,这时(发送)进程将使自己进入阻塞状态;

2.进程阻塞过程

正在执行的进程,当发现上述某事件时,由于无法继续执行,于是进程便通过调用阻塞原语block
把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。

3.进程唤醒过程

当被阻塞进程所期待的事件出现时,如I/O
完成或其所期待的数据已经到达,则由有关进程(比如用完并释放了该I/O
设备的进程)调用唤醒原语wakeup( ),
将等待该事件的进程唤醒.

3 进程的挂起与激活

挂起原语的执行过程是:首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪;对于活动阻塞状态的进程,则将之改为静止阻塞。为了方便用户或父进程考查该进程的运行情况而把该进程的PCB复制到某指定的内存区域。最后,若被挂起的进程正在执行,则转向调度程序重新调度

激活原语先将进程从外存调入内存,检查该进程的现行状态,若是静止就绪,便将之改为活动就绪;若为静止阻塞,便将之改为活动阻塞。假如采用的是抢占调度策略,则每当有新进程进入就绪队列时,应检查是否要进行重新调度,即由调度程序将被激活进程与当前进程进行优先级的比较,如果被激活进程的优先级更低,就不必重新调度;否则,立即剥夺当前进程的运行,把处理机分配给刚被激活的进程。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-12 07:22:14

操作系统(二)进程控制的相关文章

操作系统2_进程控制

进程管理中最基本的功能.创建,终止,状态转换操作 有OS内核中的原语实现的,原语由若干指令组成,是'原子操作',所有动作要么做,要么不做,不允许中断,在管态下执行,常驻内存 进程创建: 进程图是描述有进程家族关系的有向树 进程间关系:子进程可以继承父进程所拥有的资源 引起进程创建事件: 1,.用户登录:2.作业调度:3.提供服务:4.应用请求 进程的创建: 申请空白PCB:为新进程分配资源:初始化进程控制块:将新进程插入就绪队列: 进程终止: 引起的事件: 正常结束:每种系统都应有表示进程已经运

进程控制(二)与linux下的自有服务

一.进程动态信息查看top 第一部分 统计信息 [[email protected] ~]# top top - 19:22:52 up 1:32, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 106 total, 1 running, 105 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st

【操作系统】进程管理(二)

一.前言 之前已经介绍了操作系统的各个模块,现在来具体深入学习操作系统中的进程管理. 二.进程的基本概念 在未配置OS的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完成后,才允许另外一个程序执行:在多道程序环境下,则允许多个程序并发执行.也正是程序的并发执行,才导致引入进程. 2.1 程序的顺序执行 通常可以把一个应用程序分成若干个程序段,在各程序段之间,必须按照某种先后次序顺序执行,仅当前一操作(程序段)执行完后,才能执行后继操作.如典型的输入->计算->打印任务就是顺序执行. 程

操作系统:进程管理和IO控制

一.进程管理 进程管理包括进程控制,进程调度,进程同步与通信,死锁控制四个内容. (一)进程控制 进程是操作系统中运行的基本单位,包括程序段,数据段和进程控制段.操作系统通过进程控制块(PCB)管理进程.每一个PCB唯一标示一个进程.它存储进程的PID,UID,当前状态等信息,以及进程执行某一时刻的寄存器值,并且指向进程的数据段和程序段.OS把所有PCB链接为一个链表. 进程在刚刚被创建时出于new状态.OS负责申请一块存储空间作为该进程的PCB,在其中填上进程的信息,标示为ready,链接到P

操作系统学习---进程管理(二)

要点: 基础:进程描述及控制 策略:进程调度 实现:互斥与同步 避免:死锁与饥饿 解决:几个经典问题 进程的引入 程序的顺序执行 源代码程序,目标程序和可执行程序 程序执行:编辑,编译,链接,执行 程序的结构:顺序,分支,循环结构 程序执行的特征:顺序性,封闭性,可再现性 程序并发执行 多道程序设计技术:多个程序并发执行 程序并发执行时的特征:间断性,非封闭性,不可再现性 并发执行引发的问题: 协调各程序的执行顺序:输入数据还未全部输入内存时,计算必须等待 多个执行程序共享系统资源,程序之间可能

操作系统基础-下-进程控制及处理机调度

!:进程的控制和描述 *进程的定义:进程是一个具有独立功能的程序在一个数据集合上的一次动态运行过程(是操作系统进行调度和资源分配的基本单元,进程间的通信.同步及上下文切换的开销略大) *进程的特征(了解) 1.动态性:动态性是相对于程序本身来说的,程序仅仅是存放在硬盘上的代码,而进程是程序在某一特定数据集上的动态运行,所以,动态性是程序的最基本特性 2.并发性:并发性是指在一段时间内,操作系统内有多个进程并发执行 3.独立性:进程之间是相对独立的,每个进程都有可用的内存空间 4.异步性:即进程之

进程篇(4: 基本进程控制:其他相关控制)--请参照本博客“操作系统”专栏

1. 更改进程的用户ID和组ID:为什么我们要更改用户ID和组ID的呢? 在UNIX系统中,特权是基于用户和组ID的.当用户需要增加特权,或要访问某个当前没有能力访问的文件时,我们需要更改自己的权限,以让新的ID具有合适的特权或访问权限.与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要跟换用户ID或组ID;一般而言,在设计应用程序时,我们总是试图使用"最小特权"模型.依照此模型,我们的程序应当值具有为完成特定的任务所需要的最小特权. NAME getuid, geteui

【操作系统】进程描述与控制

前言: 开发操作系统是为了给应用程序提供一个方便.安全.一致的访问接口,以屏蔽硬件的复杂性.我们可以将操作系统理解为资源的统一抽象表示,可以被应用程序请求和访问.资源包括内存,文件等,一旦操作系统为应用程序创建了这些资源的抽象表示,就必须管理它们的使用.现代操作系统采用进程来管理应用程序的执行. 进程的概念: 1.一个具有以下特征的活动单元:一组指令序列的执行.一个当前状态和相关的系统资源集. 2.能分配给处理器并由处理器执行的实体. 3.一个正在计算机上执行的程序实例. 进程的组成: 进程由程

进程篇(3: 基本进程控制:进程的退出)--请参照本博客“操作系统”专栏

1. exit函数: 进程的五种正常的结束方式: 在main函数中执行return语句,这等效于exit; 调用exit函数.此函数由ISO C定义,其操作包括运行各终止处理程序,然后关闭所有标准I/O流等. 调用_exit或_Exit函数,ISO C定义了_Exit函数,目的是为了为进程提供一种无需运行终止处理程序和信号处理程序而终止的方法.并不处理标准I/O流! 进程的最后一个线程在其启动例程中执行返回语句,然后该进程以终止状态0返回. 进程的最后一个线程调用pthread_exit函数.