半期复习——第二章:进程管理(2.6)

发布时间 2023-04-16 19:37:53作者: 一只朋克小狗

2.6 进程通信

一、进程通信的类型(3)

    1.共享存储器系统

        ①基于共享存储区的通信方式:为了传输大量数据,在存储器中划出了一块共享存储区,诸进程可通过对共享存储区中数据的读或写来实现通信。这种通信方式属于高级通信

        ②基于共享数据结构的通信方式:在这种通信方式中,要求诸进程公用某些数据结构,借以实现诸进程间的信息交换。如在生产者—消费者问题中,就是用有界缓冲区这种数据结构来实现通信的。这里,公用数据结构的设置及对进程间同步的处理,都是程序员的职责。这无疑增加了程序员的负担,而操作系统却只须提供共享存储器。因此,这种通信方式是低效的,只适于传递相对少量的数据。 

    2.消息传递系统

        是目前的主要通信方式,不借助任何共享存储区或数据结构。

        信息单位:消息(报文) 实现:一组通信命令(原语),具有透明性。 

    3.管道通信

        “管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件。

        管道机制必须提供以下三方面的协调能力:    

        ①互斥使用管道:即当一个进程正在对pipe执行读/写操作时,其它(另一)进程必须等待。  

        ②同步读写关系:指当写进程把一定数量的数据写入pipe,便去睡眠等待,直到读进程取走数据后,再把它唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后,才将之唤醒。    

        ③确定对方是否存在:只有确定了对方已存在时,才能进行通信。  

二、消息传递通信的实现方法(2)

    1.直接通信方式   

       发送进程利用OS所提供的发送命令,直接把消息发送给目标进程。

    2.间接通信方式      

      指进程之间利用信箱的通信方式。

      发送进程发送给目标进程的消息存放信箱;接收进程则从该信箱中取出。可以实现非实时通信。