3 进程管理.docx

上传人:b****6 文档编号:6164173 上传时间:2023-01-04 格式:DOCX 页数:26 大小:619.68KB
下载 相关 举报
3 进程管理.docx_第1页
第1页 / 共26页
3 进程管理.docx_第2页
第2页 / 共26页
3 进程管理.docx_第3页
第3页 / 共26页
3 进程管理.docx_第4页
第4页 / 共26页
3 进程管理.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

3 进程管理.docx

《3 进程管理.docx》由会员分享,可在线阅读,更多相关《3 进程管理.docx(26页珍藏版)》请在冰豆网上搜索。

3 进程管理.docx

3进程管理

第三章进程管理

§3.1进程的基本概念

§3.1.1程序的执行方式

一、顺序执行

一个程序的全部指令执行完以后才顺序执行另一个程序的指令。

特征:

(1)顺序性:

每一操作必须在下一操作之前结束

(2)资源独占性:

顺序执行的程序独占全机资源

(3)程序结果的封闭性:

程序的运行结果与程序的运行速度无关。

(4)执行过程的可再现性:

程序的执行的初始条件若相同,最终结果亦完全相同。

例:

AB

A1:

r<-5;B1:

r<-10

A2:

x<-2*r*r;B2:

x<-2*r*r;

A3:

write(x)B3:

write(x)

二、并行执行

多个程序的执行时间完全重叠的执行方式(即一个程序还没有结束,另一个程序已经开始)

三、并发执行

1、定义:

逻辑上独立的一组程序同时投入系统执行,而由系统按照资源共享的原则实现内部调度,使这组程序在宏观上是并行的而在微观上是顺序的。

2、并发执行引起的问题:

(1)间断性:

相互制约导致程序的执行具有“执行-暂停-执行”的间断性活动规律

(2)失去封闭性:

多个程序共享系统中的资源,程序的执行受到其它程序的制约。

(3)不可再现性:

程序经过多次执行,可能得到的结果各不相同。

§3.1.2进程的定义及特征

在多道程序执行环境中如果仍以程序作为运行的基本单位,显然无法满足并发性、随机性、及资源动态共享等要求。

为了适应并发执行环境的特点,简化操作系统的设计,为了控制和协调各程序段执行过程中的软、硬件资源的共享和竞争,必须应该有一个描述各程序段执行过程和共享资源的基本单位。

一、进程的概念

(1)进程是程序作用在一组数据上的一次执行过程。

(2)进程是操作系统中一个可独立调度、资源分配的基本单位。

(3)进程是可以和别的计算并发执行的计算。

二、进程的特征

(1)动态性:

进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的,进程在其生命周期内,在三种基本状态之间转换

(2)并发性:

任何进程都可以同其他进程一起向前推进

(3)独立性:

独立分配资源和接受调度

(4)异步性:

由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

三、进程与程序的区别

(1)进程是一个动态概念,有完整的生命周期,其存在是动态变化的。

而程序是一个静态概念,是一个固定不变的完成某种功能的指令的集合。

(2)进程的执行是并发的,而程序只是功能实体,与执行无关。

(3)进程是具有独立功能的程序在数据集上的一次执行过程。

同一程序可对应多个不同的进程。

而程序作为代码副本在系统中只能有一个。

例如:

按照菜谱炒菜

§3.2进程的状态及转换

进程是一个执行过程,具有一定的生命周期

一、进程状态转换图

进程调度出现等待事件

时间片到

等待事件结束

进程状态转换图

二、状态及转换的具体表现

1、当进程已分配到除CPU以外的所有必要资源时,它便处于就绪状态,一旦获得CPU,便立即执行

2、已获得CPU的进程进入执行状态

3、正在执行的进程,由于发生某个事件而暂时无法执行时,便放弃处理机而进入阻塞状态

4、由于执行的进程变为阻塞状态后,调度程序立即把处理机分配给另一个就绪进程;因此,阻塞进程的事件消失后,进程不会立即恢复到执行状态,而转变为就绪状态,重新等待处理机

三、进程状态转换条件

在进程运行过程中,由于自身进展情况及外界环境的变化,这三种基本状态可以依据一定的条件相互转换:

1、就绪-->运行

