操作系统 进程通信ppt课件.pptx

上传人:小飞机 文档编号:1419731 上传时间:2022-11-22 格式:PPTX 页数:24 大小:181.40KB
返回 下载 相关 举报
操作系统 进程通信ppt课件.pptx_第1页
第1页 / 共24页
操作系统 进程通信ppt课件.pptx_第2页
第2页 / 共24页
操作系统 进程通信ppt课件.pptx_第3页
第3页 / 共24页
操作系统 进程通信ppt课件.pptx_第4页
第4页 / 共24页
操作系统 进程通信ppt课件.pptx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《操作系统 进程通信ppt课件.pptx》由会员分享,可在线阅读,更多相关《操作系统 进程通信ppt课件.pptx(24页珍藏版)》请在三一办公上搜索。

1、2.6 进 程 通 信进程通信是指进程之间的信息交换。由于进程的互斥与同步,需要在进程间交换一定的信息,故不少学者将它们也归为进程通信,但只能把它们称为低级进程通信。我们以信号量机制为例来说明,它们之所以低级的原因在于: 效率低,生产者每次只能向缓冲池投放一个产品(消息),消费者每次只能从缓冲区中取得一个消息; 通信对用户不透明,OS只为进程之间的通信提供了共享存储器。,在进程之间要传送大量数据时,应当利用OS提供的高级通信工具,该工具最主要的特点是:(1) 使用方便。OS隐藏了实现进程通信的具体细节,向用户提供了一组用于实现高级通信的命令(原语),用户可方便地直接利用它实现进程之间的通信。或

2、者说,通信过程对用户是透明的。这样就大大减少了通信程序编制上的复杂性。(2) 高效地传送大量数据。用户可直接利用高级通信命令(原语)高效地传送大量的数据。,2.6.1进程通信的类型1. 共享存储器系统(Shared-Memory System)在共享存储器系统中,相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。据此,又可把它们分成以下两种类型:(1) 基于共享数据结构的通信方式。(2) 基于共享存储区的通信方式。,2. 管道(pipe)通信系统所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。向管道(共享文件)提供

3、输入的发送进程(即写进程)以字符流形式将大量的数据送入管道;而接受管道输出的接收进程(即读进程)则从管道中接收(读)数据。由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信。这种方式首创于UNIX系统,由于它能有效地传送大量数据,因而又被引入到许多其它操作系统中。,为了协调双方的通信,管道机制必须提供以下三方面的协调能力: 互斥,即当一个进程正在对pipe执行读/写操作时,其它(另一)进程必须等待。 同步,指当写(输入)进程把一定数量(如4KB)的数据写入pipe,便去睡眠等待,直到读(输出)进程取走数据后再把它唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后

4、才将之唤醒。 确定对方是否存在,只有确定了对方已存在时才能进行通信。,3. 消息传递系统(Message passing system)在该机制中,进程不必借助任何共享存储区或数据结构,而是以格式化的消息 (message)为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换。基于消息传递系统的通信方式属于高级通信方式,因其实现方式的不同,可进一步分成两类:(1) 直接通信方式(2) 间接通信方式,4. 客户机-服务器系统(Client-Server system)1) 套接字(Socket)套接字起源于20世纪70年代加州大学

5、伯克利分校版本的UNIX(即BSD Unix),是UNIX 操作系统下的网络通信接口。一开始,套接字被设计用在同一台主机上多个应用程序之间的通信(即进程间的通信),主要是为了解决多对进程同时通信时端口和物理线路的多路复用问题。随着计算机网络技术的发展以及UNIX 操作系统的广泛使用,套接字已逐渐成为最流行的网络通信程序接口之一。,2) 远程过程调用和远程方法调用远程过程(函数)调用RPC(Remote Procedure Call),是一个通信协议,用于通过网络连接的系统。该协议允许运行于一台主机(本地)系统上的进程调用另一台主机(远程)系统上的进程,而对程序员表现为常规的过程调用,无需额外地

