进程通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

remove(m)描述如下: remove(m): begin local x P(mesnum) 选择满格x 把满格x中的消息取出放m中 置格x标志为空 V(fromnum) end
3.7.5 管道通信系统 管道是用于连接读进程和写进程的文件以实现 它们之间通信的共享文件,称pipe文件。向管道 提供输入的进程(称写进程),以字符流的形式 将大量数据送入管道,而接收管道输出的进程 (读进程)可从管道中接收数据。该方式首创于 UNIX,它能传送大量数据,被广泛采用。
2.安全状态
如 果 系 统 能 按 某 种 顺 序 ( 如 P4 , P1,…,Pn, 称为安全序列)为每个进程分 配其所需的资源,直至所有进程都能运行 完成,称系统处于安全状态。 若不存在这样一个安全序列称系统处 于不安全状态。
3. 我们通过一个例子来说明安全性。假定系 统中有三个进程 P1 、 P2 和 P3 ,共有 12 台磁带机。进 程 P1总共要求 10台磁带机, P2 和 P3分别要求 4台和 9 台。假设在T0时刻,进程P1、P2和P3已分别获得5台、 2 台和 2 台磁带机,尚有 3 台空闲未分配,如下表所 示:
3.7 进程通信 进程通信的概念 进程之间的信息交换称为进程通信 进程通信按通信内容可分为: 控制信息的传送 大批量数据传送
把进程间控制信息的交换称为低级通信, 把进程间大批量数据的交换称为高级通信。
3.7.1进程的通信方式 在单机操作系统中,进程间通信可 分为4种形式:
主从式; 会话式; 消息或邮箱机制; 共享存储区方式。
2、避免死锁: 不事先采取限制去破坏产生死锁的条件,而 是在资源的动态分配过程中,用某种方法去防止 系统进入不安全状态,从而避免死锁的发生。
实现较难
1. 死锁避免策略: 在系统运行过程中,对进程发出的每 一个系统能够满足的资源申请进行动态检 查,并根据检查结果决定是否分配资源, 若分配后系统可能发生死锁,则不予分配, 否则予以分配。 在检查是否死锁时,主要时检查系 统是否处于安全状态还是不安全状态。
管道按FIFO方式传送消息,且只能单向传送消息
3.8 死锁问题
3.8.1 死锁的概念 3.8.2 死锁的排除方法
让路! 让路!
让路! 让路!
交 通 死 锁 的 示 例
3.8.1 死锁的概念 1. 死锁举例
例1:
设系统有一台打印机和一台扫描仪, 进程P1、P2并发执行,在某时刻T,进程P1和 P2 分别占用了打印机和扫描仪。在时刻 T1 ( T1>T ), P1 又要申请扫描仪,但由于扫描 仪 被 P2 占 用 , P1 只 有 等 待 。 在 时 刻 T2 ( T2>T ), P2 又申请打印机,但由于打印机 被 P1 占用, P2 只有等待。如此两进程均不能 执行完成。称这种现象为死锁。
3.8.1 死锁的概念 2. 死锁定义 死锁,是指各并发进程彼此互相等待对方 所拥有的资源,且这些并发进程在得到对方的资 源之前不会释放自己所拥有的资源。从而造成大 家都想得到资源而又都得不到资源,各并发进程 不能继续向前推进的状态。
3.8.1 死锁的概念 3. 死锁的起因 死锁的起因是并发进程的资源竞争 根本原因在于系统提供的资源个数少于并发 进程所要求的该类资源数 由于资源的有限性不可能为所有要求资源的 进程无限制的提供资源,但是可以采用适当的资
3.7.1进程的通信方式 3.消息或邮箱机制 无论接收进程是否已准备好接收消息, 发送进程都将把所要发送的消息送入缓冲区或 邮箱 消息由4部分组成:发送进程名、接收进 程名、数据和有关数据的操作
3.7.1进程的通信方式 3.消息或邮箱机制 消息或邮箱机制的特点是:
只要存在空缓冲区或邮箱,发送进程 就可以发送消息 两进程之间无直接连接关系 两个进程之间存在缓冲区或邮箱用来 存放被传送消息
源分配算法,以达到消除死锁的目的
关于死锁的一些结论:
参与死锁的进程最少是两个 (两个以上进程才会出现死锁) 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子集 如果死锁发生,会浪费大量系统资源,甚至导致系 统崩溃
3.8.1 死锁的概念
3.7.1进程的通信方式
2. 会话式通信
用户进程与磁盘管理进程之间的通 信是会话系统的一个例子。 各用户进程向磁盘管理进程提出使用要求并得到 许可之后,才可以使用相应的存储区。而且,由磁 盘管理进程自身完成对磁盘存储区的管理和控制。 另外,用户进程与磁盘管理进程之间,只有在用户 进程要求使用磁盘存储区时才有通信关系。
消息缓冲通信就是一种直接通信方式
3.7.2 消息传递系统 间接通信方式 发送进程将消息发送到某种中间实体中 (信箱),接收进程从中取得消息。 信箱通信就是一种间接通信方式。信箱通信 广泛用于计算机网络,即电子邮件系统。
3.7.2 消息传递系统 思考:
两种方式的主要区别? 前者需要两进程都存在,后者不需要。
实现复杂、要付出很大的代价。
剥夺策略设计复杂,如: – 当进程Pi申请资源时,若有则分配,若 没有则剥夺Pi占有的所有资源。
– 当进程Pi申请ri类资源时,若有则分配, 若无则剥夺占有ri类资源进程所占的ri 类资源分配给Pi;
3.破坏部分分配条件
系统要求所有进程要一次性地申请在 整个运行过程中所需的全部资源。如某个 进程的资源得不到满足时,则安排一定的 等待次序让其他进程释放资源 优点:简单、易于实现且安全。但有缺点。
3.7.1进程的通信方式 4. 共享存储区方式 共享存储区方式不要求数据移动。两个需要 互相交换信息的进程通过对同一共享数据区 (shared memory)的操作来达到互相通信的 目的。这个共享数据区是每个互相通信进程的 一个组成部分。 如生产者-消费者问题中的有界 缓冲区
3.7.2 消息传递系统
进程A ①申请输入设备 ②申请输出设备 ③释放输入设备 ④释放输出设备 则发生死锁。
进程B ①申请输出设备 ②申请输入设备 ③释放输出设备 ④释放输入设备
如果执行次序为:进程A①→进程B①...,
B在干什么?
A 输入设备
A在干什么?
竞 争 外 设 死 锁 示 例
输出设备
B
3.8.1 死锁的概念 1. 死锁举例 例 2: 在生产者-消费者问题中将生产者进程的两个P 操作颠倒时会发生死锁(如果缓冲区中数据 满)。 将消费者进程的两个P操作颠倒时也会发生 死锁。 因此要注意P操作的执行次序
解决死锁的方法一般可分为: • 预防死锁 • 避免死锁 • 检测与恢复
3.8.2 死锁的排除方法 1、预防死锁: 预防是采用某种策略,限制并发进程对资 源的请求,从而使得死锁的必要条件在系统 执行的任何时间都不满足。
较易实现,广泛使用,但由于所施加 的限制往往太严格,可能导致系统资源 利用率和系统吞吐量的降低。
2. 消息缓冲通信
发送进程的描述: Send(m): begin 向系统申请一个消息缓冲区 P(mutex) 将发送区消息m送入新申请的消息缓冲区 把消息缓冲区挂入接收进程的消息队列 V(mutex) V(SM) end
2. 消息缓冲通信
接受进程的描述: Receive(n): begin P(SM) P(mutex) 摘下消息队列中的消息n 将消息n从缓冲区复制到接收区 释放缓冲区 V(mutex) end
3.7.3. 邮箱通信
邮箱通信就是由发送进程申请建立一与 接收进程链接的邮箱。发送进程把消息送往邮 箱,接收进程从邮箱中取出消息,从而完成进 程间信息交换。

