进程间通信方式
1.管道(pipe)及有名管道(named pipe)
管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
2.信号(signal)
信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生。
3.消息队列(message queue)
消息队列是消息的链接表。
一个进程可以给若干个进程发送消息,反之,一个进程可以接受不同进程发来的消息,显然,进程中关于消息队列的操作是临界区。
当发送进程正往接受进程的消息队列中添加一条消息时,接收进程不能同时从该消息队列中读取消息。反之一样。
消息缓冲区通信机制包括以下内容:
1> 消息缓冲区,由以下几项组成的数据结构:
1. 消息长度
2. 消息正文
3. 发送者
4. 消息队列指针
2> 消息队列首指针,一般保存在PCB中
1. 互斥信号量m-mutex,初值为1,用于互斥访问消息队列,在PCB中设置。
2. 同步信号量m-syn,初值为0,用于消息计数,在pcb中设置。
3. 发送消息原语send
4. 接收消息原语receive
4.共享内存(shared memory)
可以说这是最有用的进程通信方式,它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程对共享内存中数据的更新。
这种方式需要依靠某种同步操作,如互斥锁和信号量等。
这种通信模式需要解决两种问题:第一种问题是怎样提供共享内存;第二个是公共内存的互斥关系这是程序开发者的责任。
5.信号量
主要作为进程之间及同一种进程的不同线程之间的同步和互斥手段。
6.套接字
这是一种用于网络中不同机器之间的进程间通信,应用非常广泛。