第2讲 处理机管理-3进程通信

《第2讲 处理机管理-3进程通信》由会员分享,可在线阅读,更多相关《第2讲 处理机管理-3进程通信(37页珍藏版)》请在文档大全上搜索。
1、2015年操作系统操作系统Operating System操作系统22.1 进程及其描述2.2 进程控制2.3 进程同步2.4 进程通信2.5 线程及其实现2.6 处理机调度2.7 死锁习题第第2 2讲讲 处理机管理处理机管理操作系统32.4 进程通信 进程通信是指进程之间的信息交换。 由于进程的互斥与同步,需要在进程间交换一定的信息,故不少学者将它们也归为进程通信,但只能把它们称为低级进程通信。 我们以信号量机制为例来说明,它们之所以低级的原因在于: 效率低,生产者每次只能向缓冲池投放一个产品(消息),消费者每次只能从缓冲区中取得一个消息; 通信对用户不透明,OS只为进程之间的通信提供了共享
2、存储器。 操作系统4进程通信的要求(1) 使用方便 隐藏了实现进程通信的具体细节,向用户提供了一组用于实现高级通信的命令(原语),用户可方便地直接利用它实现进程之间的通信。或者说,通信过程对用户是透明的。这样就大大减少了通信程序编制上的复杂性。(2) 高效地传送大量数据 用户可直接利用高级通信命令(原语)高效地传送大量的数据。在进程之间要传送大量数据时,应当利用OS提供的高级通信工具,该工具最主要的特点是:操作系统52.6.1进程通信的类型1. 共享存储器系统(Shared-Memory System)2. 管道(pipe)通信系统3. 消息传递系统(Message passing syste
3、m)4. 客户机-服务器系统(Client-Server system)操作系统61. 共享存储器系统(Shared-Memory System) 在共享存储器系统中,相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。 据此,又可把它们分成以下两种类型:(1) 基于共享数据结构共享数据结构的通信方式。(2) 基于共享存储区共享存储区的通信方式。操作系统72. 管道(pipe)通信系统 所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。 向管道(共享文件)提供输入的发送进程(即写进程)以字符流形式将大量的数据送入管道;
4、 而接受管道输出的接收进程(即读进程)则从管道中接收(读)数据。 由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信。这种方式首创于UNIX系统,由于它能有效地传送大量数据,因而又被引入到许多其它操作系统中。操作系统8例如 我们可以使用管道符|来连接进程。 在Linux系统中,由管道连接起来的进程可以自动运行,就如同在他们有一个数据流一样。 在下面的这个例子中,我们要使用sort命令来排序ps的输出。操作系统9不使用管道VS 使用管道$ ps psout.txt$ sort psout.txt pssort.out$ ps | sort pssort.out操作系统10要在屏幕上看到
5、他们,要使用第三个进程$ ps | sort | more操作系统11管道机制必须提供三方面的协调即当一个进程正在对pipe执行读/写操作时,其它(另一)进程必须等待。 互斥指当写(输入)进程把一定数量(如4KB)的数据写入pipe,便去睡眠等待,直到读(输出)进程取走数据后再把它唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后才将之唤醒。 同步只有确定了对方已存在时才能进行通信。 确定对方是否存在操作系统12 在该机制中,进程不必借助任何共享存储区或数据结构,而是以格式化的消息 (message)为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命通信命令
6、令(原语原语),在进程间进行消息传递,完成进程间的数据交换。操作系统13两种消息传递通信方式(1) 直接通信方式 发送进程利用OS提供的发送原语把消息直接发送给目标进程(2) 间接通信方式 发送进程把消息发送至共享中间实体(邮箱),接收进程从其中接收。基于消息传递系统的通信方式属于高级通信方式,因其实现方式的不同,可进一步分成两类:操作系统144. 客户机-服务器系统(Client-Server system)操作系统151) 套接字(Socket) 套接字起源于20世纪70年代加州大学伯克利分校版本的UNIX(即BSD Unix),是UNIX 操作系统下的网络通信接口。 一开始,套接字被设计
7、用在同一台主机上多个应用程序之间的通信(即进程间的通信),主要是为了解决多对进程同时通信时端口和物理线路的多路复用问题。 随着计算机网络技术的发展以及UNIX 操作系统的广泛使用,套接字已逐渐成为最流行的网络通信程序接口之一。操作系统16文件型 通信进程都运行在同一台机器的环境中,基于本地文件系统支持,一个套接字关联到一个特殊的文件,通信双方通过对这个特殊文件的读写实现通信 类似于管道操作系统17网络型 非对称方式,发送者需要提供接收者命名 通信双方进程可运行不同主机的网络环境中,分配一对套接字(接收进程+发送进程)操作系统182) 远程过程调用和远程方法调用 远程过程(函数)调用RPC(Re
8、mote Procedure Call),是一个通信协议,用于通过网络连接的系统。 该协议允许运行于一台主机(本地)系统上的进程调用另一台主机(远程)系统上的进程,而对程序员表现为常规的过程调用,无需额外地为此编程。 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称做远程方法调用。操作系统19RPC过程(1) 本地过程调用者以一般方式调用远程过程在本地关联的客户存根,传递相应的参数,然后将控制权转移给客户存根;(2) 客户存根执行,完成包括过程名和调用参数等信息的消息建立,将控制权转移给本地客户进程;(3) 本地客户进程完成与服务器的消息传递,将消息发送到远程服务器进程;(4) 远程服务