邮箱实际式发送进程与接收进程之间的大
小固定的私有数据结构
只有一发送进程和一接收进程使用的邮 箱需满足的条件:
• 发送进程发送消息时,邮箱中至少要 有一个空格能存放该消息 • 接收进程接收消息时,邮箱中至少要 有一个消息存在
4.破坏环路条件
系统中的所有资源都有一个确定的唯一号码, 所有分配请求必须以序号上升的次序进行 例如:系统中有下列设备:输入机(1),打印 机(2),穿孔机(3),磁带机(4),磁盘 (5)。有一进程要先后使用输入机、磁盘、打 印机,则它申请设备时要按输入机、打印机、磁 盘的顺序申请
4.破坏环路条件
邮箱的结构:
邮箱通信的实现:
设发送进程调用deposit(m)将消息发送到邮 箱,接收进程调用remove(m)将消息m从邮箱 中取出 信号量fromnum为发送进程的私用信号量, 记录空格数,初值为信箱的空格数n mesnum为接收进程的私用信号量,记录消息 个数,初值为0
deposit(m) 描述如下: deposit(m): begin local x P(fromnum) 选择空格x 将消息m放入空格x中 置格x的标志为满 V(mesnum) end
1. 消息传递系统
进程间的数据交换以消息为单位,程 序员利用系统的通信原语实现通信。操作 系统隐藏了通信的实现细节,简化了通信 程序编制的复杂性。因而得到广泛应用。
3.7.2 消息传递系统 消息传递系统因其实现方式不同分为: 直接通信方式 间接通信方式
3.7.2 消息传递系统 直接通信方式 发送进程直接把消息发送给接收者,并将它 挂在接收进程的消息缓冲队列上。接收进程从消 息缓冲队列中取得消息。
4. 产生死锁的必要条件
互斥条件:涉及的资源是非共享的,不能同时 被两个进程以上的进程使用 不剥夺条件:不能强行剥夺进程拥有的资源 部分分配条件:进程在等待一新资源时继续占 有已分配的资源 环路条件:存在一种进程的循环链,链中的每 一个进程已获得的资源同时被链中的下一个进程 所请求
3.8.2 死锁的排除方法
3.7.1进程的通信方式
1. 主从式通信
主从式通信系统的主要特点是: ① 主进程可自由地使用从进程的资源或 数据; ② 从进程的动作受主进程的控制; ③ 主进程和从进程的关系是固定的。 主从式通信系统的典型例子是终端控制进程 和终端进程。
3.7.1进程的通信方式
2. 会话式通信
会话式通信系统的特点: ① 使用进程在使用服务进程所提供的服务之前, 必须得到服务进程的许可; ② 服务进程根据使用进程的要求提供服务,但 对所提供服务的控制由服务进程自身完成。 ③ 使用进程和服务进程在通信时有固定连接关 系。
3.破坏部分分配条件 缺点: (1) 在许多情况下,一个进程在执行之前不可能 提出它所需要的全部资源。 (2) 无论所需资源何时用到,一个进程只有在所 有要求资源都得到满足之后才开始执行。 (3) 对于那些不经常使用的资源,进程在生存过 程期间一直占用它们是一种极大的浪费。 (4) 降低了进程的并发性。
死锁的预ቤተ መጻሕፍቲ ባይዱ策略: 1.在系统设计时确定资源分配算法,保
证不发生死锁
2.具体的做法是破坏产生死锁的四个必 要条件之一
1. 破坏资源的互斥条件
例如允许进程同时访问某些资源等
不能解决那些不允许被同时访问的资源 时所带来的死锁问题,比如打印机等
2.破坏不可剥夺条件 一个已拥有资源的进程,若它再提出新资源要 求而不能立即得到满足时,它必须释放已经拥有 的所有资源。以后需要时再重新申请。
优点:同前两法相比,其资源利用率和系统吞 吐量有较明显的改善 缺点:进程实际需要资源的顺序不一定与资源 的编号一致,因此仍会造成资源浪费;对资 源的分类编号也消耗一定的系统开销,破坏 设备无关性。
3.8.2.1 死锁预防 结论: 从上面所学习的来看,显然,死锁预防所 采用的策略,都施加了较强的限制条件. 不实用!
2. 消息缓冲通信
1)消息缓冲通信的原理:
发送进程在发送消息前,先在自己的内 存空间设置一个发送区,把欲发送消息填 入表中,然后再用发送原语将其发送出 接收进程则在接收消息之前,在自己的 内存空间内设置相应的接收区,然后用接 收原语接收消息
2. 消息缓冲通信
2)使用的缓冲区必须满足的条件:
在发送进程把消息写入缓冲区和把缓 冲区挂入消息队列时,应禁止其他进程 对该缓冲区消息队列的访问 当缓冲区中无消息存在时,接收进程 不能接收到任何消息
2. 消息缓冲通信
3) 消息缓冲通信的实现 主要还是采用P,V操作实现
设公用信号量mutex 为控制对缓冲区访问 的互斥信号量,其初值为1 。设SM为接收进程 的私用信号量,表示等待接收的消息个数,其 初值为0 。设发送进程调用过程send(m)将消息 m 送往缓冲区,接收进程调用过程Receive(m) 将消息m从缓冲区读往自己的数据区
相关文档
最新文档