调度程序选择一个新的进程运行

2、运行-->就绪

(1)运行进程用完了时间片

(2)运行进程被中断,因为一高优先级进程处于就绪状态

3、运行-->阻塞

当一进程必须等待时

(1)对一资源的访问尚不能进行

(2)等待某一进程提供输入(IPC)

4、等待-->就绪

当所等待的事件发生时

四、UNIX的进程状态转换

在前三种状态的基础上增加了挂起状态,把处于就绪态和阻塞态的部分进程从内存移出到外存

 

 

§3.3进程的描述

程序段

描述进程的结构数据集进程实体

进程控制块(PCB)

一、程序段

完成用户需求功能的指令集

二、数据集

程序加工的对象

三、进程控制块(PCB)

1、进程控制块的描述

(1)系统为了管理进程设置的一个专门的数据结构,存放了用于描述该进程情况和控制进程运行所需的全部信息

(2)系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志

(3)进程与PCB是一一对应的

2、包含信息

一个PCB至少包括4类信息,全部或部分放入内存

(1)进程标识信息

(2)资源管理信息

 

(3)控制信息(4)执行现场信息

 

3、进程控制块的作用

进程控制块是操作系统中管理、控制进程的重要数据实体,也是进程存在的唯一标志,操作系统通过创建进程控制块创建进程,通过操作进程控制块中的信息为进程分配资源、调度执行、实施控制,最后通过回收进程控制块而撤销进程

4、进程控制块的组织方式

为了有效地对进程控制块进行管理,应该采用适当的方式把它们组织起来。

目前常用的组织方式有以下两种:

(1)按链接方式组织PCB(队列)

不同状态进程分别组成队列

空PCB队列运行态就绪态阻塞态1阻塞态2

(2)按索引方式组织PCB(表)

对具有相同状态的进程,分别设置各自的PCB索引表,表明PCB在PCB中的地址

 

§3.4进程控制

进程控制:

系统使用一些具有特定功能的程序段创建、撤销进程以及完成进程各状态间的转换,从而达到多进程高效并发执行和协调、实现资源共享的目的。

原语:

执行过程中不允许中断或不能并发执行的系统程序。

一、创建原语

1、功能:

创建一个具有指定标识符进程

2、入口信息:

进程标识符、优先级、进程开始地址、初始CPU状态、资源清单等

3、实现过程

 

2、进程的撤消原语

(1)功能:

撤消一个指定的进程

(2)入口信息:

被撤消的进程名

(3)实现过程

 

 

(4)引起撤消的原因

正常结束

异常结束(越界错、保护错、特权指令错、非法指令、运行超时、I/O故障等)

外界干预(操作员干预、父进程请父进程终止)

3、进程阻塞

处于运行状态的进程,在其运行过程中期待某一事件发生,如等待键盘输入、等待磁盘数据传输完成、等待其它进程发送消息,当被等待的事件未发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态。

(1)功能:

停止调用进程的执行,变为等待

(2)入口信息:

可省

(3)阻塞原语的实现过程

 

4、进程的唤醒原语

(1)功能:

唤醒某一处于等待队列当中的进程

(2)入口信息:

被唤醒进程的名字

(3)唤醒原语的实现过程

 

(4)引起唤醒的原因

系统服务由不满足到满足

I/O完成

新数据到达

进程提出新请求(服务)

§3.5进程互斥

一、定义

一组并发进程中的一个或多个程序段因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行

二、相关术语

1、临界资源

一次只允许一个进程使用的资源

2、临界区

进程的代码段中设计临界资源的程序段

3、临界区的控制原则

(1)临界区只能顺序执行

(2)在临界区内执行的进程必须在有限的时间内释放临界区

(3)退出临界区的进程有义务唤醒因进不了临界区而阻塞的进程

三、互斥实现

加/开锁

W=1有进程使用

W=

W=0无进程使用

Lock(w)

{if(w==1){调阻塞原语阻塞当前进程

转进程调度程序

}

Elsew=1

}

Unlock(w)

{

If(等待队列不空){调唤醒原语唤醒一个进程}

W=0

}

ABC

Lock(w)lock(w)lock(w)

临界区代码临界区代码临界区代码

