计算机操作系统(第四版)第二章进程通信

合集下载

计算机操作系统课件(第四版)第二章资料

计算机操作系统课件(第四版)第二章资料

索引方式

系统根据所有进程的状态建立相应的索引表 就绪索引表、阻塞索引表等,索引表在内存的首地址记 录在内存的一些专用单元中。
PCB1
PCB2 PCB3 PCB4
执行指针
PCB1 4 PCB2 3 PCB3 0 PCB4 8 PCB5
就绪队列指针
阻塞队列指针
PCB5
PCB6 PCB7 PCB8
进程控制信息: 程序和数据的地址 同步和通信机制 资源清单 链接指针

PCB数目

4、进程控制块的组织方式
一个系统中的PCB数目可为数十个、数百个甚至数千个
线性方式

把所有的PCB都组织在一张线性表中,将表的首地址放 在内存的专用区中。
链接方式

把具有同一状态的PCB,用其链接字链接成一个队列 就绪队列、若干个阻塞队列、空队列
进程的结构图示:
进程控制块
PCB 动态特征的集中反映
程序段
描述要完成的功能
数据段
操作对象及工作区
进程的其他定义:
进程是一个具有一定独立功能的程序在一个 数据集合上的一次动态执行过程。 进程是并发程序的一次执行过程。是系统进 行资源分配和调度的独立单位。 进程是可以和别的计算并发执行的计算。
2.2 进程的描述
进程的定义和特征 进程的基本状态和转换 挂起操作和状态转换 进程管理中的数据结构
2.2.1、进程的定义和特征 进程的定义 进程的特征
进程的定义
进程: 进程是进程实体的运行过程,是系统进行资 源分配和调度的一个独立单位。 进程实体=程序段+相关的数据段+PCB Linux 进 程 组 成
进程的挂起状态
活动 就绪
调度 释放 I/O请求

计算机操作系统课件(第四版)第二章

计算机操作系统课件(第四版)第二章
PI一个进程PJ可以向P其K 父进程申PL请撤消自P己M ;也可PN以因 父进程的被撤销而被同时撤消。
3、进程阻塞(Block())
引起阻塞的事件
请求系统服务、启动某种操作、数据尚未到 达、无新工作可做
进程阻塞的过程
发现上述事件,调用阻塞原语把自己阻塞 停止进程的执行,修改PCB中的状态信息,
进程的特征
动态性:“它由创建而产生,由调度而执行,由撤销而 消亡”。进程具有动态的地址空间(数量和内容),地 址空间上包括: 代码(指令执行和CPU状态的改变) 数据(变量的生成和赋值) 系统控制信息(进程控制块PCB的生成和删除) 独立性:进程是一个能独立运行、独立分配资源和独立 调度的基本单位。各进程的地址空间相互独立。 并发性:引入进程的目的正是为了使其程序能和其他进 程的程序并发执行; 异步性: 进程按各自独立的、不可预知的速度向前推进 结构性:进程由程序段、数据段及PCB三部分组成,在 Linux中称为“进程映像”
互斥现象
火车到站的调度 火车1 火车2 火车3 …
站台轨道
例1:两个同学做抢椅子的游戏。
同学甲
…… if 有空椅子 then 坐下 ……
同学乙
…… if 有空椅子 then 搬走 ……
例2:民航售票系统
进程控制信息: 程序和数据的地址 同步和通信机制 资源清单 链接指针
4、进程控制块的组织方式
PCB数目
一个系统中的PCB数目可为数十个、数百个甚至数千个
线性方式
把所有的PCB都组织在一张线性表中,将表的首地址放 在内存的专用区中。
链接方式
把具有同一状态的PCB,用其链接字链接成一个队列 就绪队列、若干个阻塞队列、空队列
引消起创建进程程+序的事PA件

操作系统ch2 进程_同步与通信

操作系统ch2 进程_同步与通信

为什么需要进程同步机制
第二章 进程-进程的同步与通信
2.4 进程同步的基本概念
2.4.1 临界资源
为了说明什么是临界资源,我们先看一个例子,回忆第二章 P1 、P2两个进程并发执行的例子,counter是全局变量 P1 P2
{… …
counter=counter+1 …… }
{… …
counter=counter+1 …… }
如何实现进程同步
第二章 进程-进程的同步与通信
2.5 信号量机制
2.5.2 记录型信号量机制
六、记录型信号量机制的优点 不存在忙等,采取“让权等待”的策略
/include/asm-i386/semaphore.h