6、为此编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称做远程方法调用。,实际上,远程过程调用的主要步骤是:(1) 本地过程调用者以一般方式调用远程过程在本地关联的客户存根,传递相应的参数,然后将控制权转移给客户存根;(2) 客户存根执行,完成包括过程名和调用参数等信息的消息建立,将控制权转移给本地客户进程;(3) 本地客户进程完成与服务器的消息传递,将消息发送到远程服务器进程;(4) 远程服务器进程接收消息后转入执行,并根据其中的远程过程名找到对应的服务器存根,将消息转给该存根;,(5) 该服务器存根接到消息后,由阻塞状态转入执行状态,拆开消息从中取出过程调用的参数,然后以一般方式调

7、用服务器上关联的过程;(6) 在服务器端的远程过程运行完毕后,将结果返回给与之关联的服务器存根;(7) 该服务器存根获得控制权运行,将结果打包为消息,并将控制权转移给远程服务器进程;(8) 远程服务器进程将消息发送回客户端;(9) 本地客户进程接收到消息后,根据其中的过程名将消息存入关联的客户存根,再将控制权转移给客户存根;(10) 客户存根从消息中取出结果,返回给本地调用者进程,并完成控制权的转移。,2.6.2消息传递通信的实现方式1. 直接消息传递系统在直接消息传递系统中采用直接通信方式,即发送进程利用OS所提供的发送命令(原语),直接把消息发送给目标进程。,1) 直接通信原语(1) 对称

8、寻址方式。(2) 非对称寻址方式。,2) 消息的格式在消息传递系统中所传递的消息,必须具有一定的消息格式。在单机系统环境中,由于发送进程和接收进程处于同一台机器中,有着相同的环境,所以消息的格式比较简单,可采用比较短的定长消息格式,以减少对消息的处理和存储开销。该方式可用于办公自动化系统中,为用户提供快速的便笺式通信。但这种方式对于需要发送较长消息的用户是不方便的。为此,可采用变长的消息格式,即进程所发送消息的长度是可变的。对于变长消息,系统无论在处理方面还是存储方面,都可能会付出更多的开销,但其优点在于方便了用户。,3) 进程的同步方式在进程之间进行通信时,同样需要有进程同步机制,以使诸进程

9、间能协调通信。不论是发送进程还是接收进程,在完成消息的发送或接收后,都存在两种可能性,即进程或者继续发送(或接收)或者阻塞。,4) 通信链路为使在发送进程和接收进程之间能进行通信,必须在两者之间建立一条通信链路。有两种方式建立通信链路。第一种方式是:由发送进程在通信之前用显式的“建立连接”命令(原语)请求系统为之建立一条通信链路,在链路使用完后拆除链路。,2. 信箱通信1) 信箱的结构信箱定义为一种数据结构。在逻辑上,可以将其分为两个部分:(1) 信箱头(2) 信箱体,图2-16 双向信箱示意图,2) 信箱通信原语系统为邮箱通信提供了若干条原语,分别用于:(1) 邮箱的创建和撤消。(2) 消息

10、的发送和接收。,3) 信箱的类型邮箱可由操作系统创建,也可由用户进程创建,创建者是邮箱的拥有者。据此,可把邮箱分为以下三类:(1) 私用邮箱。(2) 公用邮箱。(3) 共享邮箱。,2.6.3直接消息传递系统实例消息缓冲队列通信机制首先由美国的Hansan提出,并在RC 4000系统上实现,后来被广泛应用于本地进程之间的通信中。在这种通信机制中,发送进程利用Send原语将消息直接发送给接收进程;接收进程则利用Receive原语接收消息。,1. 消息缓冲队列通信机制中的数据结构(1) 消息缓冲区。 (2) PCB中有关通信的数据项。,2. 发送原语发送进程在利用发送原语发送消息之前,应先在自己的内

11、存空间设置一发送区a,如图2-17所示,把待发送的消息正文、发送进程标识符、消息长度等信息填入其中,然后调用发送原语,把消息发送给目标(接收)进程。发送原语首先根据发送区a中所设置的消息长度a.size来申请一缓冲区i,接着,把发送区a中的信息复制到缓冲区i中。为了能将i挂在接收进程的消息队列mq上,应先获得接收进程的内部标识符j,然后将i挂在j.mq上。由于该队列属于临界资源,故在执行insert操作的前后都要执行wait和signal操作。,图2-17消息缓冲通信,3. 接收原语接收进程调用接收原语receive(b),从自己的消息缓冲队列mq中摘下第一个消息缓冲区i,并将其中的数据复制到以b为首址的指定消息接收区内。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号