Linux 进程通信

来源:互联网 发布:蓝科型材优化注册码 编辑:程序博客网 时间:2024/05/21 17:05

进程通信
通信(Communication)意味着在进程间传送数据。也把进程间控制信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。

进程通信的类型
(1)共享存储器系统(内存)
共享存储器系统为了传送大量数据,在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读数据或写数据以实现通信。
(2)消息传递系统
分为两种
A、直接通信方式
发送进程可将消息直接发送给接收进程,即将消息挂在接收进程的消息缓冲队列上,而接收进程可从自己的消息缓冲队列中取得消息。
B、间接通信方式
发送进程将消息发送到指定的信箱中,而接收进程从信箱中取得消息。
(3)管道通信系统
在UNIX操作系统中,开创了一种借助文件和文件系统形成的一种通信方式。所谓管道是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称PIPE文件。向管道提供输入的发送进程,以字符流方式将大量的数据送入管道,而接收进程从管道中接收数据。由于发送进程和接收进程是利用管道进行通信,故称为管道能信系统。
(4)消息缓冲队列通信机制
A、消息缓冲队列通信机制简介
由于消息缓冲机制中所使用的缓冲区为公用缓冲区,因此使用消息缓冲机制传送数据时,两通信进程必须满足如下条件:
第一、在发送进程把写入消息的缓冲区挂入消息队列是,应禁止其他进程对该消息队列的访问,否则,将引起消息队列的混乱。同理,当接收进程正从消息队列中取消息时,也应禁止其他进程对该队列的访问。
第二、当缓冲区中无消息存在时,接收进程不能接收到任何消息;而发送进程是否可以发送消息,则只由发送进程是否能够申请到缓冲区决定。
消息缓冲队列通信机制中的数据结构
(1)消息缓冲区
typedefstruct message buffer
{
sender;//发送者进程标识符
size;//消息长度
text;//消息正文
next;//指向下一个消息缓冲区的指针
}
B、PCB中有关进程通信的数据项
typedefstruct message bolck
{
 .....
 mq;//消息队列队首指针
 mutex;//消息队列互斥信号量,初值为1
 sm;//消息队列资源信号量,用于消息队列中的消息计数,初值为0
 ......
}

原创粉丝点击