struct semaphore { atomic_t count; int sleepers; wait_queue_head_t wait; };
如何实现进程同步
第二章 进程-进程的同步与通信
2.5 信号量机制
2.5.1 整型信号量机制 二、利用整型信号量实现互斥 想法:为必须互斥访问的CS定义一个互斥信号 量 mutex , 初 始 值 为 1 , 然 后 将 CS 放 入 wait(mutex)和signal(mutex)之间,当CS可访 问时,wait(mutex)才能正常结束使进程进入 CS。
如何实现进程同步
第二章 进程-进程的同步与通信
2.5 信号量机制
2.5.1 整型信号量机制
三、利用信号量来描述前趋关系---例2 var a,b,c,d,e,f,g:semaphore:=0,0,0,0,0,0; begin prabegin begin s1;signal(a);signal(b);end; begin wait(a);s2;signal(c);signal(d);end; begin wait(b);s3;signal(g);end; begin wait(c);s4;signal(e);end; begin wait(d);s5;signal(f);end; begin wait(e); wait(f); wait(g);s6;end. parend end.

计算机操作系统(第四版)第2章 进程的描述与控制1

计算机操作系统(第四版)第2章  进程的描述与控制1

14
进程:
资源拥有者,动态的。 (目标:协同完成同一个任务 (目标:协同完成同 个任务!)
15
线 线程
一般不拥有资源,是受派遣者 (只负责 从这条线过的 必须缴费) (只负责:从这条线过的,必须缴费)
16
进程的基本概念
程序并发执行时,必会共享系统资源。进程,是 描述程序执行时的动态特征
P32
2.1前趋图程序执行 2.2 进程的描述

N=N+1 N N 1 n+1 1 print(N) n+1 N=0 N=0 0
(2)N:=N+1在print(N)和N=0之后,得到的N值分别为: N:=N+1在print(N)和N=0之后 得到的N值分别为:

print(N) n N 0 N=0 0 N=N+11
I3 C3 P3
9个∆t
t0Δt t1
t2
t3
t4
t5
t6
t7
t8
t9
t10
t
21
顺序执行与并发执行

任意程序都存在着 Ii→Ci→Pi 这样的前驱关系,因 而对一个用户程序的输入 而对 个用户程序的输入、计算和打印这三个操 计算和打印这三个操 作,必须顺序执行。 但在多道环境下并不存在或并不要求Pi→Ii+1 关系, 即Ii 、 Cj 和 Pk(i≠j≠k)之间并不存在前驱关系。
17
程序的顺序执行及其特征 1. . 程序的顺序执行

程序的执行:顺序执行和并发执行; 一个应用程序分成若干个程序段,各程序段之间,必 须按照某种先后次序顺序执行。 用结点(Node)代表各程序段的操作(I代表输入操作,C代 表计算操作,P代表打印操作),用箭头指示操作的先后 次序; 次序

操作系统第二章进程同步与通信(第二部分)2016-9

操作系统第二章进程同步与通信(第二部分)2016-9

(根据同步机制的原则,分析P、V操作的特点,)
考虑: 如何控制互斥地使用临界资源? 如何控制进程并发执行的时序? 实现同步机制基本思想是:加锁、解锁
13
§2.5 信号量机制及P、V操作 (五) 三。信号量的应用 1。实现进程互斥 — 以两个进程并发执行为例 设 mutex —公共互斥信号量 初值:mutex.Value = 1 利用P、V操作实现互斥的模型 进程P1 进程P2 . . . . . . P(mutex); 值0 ① 进入P1临界区; V(mutex); 值0 ③ . . . P(mutex); 值-1② 进入P2临界区; V(mutex); . . .
进程P1 进程P2
. . . P(mutex); 值0 ① 进入P1临界区; V(mutex); 值0 ③ . . . 设先执行进程P1
. . . P(mutex); 值-1 ② 进入P2临界区; V(mutex); . . .
15
§2.5 信号量机制及P、V操作 (七) 三、信号量的应用 1、实现进程互斥 设 mutex —公共互斥信号量 初值: mutex.Value = 1
TS指令的形式: function s(var lock:boolean):boolean; begin ts:=lock; lock:=true; end;
7
§2.4 进程同步的概念(六)
以两进程P1、P2并发执行为例,如果P1先执行:
p1 p2
调用TS指令 Y
TS TS=true =true
§2.5 信号量机制及P、V操作 (九)
2。实现进程同步 实例: 打印进程与计算进程的同步问题
计算进程 计算 打印进程
SB
缓冲区
SA

《现代操作系统第四版》 第二章 答案

《现代操作系统第四版》 第二章 答案

现代操作系统第二章进程与线程习题1. 图2-2中给出了三个进程状态,在理论上,三个状态可以有六种转换,每个状态两个。

但是,图中只给出了四种转换。

有没有可能发生其他两种转换中的一个或两个?A:从阻塞到运行的转换是可以想象的。

假设某个进程在I/O上阻塞,而且I/O 结束,如果此时CPU空闲,该进程就可以从阻塞态直接转到运行态。

而另外一种转换(从阻塞态到就绪态)是不可能的。

一个就绪进程是不可能做任何会产生阻塞的I/O或者别的什么事情。

只有运行的进程才能被阻塞。

2.假设要设计一种先进的计算机体系结构,它使用硬件而不是中断来完成进程切换。

CPU需要哪些信息?请描述用硬件完成进程切换的工作过程。

A:应该有一个寄存器包含当前进程表项的指针。

当I/O结束时,CPU将把当前的机器状态存入到当前进程表项中。

然后,将转到中断设备的中断向量,读取另一个过程表项的指针(服务例程),然后,就可以启动这个进程了。

3.当代计算机中,为什么中断处理程序至少有一部分是用汇编语言编写的?A:通常,高级语言不允许访问CPU硬件,而这种访问是必需的。

例如,中断处理程序可能需要禁用和启用某个特定设备的中断服务,或者处理进程堆栈区的数据。

另外,中断服务例程需要尽快地执行。

(补充)主要是出于效率方面的考量。

中断处理程序需要在尽量短的时间内完成所需的必要处理,尽量减少对线程/程序流造成的影响,因此大部分情况下用汇编直接编写,跳过了通用编译过程中冗余的适配部分。

4.中断或系统调用把控制转给操作系统时,为什么通常会用到与被中断进程的栈分离的内核栈?A:内核使用单独的堆栈有若干的原因。

其中两个原因如下:首先,不希望操作系统崩溃,由于某些用户程序不允许足够的堆栈空间。

第二,如果内核将数据保留在用户空间,然后从系统调用返回,那么恶意的用户可能使用这些数据找出某些关于其它进程的信息。

5.一个计算机系统的内存有足够的空间容纳5个程序。

这些程序有一半的时间处于等待I/O的空闲状态。

操作系统-第2章(3) (第四版)

操作系统-第2章(3) (第四版)

原语Receive(P1,m1) 表示接收由P1发来的消息m1。 形式: 对称形式:一对一 非对称形式:多对一 (顾客/服务员) 如:提供打印服务的进程; Receive (id,message); 有缓冲(有界,无界),无缓冲;
第二章 进 程 管 理
2. 消息缓冲队列通信机制(直接通信)
消息缓冲通信:是一种直接通信方式,一种可直接以较高的效率传递 较多数据的信息交换方式,被广泛应用于本地进程之间的通信。 每当发送进程欲发送消息时,便形成一个消息缓冲区,其结构如下: typedef struct message buffer { int sender; 发送者进程标识符 int size; 消息长度 char *text; 消息正文 struct message_buffer *next 指向下一个消息缓冲区的指针 }; 消息缓冲区是内存中的一个区域,其中可以存放一条消息。 发送进程可以把消息填写到消息缓冲区中,并把该消息缓冲区插入到 接收进程的消息链上,以待接收进程进行加工处理。
线

进程的概念和结构是传统操作系统工作的基础。但是,随着计算机体 系结构从早期的单处理机结构发展到目前的多处理机结构,在多任务的环 境中,为了减少处理机的空转时间以及处理机调度切换时的时间和空间开 销,提高系统的并行能力,因此产生了更小的控制单位:线程。
第二章 进 程 管 理 补充:
多线程的概念首先是在多处理机的并行处理中提出来的。传统的多处 理机由若干台处理机组成,每台处理机每次运行单个现场,即每台处理机 有一个有限硬件资源的单一控制线路。在这样的多处理机系统中,在进行 远程访问期间会出现等待现象,处理机在这段时间间隔内处于空闲状态。 为了提高处理机的并行操作能力,提出多线程的概念。在每台处理机上建 立多个运行现场,这样每台处理机的有多个控制线路,为解决处理机长时 间等待的问题提供了一种有效的机制。一个控制线路就是一个线程,线程 可以用一个现场表示,现场由程序计数器(PC)、寄存器组和所要求的现 场状态状态字组成。

计算机操作系统课件02-5进程通信

计算机操作系统课件02-5进程通信

2.5.4 消息缓冲队列通信机制
1 .数据结构 1) 消息缓冲区 在消息缓冲队列通信中,主要的数据结构是消息缓冲区。
type message buffer=record sender ;发送者进程标识符 size ; 消息长度 text ; 消息正文 next ; 指向下一个消息缓冲区的指针
end
这两种消息格式各有其优缺点,故在很多系统(包括计算机网 络)中,是同时都用的。
3.进程同步方式
在进程之间进行通信时,同样需要有进程同步机制,以使诸进 程间能协调通信。不论是发送进程,还是接收进程,在完成消 息的发送或接收后,都存在两种可能性,即进程或者继续发送 (接收),或者阻塞。由此,我们可得到以下三种情况:
程B同时向进程A发送消息。 根据通信链路容量的不同而把链路分成两类: (1) 无容量通信链路,在这种通信链路上没有缓冲区,因而
不能暂存任何消息; (2) 有容量通信链路,指在通信链路中设置了缓冲区,因而
能暂存消息。缓冲区数目愈多,通信链路的容量愈大。
2.消息格式
在单机系统环境中,由于发送进程和接收进程处于同一台机器 中,有着相同的环境,故其消息格式比较简单;
Receive (id,message);
利用直接通信原语来解决 生产者—消费者问题
当生产者生产出一个产品(消息)后,便用Send原语将消息发 送给消费者进程;而消费者进程则利用Receive原语来得到 一个消息。
如果消息尚未生产出来,消费者必须等待,直至生产者进 程将消息发送过来。
……
repeat
消息正文则是发送进程实际上所发送的数据。
在某些OS中,消息采用比较短的定长消息格式: 减少了对消息的处理和存储开销。可用于办公自动化系统 中,为用户提供快速的便笺式通信; 但这对要发送较长消息的用户是不方便的。

