进程通信
标签: 操作系统
学习人数: 9.7k

进程通信是指进程之间的信息交换。由于进程的互斥与同步,需要在进程间交换一定的信息,故不少学者将它们也归为进程通信,但只能把它们称为低级进程通信。以信号量机制为例来说明,它们之所以低级的原因在于: ①效率低,生产者每次只能向缓冲池投放一个产品(消息),消费者每次只能从缓冲区中取得一个消息; ②通信对用户不透明,OS 只为进程之间的通信提供了共享存储器。

1.进程通信的类型

在共享存储器系统中,相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。据此,又可把它们分成以下两种类型

(1)基于共享数据结构的通信方式:在这种通信方式中,要求诸进程公用某些数据结构,借以实现诸进程间的信息交换。操作系统仅提供共享存储器,由程序员负责对公用数据结构的设置及对进程间同步的处理。这种通信方式仅适用于传递相对少量的数据,通信效率低下,属于低级通信。

(2)基于共享存储区的通信方式:为了传输大量数据,在内存中划出了一块共享存储区域,诸进程可通过对该共享区的读或写交换信息,实现通信,数据的形式和位置甚至访问控制都是由进程负责,而不是OS。这种通信方式属于高级通信。

在该机制中,进程不必借助任何共享存储区或数据结构,而是以格式化的消息(message)为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换。

基于消息传递系统的通信方式属于高级通信方式,因其实现方式的不同,可进一步分成两类:

(1)直接通信方式:是指发送进程利用OS所提供的发送原语,直接把消息发送给目标进程。

(2)间接通信方式:是指发送和接收进程,都通过共享中间实体(称为信箱)的方式进行消息的发送和接收,完成进程间的通信。这种通信方式又称信箱通信方式。该通信方式广泛应用于计算机网络中,相应的通信系统称为电子邮件系统。

所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。向管道(共享文件)提供输入的发送进程(即写进程)以字符流形式将大量的数据送入管道;而接受管道输出的接收进程(即读进程)则从管道中接收(读)数据。由于发送进程和接收进程是利用管道进行通信的,故又称为管道通信。为了协调双方的通信,管道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在。

登录查看完整内容


课后作业


登录后开始许愿

1 条上岸许愿
jhfjy
2021年4月4日 15:42

加油

赞(0)