Unlock(w)unlock(w)unlock(w)

加/开锁操作进程不断的测试w的值

§3.6信号量和P、V原语

一、信号量

信号量定义成一整型量S,代表某种资源,仅通过两个标准原子操作P(S)和V(S)来访问

二、P操作

意味着请求分配一个单位资源

1、过程

P(s)

{s=s--;

if(s<0)

{该进程状态置为等待状态

将该进程的PCB插入相应的等待队列末尾;

}

}

三、V操作

意味着释放一个单位资源

1、过程

V(s)

{s=s++;

if(s<=0)

{唤醒相应等待队列s中等待的一个进程

改变其状态为就绪态

并将其插入就绪队列

}

}

四、信号量的使用

1、必须置一次且只能置一次初值

2、初值不能为负数

3、只能执行P、V操作

五、P、V操作实现互斥

例:

三个进程共用两个I/O缓冲区

解:

设用信号量S表示共享资源,S初始值为2

A进程B进程C进程

………

P(S)P(S)P(S)

使用缓冲区使用缓冲区使用缓冲区

V(S)V(S)V(S)

§3.7进程同步

一、进程间的关系

1、间接相互制约关系。

源于资源共享。

例如:

进程互斥

2、直接相互制约关系。

源于进程间的合作。

例如:

进程同步

二、进程同步定义

指相互合作的进程之间,因需要交换一定的信息而使进程的执行速度受到制约以保证诸进程的协调运行。

例1:

(1)两个进程P1、P2,P1为输入进程,P2为处理P1输入的数据的进程,P1输入的数据放入缓冲区(无限大),P2从缓冲区中取数据。

(2)缓冲区为5格,每格可存放一个数据

例2:

三个进程

例3:

生产者-消费者问题

把并发进程的同步和互斥问题一般化,可以得到一个抽象的一般模型,即生产者-消费者问题

使用某类资源的进程—消费者资源释放同类资源的进程---生产者进程

1

2

……

…………

n-1

n

P1

 

有界缓冲区n

 

要求:

(1)消费者接收数据时,有界缓冲区中至少有一个存储格中有数据

(2)生产者想要发送数据,有界缓冲区中至少有一个存储格式空的

(3)任何一时刻只允许一个进程访问缓冲区

解:

设信号量S1代表缓冲格,S1初=n

设信号量S2代表生产的产品,S2初=0

设信号量S代表缓冲区,S初=1

生产者进程

P(S)

P(S1)

送产品入缓冲区中某个缓冲格

V(S)

V(S2)

 

消费者进程

P(S)

P(S2)

从缓冲区中某个缓冲格区数据

V(S)

V(S1)

考虑:

P(S)和P(S1)能否换位置?

例4:

设某台机挂有两个I/O通道:

分别挂一台输入机和一台打印机。

卡片机上有一叠数据卡片,现在要把这些数据逐一输入到缓冲区B1,然后再复制到缓冲区B2,并在打印机上打印出来。

解:

由上图可见,系统可设3个进程:

输入进程、复制进程、打印进程;分别用进程R、进程C、进程P来表示。

这些进程之间的相互制约关系:

R受C的约束;C受R、P的约束;P受C的约束。

设4个信号量:

S1代表缓冲区B1,初值=1,

S2代表输入数据,初值=0,

S3代表缓冲区B2,初值=1,

S4代表复制的数据,初值=0

同步算法如下:

§3.8P.V操作讨论

1、信号量的物理含义:

S>0表示有S个资源可用;S=0表示无资源可用

S<0则|S|表示S等待队列中的进程个数

P(S):

表示申请一个资源;

V(S)表示释放一个资源。

信号量的初值应该大于等于0

2、P.V操作必须成对出现,有一个P操作就一定有一个V操作

当为互斥操作时,它们同处于同一进程

当为同步操作时,则不在同一进程中出现

如果P(S1)和P(S2)两个操作在一起,那么P操作的顺序至关重要,一个同步P操作与一个互斥P操作在一起时同步P操作在互斥P操作前

而两个V操作无关紧要

3、P.V操作的优缺点

(1)P.V操作优点:

简单,而且表达能力强(用P.V操作可解决任何同步互斥问题)

(2)缺点:

“不够安全;P.V操作使用不当会出现死锁;遇到复杂同步互斥问题时实现复杂

§3.9进程通信

通信:

进程间传送数据

控制信息的传送低级通信(数据量小)控制进程的执行速度

通信

大批量数据传送高级通信数据量大)交换信息

 

主从式

进程的通信方式会话式

消息或邮箱机制

共享存储区方式

一、主从式

主从式通信系统的主要特点:

1、主进程可自由地使用从进程的资源或数据

2、从进程的动作收主进程的控制

3、主进程和从进程的关系式固定的

例子:

终端控制进程和终端进程

二、会话式

使用进程

通信进程双方使用进程调用服务进程提供的服务

服务进程

会话式通信系统的特点:

1、使用进程在使用服务进程所提供的服务之前,必须得到服务进程的许可

2、服务进程根据使用进程的要求提供服务,但对所提供服务的控制由服务进程自身完成

3、使用进程和服务进程在进行通信时有固定的连接关系。

例子:

用户进程与磁盘管理进程

三、消息或邮箱机制

结构:

消息的组成:

发送进程名

接收进程名

操作

数据

消息或邮箱机制的特点:

1、只要存在空缓冲区或邮箱,发送进程就可以发送消息

2、与会话系统不同,发送进程和接收进程之间无直接连接关系,接收进程可能在收到某个发送进程发来的消息之后,又转去接受另一个发送进程发来的消息

3、发送进程和接收进程之间存在缓冲区或邮箱用来存放被传送的消息

例子:

PV操作中的例子

§3.10死锁

§3.10.1死锁的概念

一、死锁的定义**

并发执行的一组进程彼此相互等待对方占用的资源,在得到对方占用的资源前它并不释放自己所占用的资源,由此形成诸进程循环等待而永远无法执行的僵死状态。

二、死锁产生的原因**

1、竞争资源引起的死锁

可剥夺性资源CPU内存

资源

非剥夺性资源打印机等

非剥夺性资源引起死锁

例:

进程A进程B

申请输入设备申请输出设备

申请输出设备申请输入设备

使用处理使用处理

释放输入设备释放输出设备

释放输出设备释放输入设备

 

2、进程推进顺序不当引起死锁

例如:

P、V操作中同时出现同步与互斥

三、关于死锁的结论

1、参与死锁的进程最少是两个

2、参与死锁的进程至少有两个已经占有资源

3、参与死锁的所有进程都在等待资源

4、参与死锁的进程是当前系统中所有进程的子集

注:

如果死锁发生,会浪费大量系统资源,甚至导致系统崩溃。

四、产生死锁的必要条件

(1)互斥条件(资源独占)

在一段时间内某资源只由一个进程占用

(2)请求和保持条件(部分分配,占有申请)

进程已经保持了至少一个资源,但有提出了新的资源请求,而该资源又已经被其他进程占有,此时请求进程阻塞,但有对自己已获得的其他资源保持不放

(3)不剥夺条件(不可强占)

进程已获得的资源,在未使用完之前不能被剥夺,只能在使用完时由自己释放

(4)环路等待条件(发生死锁时必然存在一个进程—资源的循环链)

五、解决死锁的基本办法

•预防死锁

•避免死锁

•检测死锁

•解除死锁

§3.10.2预防死锁的方法和避免死锁

一、预防死锁的方法

在系统设计时确定资源分配算法,保证不发生死锁。

具体的做法是破坏产生死锁的四个必要条件之一。

1)破坏请求和保持条件.

一次性申请所需全部资源,只要有一个资源不满足,取消所有的资源

2)破坏不可剥夺条件

可剥夺资源;即当某进程新的资源未满足时,释放已占有的资源(

3)破坏环路等待条件

资源有序分配法;做法:

系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反

二、死锁避免

1、定义

在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配

预防死锁的几种策略,会严重地损害了系统性能。

因此要施加较弱的限制,从而获得较满意得系统性能来避免死锁

由于在避免死锁的策略中,允许进程动态地申请资源。

因而,系统在进行资源分配之前预先计算资源分配的安全性。

若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等待。

其中最具有代表性的避免死锁算法是银行家算法

2、安全状态与不安全状态

