操作系统中同一父进程中的子进程之间如何交互?不同父进程中的子进程之间如何交互?父进程与子进程之间如何交互?
进程通信的类型
1. 共享存储器系统(Shared-Memory System)(全局变量)
(1)基于共享数据结构的通信方式。
(2)基于共享存储区的通信方式。
2. 消息传递系统(Message passing system)
进程间的数据交换,是以格式化的消息(message)为单位的;在计算机网络中,又把message称为报文。
3. 管道(Pipe)通信
“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件。向管道(共享文件)提供输入的发送进程(即写进程), 以字符流形式将大量的数据送入管道;而接受管道输出的接收进程(即读进程),则从管道中接收(读)数据。
为了协调双方的通信,管道机制必须提供以下三方面的协调能力:
① 互斥,即当一个进程正在对pipe执行读/写操作时,其它(另一)进程必须等待。
② 同步,指当写(输入)进程把一定数量(如4 KB)的数据写入pipe,便去睡眠等待,直到读(输出)进程取走数据后,再把他唤醒。当读进程读一空pipe时,也应睡眠等待,直至写进程将数据写入管道后,才将之唤醒。
③ 确定对方是否存在,只有确定了对方已存在时,才能进行通信。