欢迎来到天天文库
浏览记录
ID:52638248
大小:190.50 KB
页数:12页
时间:2020-04-12
《消息发送与接收的方式.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、消息发送与接收的方式数据发送与接收的不同方式引起的后果P0P1a=100;send(&a,1,1);a=0;recv(&a,1,0);printf(“%d”,a);有额外硬件支持通信与计算并行执行时,可能会出现语义正确性问题。2021/9/71消息发送与接收的方式(续)阻塞式消息传递:无语义正确性问题缓冲模式无缓冲模式非阻塞式消息传递缓冲模式无缓冲模式2021/9/72无缓冲模式阻塞发送/接收发送操作直到与之配对的接收操作启动之后,才在传完数据之后返回。典型方法是采用握手机制导致进程空闲发送进程接收进程sendrecv请求应答发送进程接收进程re
2、cv请求应答发送进程接收进程sendrecv请求应答2021/9/73无缓冲模式阻塞发送/接收(续)无缓冲模式阻塞操作中的死锁P0P1send(&a,1,1);recv(&b,1,1);send(&a,1,0);recv(&b,1,0);2021/9/74缓冲模式阻塞发送/接收操作在发送端,当执行到发送操作时,将数据复制到缓冲区,并在数据复制完毕后就立即返回在接收端,接收来的数据也存储到一个缓冲区中,当接收进程执行到接收操作时,再去检测数据是否已经在缓冲区中2021/9/75缓冲模式阻塞发送/接收操作(续)有无专门硬件支持时的不同操作方式recv发送
3、进程接收进程sendrecv发送进程接收进程send将数据复制到缓冲区2021/9/76缓冲模式阻塞发送/接收操作(续)减少了进程空闲,但增加了数据缓冲开销一般如果可以预测到发送与接收将几乎同时到达时,采用无缓冲操作更为有效对一般应用问题,采用有缓冲操作比较好在缓冲模式中,也可能由于缓冲区大小的限制而导致死锁2021/9/77缓冲模式阻塞发送/接收操作(续)缓冲区太小导致性能下降的例子P0P1For(k=0;k<10000;k++){produce_data(&a);send(&a,1,1);}For(k=0;k<10000;k++){recv(&a
4、,1,0);consume_data(&a);}2021/9/78缓冲模式阻塞发送/接收操作(续)由于接收端必须阻塞以保证语义正确性而导致死锁的例子P0P1recv(&a,1,1);send(&b,1,1);recv(&a,1,0);send(&b,1,0);2021/9/79非阻塞消息传递操作在缓冲模式下,发送进程在启动复制到缓冲区的DMA操作后立即返回,返回时DMA操作可能尚未结束在无缓冲模式下,发送进程简单地将消息的状态标识为尚未传输,就返回在数据进程传输的过程中,可以进行一些有用而不会引起语义正确性问题的计算2021/9/710非阻塞消息传递
5、操作(续)无专门硬件与有专门硬件时无缓冲模式非阻塞通信图示发送进程接收进程sendrecv请求应答数据不安全发送进程接收进程sendrecv请求应答数据不安全数据不安全2021/9/711各种方式的通信操作比较2021/9/712
此文档下载收益归作者所有