安全状态指系统能按某种进程顺序来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺序完成。

若系统不存在这样一个序列,则称系统处于不安全状态。

(1)安全序列

一个进程序列{P1,…,Pn}是安全的,如果对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj(j

(安全状态一定是没有死锁发生的)

(2)安全状态之例

我们通过一个例子来说明安全性。

假定系统中有三个进程P1、P2和P3,共有12台磁带机。

进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。

假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示:

进程

最大需求

已分配

可用

P1

P2

P3

10

4

9

5

2

2

3

(3)由安全状态向不安全状态的转换

如果不按照安全序分配资源,则系统可能会由安全状态进入不安全状态。

例如,在T0时刻以后,P3又请求1台磁带机,若此时系统把剩余3台中的1台分配给P3,则系统便进入不安全状态。

因为,此时也无法再找到一个安全序列,例如,把其余的2台分配给P2,这样,在P2完成后只能释放出4台,既不能满足P1尚需5台的要求,也不能满足P3尚需6台的要求,致使它们都无法推进到完成,彼此都在等待对方释放资源,即陷入僵局,结果导致死锁

例:

T0时刻资源分配如下:

已分配还需要可用资源

P0001312121332

P103231104

P210100631

P314302124

(1)该状态是安全的吗?

(要求:

给出步骤)

(2)如果进程P1提出资源请求Request(1,1,0,2),系统能否将资源分配给它?

(要求:

给出步骤)

3、利用银行家算法避免死锁

(1)银行家算法中的数据结构

(a)可利用资源向量Available。

这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。

如果Available[j]=K,则表示系统中现有Rj类资源K个

(b)最大需求矩阵Max。

这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。

如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K

(c)分配矩阵Allocation。

这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。

如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。

(d)需求矩阵Need。

这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。

如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务

Need[i,j]=Max[i,j]-Allocation[i,j]

(2)银行家算法

设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。

当Pi发出资源请求后,系统按下述步骤进行检查

(a)如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值

(b)如果Requesti[j]≤Available[j],便转向步骤(3);否则,表示尚无足够资源,Pi须等待

(c)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:

Available[j]∶=Available[j]-Requesti[j];

Allocation[i,j]∶=Allocation[i,j]+Requesti[j];

Need[i,j]∶=Need[i,j]-Requesti[j]

(d)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。

若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待

(3)安全性算法

(a)设置两个向量:

①工作向量Work:

它表示系统可提供给进程继续运行所需的各类资源数目,它含有m个元素,在执行安全算法开始时,Work∶=Available;②Finish:

它表示系统是否有足够的资源分配给进程,使之运行完成。

开始时先做Finish[i]∶=false;当有足够资源分配给进程时,再令Finish[i]∶=true

(b)从进程集合中找到一个能满足下述条件的进程:

①Finish[i]=false;②Need[i,j]≤Work[j];若找到,执行步骤(3),否则,执行步骤(4)。

(c)当进程Pi获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:

Work[j]∶=Work[j]+Allocation[i,j];

Finish[i]∶=true;

gotostep2;

(d)如果所有进程的Finish[i]=true都满足,则表示系统处于安全状态;否则,系统处于不安全状态

(4)银行家算法之例

假定系统中有五个进程{P0,P1,P2,P3,P4}和三类资源{A,B,C},各种资源的数量分别为10、5、7,在T0时刻的资源分配情况如图所示

(a)T0时刻的安全性:

(b)

(b)P1请求资源:

P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查:

①Request1(1,0,2)≤Need1(1,2,2)

②Request1(1,0,2)≤Available1(3,3,2)

③系统先假定可为P1分配资源,并修改Available,Allocation1和Need1向量,由此形成的资源变化情况如图3-15中的圆括号所示。

④再利用安全性算法检查此时系统是否安全

P1申请资源时的安全性检查

(c)P4请求资源:

P4发出请求向量Request4(3,3,0),系统按银行家算法进行检查:

①Request4(3,3,0)≤Need4(4,3,1);

②Request4(3,3,0)

(d)P0请求资源:

P0发出请求向量Requst0(0,2,0),系统按银行家算法进行检查:

①Request0(0,2,0)≤Need0(7,4,3);

②Request0(0,2,0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1