计算机操作系统-汤小丹第4版复习讲义教程第2章进程

计算机操作系统-汤小丹第4版复习讲义教程第2章进程

对于进程的定义,从不同的角度可以有不同的定义,其 中较典型的定义有:
(1) 进程是程序的一次执行。 (2) 进程是一个程序及其数据在处理机上顺序执行时所 发生的活动。 (3) 进程是具有独立功能的程序在一个数据集合上运行 的过程,它是系统进行资源分配和调度的一个独立单位。
进程与程序的主要区别
1)程序是指令的有序集合,其本身没有任何运行的含 义,它是一个静态的概念。而进程是程序在处理机上 的一次执行过程,它是一个动态概念。
图2-6 进程的五种基本状态及转换
2.2.3 挂起操作和进程状态的转换 1. 挂起操作的引入:使正在执行的进程暂停执行; 引入挂起操作的原因,是基于系统和用户的如下需要: (1) 终端用户的需要。 (2) 父进程请求。 (3) 负荷调节的需要。 (4) 操作系统的需要。
与挂起原语Suspend相应的是激活原语Active
如图2-9所示,OS管理的这些数据结构一般分为以下四 类:内存表、设备表、文件表和用于进程管理的进程表,通 常进程表又被称为进程控制块PCB。
图2-9 操作系统控制表的一般结构
2. 进程控制块PCB的作用 (1) 作为独立运行基本单位的标志。 (2) 能实现间断性运行方式。 (3) 提供进程管理所需要的信息。 (4) 提供进程调度所需要的信息。 (5) 实现与其它进程的同步与通信。
图2-5 进程的三种基本状态及其转换
3. 创建状态和终止状态 1) 创建状态 如前所述,进程是由创建而产生。创建一个进程是个很 复杂的过程,一般要通过多个步骤才能完成:如首先由进程 申请一个空白PCB,并向PCB中填写用于控制和管理进程的 信息;然后为该进程分配运行时所必须的资源;最后,把该 进程转入就绪状态并插入就绪队列之中。但如果进程所需的 资源尚不能得到满足,比如系统尚无足够的内存使进程无法 装入其中,此时创建工作尚未完成,进程不能被调度运行, 于是把此时进程所处的状态称为创建状态。

操作系统(第四版)第02-2章

操作系统(第四版)第02-2章
第二章之进程的同步与通信
2.3.1 进程同步的基本概念
举例: 例一:搬椅子和坐椅子 同学甲 同学乙 ……… ………. if 有空椅子 then 坐下 if 有空椅子 then 搬走 ……… ……….
例二:民航售票(X为某航班的票数)
终端 A
B 终端
主机
终端 C D 终端
例三:交通流量的统计(S表示通过的车
相互感知程度 相互不感知(完全 不了解其它进程 的存在) 间接感知(双方都 与第三方交互, 如共享资源) 直接感知(双方直 接交互,如通信)
交互关系
一个进程对其他 进程的影响
竞争(competition) 一个进程的操作 对其他进程的结 果无影响 通过共享进行协 作 通过通信进行协 作 一个进程的结果 依赖于从其他进 程获得的信息 一个进程的结果 依赖于从其他进 程获得的信息
软件解法 (4)
Peterson算法
进程P 进程Q ………… ………… pturn:=true; qturn:=true; turn:=2; turn:=1; while(qturn && turn=2)while(qturn && turn=1) 临界区 临界区 pturn:=false; qturn:=false; ………… …………
被广泛应用于单处理机和多处理机系统,以及 计算机网络中。
锁机制仅能表示“开”与“关”两种状态;上
锁程序中反复测试W状态,浪费了处理机的时 间;锁机制只能解决互斥,不能用于同步。信 号量同步机制能完满地解决上述问题。
信号量:semaphore
是一个数据结构 定义如下:
struc semaphore { int value;/*整型变量,仅由P、V操作修改 pointer_PCB queue; /*进程等待队列 }

计算机操作系统(第四版)---第二章进程的描述与控制课后习题答案

计算机操作系统(第四版)---第二章进程的描述与控制课后习题答案

计算机操作系统(第四版)---第⼆章进程的描述与控制课后习题答案1.什么是前趋图?为什么要引⼊前趋图?答:前趋图(Precedence Graph)是⼀个有向⽆循环图,记为DAG(DirectedAcyclicGraph),⽤于描述进程之间执⾏的前后关系。

2.画出下⾯四条语句的前趋图:S1:a=x+y; S2:b=z+1; S3:c=a – b;S4:w=c+1;3. 什么程序并发执⾏会产⽣间断性特征?答:程序在并发执⾏时,由于它们共享系统资源,为完成同⼀项任务需要相互合作,致使这些并发执⾏的进程之间,形成了相互制约关系,从⽽使得进程在执⾏期间出现间断性。

4.程序并发执⾏时为什么会失去封闭性和可再现性?答:程序并发执⾏时,多个程序共享系统中的各种资源,因⽽这些资源的状态由多个程序改变,致使程序运⾏失去了封闭性,也会导致其失去可再现性。

5.在操作系统中为什么要引⼊进程概念?它会产⽣什么样的影响?答:为了使程序在多道程序环境下能并发执⾏,并对并发执⾏的程序加以控制和描述,在操作系统中引⼊了进程概念。

影响: 使程序的并发执⾏得以实⾏。

6.试从动态性,并发性和独⽴性上⽐较进程和程序?答:(1)动态性是进程最基本的特性,表现为由创建⽽产⽣,由调度⽽执⾏,因得不到资源⽽暂停执⾏,由撤销⽽消亡。

进程有⼀定的⽣命期,⽽程序只是⼀组有序的指令集合,是静态实体。

(2)并发性是进程的重要特征,同时也是OS 的重要特征。

引⼊进程的⽬的正是为了使其程序能和其它进程的程序并发执⾏,⽽程序是不能并发执⾏的。

(3)独⽴性是指进程实体是⼀个能独⽴运⾏的基本单位,也是系统中独⽴获得资源和独⽴调度的基本单位。

对于未建⽴任何进程的程序,不能作为独⽴单位参加运⾏。

7.试说明PCB 的作⽤,为什么说PCB 是进程存在的惟⼀标志?答:PCB 是进程实体的⼀部分,是操作系统中最重要的记录型数据结构。

作⽤是使⼀个在多道程序环境下不能独⽴运⾏的程序,成为⼀个能独⽴运⾏的基本单位,成为能与其它进程并发执⾏的进程。

操作系统课件第四版第二章

操作系统课件第四版第二章

一、操作系统内核
通常将一些与硬件紧密相关的模块(如中断处理程 序等)、各种常用设备的驱动程序以及运行频率较高的
模块(如时钟管理、进程调度和许多模块所公用的一些
操作),都安排在紧靠硬件的软件层次中,将它们常驻
内存,即通常被称为的OS内核。
这样安排的目的在于:一是便于对这些软件进行保
护;二是可以提高OS的运行效率。
4. 一个状态转换的发生,是否一定导致另一个转换发 生,列出所有的可能。
增加两种基本状态
• 创建( 新new)状态
– OS 已完成为创建一进程所必要的工作 • 已构造了进程标识符 • 已创建了管理进程所需的表格 – 但还没有允许执行该进程 (尚未同意)
• 因为资源有限
• 终止(退出exit)状态
④ 阻塞—就绪
事件完成
【思考题】
1 .如果一个单处理机系统中有 n 个进程并发执行,在 不考虑程序状态过渡的情况下,执行的进程最多几 个?最少几个?就绪进程最多几个?最少几个?阻 塞进程最多几个?最少几个? 2. 某一时刻,处于执行状态的进程为 0 个,且当前处 理机空闲,处于就绪状态的进程有几个? 3. 有没有这样的状态转换,为什么? 阻塞 —> 执行; 就绪 —> 阻塞
二、进程的创建
1. 进程的层次结构
在 OS 中,允许一个进程创建另一个进程,通常 把创建进程的进程称为父进程,而把被创建的进程称 为子进程。子进程可继续创建更多的孙进程,由此便 形成了一个进程的层次结构。
值得注意的是:在 Windows 中不存在任何进程层
次结构的概念,所有进程都具有相同的地位。
2. 进程图
挂起
活动
调度
释放
挂起 事件 发生 活动

计算机操作系统(第四版)第二章进程的概念

计算机操作系统(第四版)第二章进程的概念

I1
4
C1
P1
I2
C2
P2

程序的顺序执行:一个具有独立功能的程序独占处理机直 至得到最终结果的过程称为程序的顺序执行。
S1: a:=x+y; S2: b:=a-5;//s2必须是s1执行后再执行 S3: c:=b+1;//s3必须是s2执行后再执行

S1 、S2、 S3必须按照顺序依次执行。
2.程序顺序执行时的特征
3
创建状态和终止状态 1.创建状态 是一个进程刚刚建立,但还没有将它 送入就绪队列时的状态 2.终止状态 当一个进程已经正常结束或异常结束, OS已经将它从就绪队列中移出,但还没 有将它撤消时的状态。
28
创建
许可
释放 中断或 时间片用完
终止 获得CPU 正在运行
万事具备, 只欠“东风” CPU I/O完成或 事件发生 欠缺某些条件
S1
S3
S2
S4
10
程序的并发执行及其特征 1.程序的并发执行
一组逻辑上相互独立的程序或程序段在执行过程中, 其执行时间在客观上相互重叠,即一个程序段的执行,尚 未结束,另一个程序段的执行已经开始的这种执行方式。 程序的并发执行可分为两种: (1) 在计算机系统支持并行操作时,如采用多道程序 设计技术,则内存中多道程序处于并发执行状态。
2.进程的三种基本状态
1)就绪(Ready)状态 当进程已经分配到除CPU以外的所有必要的资源后,只 要能获得处理机,就可以立即执行。这时的进程的状态称 为就绪状态。 2)执行状态(Running)(运行状态) 指进程已获得处理机,其程序正在执行。在单处理机 系统中,只能有一个进程处于执行状态。(在多处理机中, 可能有多个进程处于执行状态。)

第2章-3 进程通信

第2章-3 进程通信

13
PCB中有关通信的数据项
type struct PCB{ … struct message_buffer mq; //消息队列首指针 semaphore mutex; //消息队列互斥信号量 semaphore sm; //消息队列资源信号量 … }
14
消息传递通信的间接通信方式
间接通信方式(信箱通信)
发送进程发消息时不指定接收进程的名字,而是指定一个中间媒 介,即信箱。进程间通过信箱实现通信 发送原语:send(MB,Message),接收原语:receive(MB,Message) 信箱
‫ ٭‬存放信件的存储区域 ‫ ٭‬构成 信箱特征(头):信箱容量、信件格式、信箱名称等; 信箱体:若干格子,用来存放信件; ‫ ٭‬私用信箱 ‫ ٭‬共享信箱 ‫ ٭‬公用信箱
共享内存的实现
A进程虚空间 内存空间 B进程虚空间
A正文
B正文
A数据
共享区
B数据
A栈
B栈
5
管道通信(p68) 管道(pipe文件)通信(也称共享文件通信)
连接读写进程的一个特殊文件,允许进程按先进先出方 式传送数据,也能使进程同步执行操作。 实质:是一个共享文件,基本上可借助于文件系统的机制 实现,包括(管道)文件的创建、打开、关闭和读写。
10
消息缓冲实现图示
12
消息缓冲区结构 type struct message_buffer{ int sender; //发送者ID int size; //消息长度 char *text; //消息正文 struct message_buffer *next; //指向下一个消息缓冲区的指针 }
管道通信
发送进程以字符流形式把大量数据送入管道,接收进程 从管道中接收数据,所以叫管道通信。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高级通信:用户可以直接利用操作系统所提供的一组 通信命令,高效地传送大量数据的一种通信方式。
2
进程的同步与互斥是一种通信方式,一进 程可通过修改变量或信号量告知另一进程,它 是否可以继续执行下去。利用生产者——消费 者算法,生产者进程可以传送一批数据给消费 进程,或者说生产者通过缓冲区与消费者进行 通信,但P、V操作只能传递信号,信号本身不 包含任何数据,而进程不当还容易导致进程死 锁,因此,称这些同步机构为低级通信机构。
5
1 共享存储器系统
共享存储器系统:相互通信的进程通过共 享某些数据结构或存储区进行通信,因而可进 一步分为: 基于共享数据结构的通信方式;(低效,只 适于传递少量数据) 基于共享存储区的通信方式。为了传送大量 数据,在存储区中划出一块共享存储区,诸进 程可通过对共享存储区进行读或写数据实现通 信。
进程通信
1
进程通信:指进程间的信息交换。 按通信内容可以划分为2种 低级通信:进程之间控制信息的交换称为低级通信。 一般只传送一个或几个字节的信息,达到 控制进程执行速度的作用。(进程的同步和互斥)
信号量机制作为同步工具是卓有成效的,但作为通信工具则不够理想, (效率低。通信对用户不透明。)
15
管道 是指用于连接一个读进程和一个写进 程,以实现它们之间通信的一个共享文 件,又称pipe文件。 向管道(共享文件)提供输入的发 送进程(即写进程),以字符流形式将 大量的数据送入管道;而接收管道输出 的接收进程(即读进程),可从管道接 收数据,由于发送和接收都是利用管道 进行通信的,故称为管道通信。
1 在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时, 应禁止其他进程对缓冲区消息队列的访问。同理,接收进程 取消息时也禁止其他进程访问缓冲区消息队列 2 当缓冲区中没有信息存在时,接收进程不能接收到任何消息
9
发送进程 S
消息 PCB
接收进程 R
...... 消息链指针 ......
消息
M:
...... Send(R, M) ...... SIZE:消息长度 TEXT:消息正文
18
一对一关系:即可以为发送进程和接收进程建立 一条专用的通信链路; 多对一关系:允许提供服务的进程与多个用户进 程进行交互,也称客户/服务器交互; 一对多关系:允许一个发送进程与多个接收进程 交互,使发送进程用广播的形式,发送消息; 多对多关系:允许建立一个公用信箱,让多个进 程都能向信箱投递消息,也可取走属于自己的消 息。
17
1.信箱通信是一种( B )通信方式。 A. 直接通信 B. 间接通信 C. 低级通信 D. 信号量 2.在操作系统中,P、V操作是一种( D )。 A 、机器指令 B、系统调用命令 C、作业控制命令 D、低级进程通信原语 3.对进程的管理和控制使用( B )。 A、指令 B、原语 C、信号量 D、信箱
......
...... Receive(pid, N) ...... N: SIZE:消息长度 TEXT:消息正文 ......
消息
10
发送进程和接收进程
发送原语Send()和接收原语receive()
设公用信号量mutex,并置初值为1 设SM为接收进程的私用信号量,置初值为0
Send(m) Receive(m ) begin begin P(SM) 等待接的消息的个数 向系统申请一个消息缓冲区 P(mutex) 使用公用缓冲区 P(mutex) 使用公用缓冲区 摘下消息队列中的消息m 将发送区消息m送入新申请的消息缓冲区 将消息队列m从缓冲区复制到接收区 把消息缓冲区挂入接收进程的消息队列 释放缓冲区 V(mutex) 释放缓冲区 V(mutex) 释放公用缓冲区 V(SM) 向接收进程发送消息 end end
12
发送信件:如果指定的信箱未满,则将信件送入信 箱中由指针所指示的位置 , 并释放等待该信箱中 的信件的等待者;否则 ,发送信件者被置成等待 信箱状态。 信箱可由OS创建,也可由用户进程创建,创建 者是信箱的拥有者,据此可把信箱分为:私用信 箱,公用信箱,共享信箱。
13
在利用信箱通信时,在发送进程和接 收进程之间,存在着四种关系:
3
高级通信的三种方式:
1、共享存储器系统
2、消息传递系统
消息缓冲通信(直接通信)
信箱通信(间接通信) 3、管道通信---共享文件通信
4
进程通信的类型
高级通信机制类型 1 共享存储器系统(Shared-Memory System) 2 消息传递系统(Message passing System) 3 管道(pipe)通信系统
间接通信方式:
发送进程将消息发送到某个中间实体(一般 称为信箱)中,接收进程从中取得消息,所以称 8 为信箱通信方式,相应的系统称为电子邮件系统。
消息缓冲机制(直接通信)
发送进程
在自己的内存空间设置一个 把要发送的消息填入发送区 在自己的内存 空间设置一个
发送区
接收区
接收进程
公用缓冲区
两通信进程必须满足下列条件
16
为了协调双方的通信,管道通信机制必须 提供以下三方面的协调能力: 互斥。一个进程正在对pipe进行读/写操作时, 另一进程必须等待。 同步。当写(输入)进程把一定数量的数据写 入pipe后,便去睡眠等待,直到读(输出)进 程取走数据将其唤醒;当读进程读空pipe,也 应睡眠等待,直至写进程将数据写入管道,才 将其唤醒。 对方是否存在。只有确定对方已存在时,才能 进行管道通信,否则会造成因对方不存在而无 限期等待。
信箱通信(间接通信)
信(邮)箱 信箱是一种数据箱体。
间接通信方式中的发送和接收原语的形式如下: send(A,信件):把一个信件发送给信箱A; receive(A,信件):从信箱A接收一封信件; 发送和接收消息原语的功能如下: 接收信件:如果指定信箱中有信,则取出一封 信件,并释放等待信箱的等待者,否则,接收信件者 被置成等待信箱中信件的状态。
6
2 消息传递系统
在消息传递系统中,进程间的数据交换是以消 息(message,在计算机网络中又称报文)为单 位。程序员直接利用系统提供的一组通信命令 (原语)来实现通信。
因其实现方法的不同,又可分为:
直接通信方式(消息缓冲机制) 间接通信方式(信箱通信方式)
7
直接通信方式:
发送进程直接将消息发送给接收进程,并将 它挂在接收进程的消息缓冲队列上。接收进程从 消息缓冲队列中取得消息。故称为消息缓冲机制。 在直接通信方式下,企图发送或接收消息的每 个进程必须指出信件发给谁或从哪里接收消息, 可用send原语和receive原语来实现进程之间的 通信: send(P,消息):把一个消息发送给进程P。 receive(Q,消息):从进程Q接收一个消息。
14
3、管道通信
管道(pipe)通信由UNIX首创的一种借
助文件和文件系统形成的一种通信方式 。
由于其有效性,一些系统继 UNIX 之后相继引 入了管道技术,如 pc-dos ,管道通信将成为 进程通信的一种重要方式。 消息缓冲通信机构是以内存缓冲区为基 础。
管道是以文件系统为基础。
有名管道
无名管道
相关文档
最新文档