进程间的通信方式5种

进程间的通信方式5种进程间的通信方式三种分别是消息队列通信、信号量通信和共享内存通信,还有管道、Scoket。下面我们具体来了解一下这5种方式。1、消息队列是在两个不相关的进程之间传递数据的一种简单高效的方式,独立于发送进程和接受进程而存在。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺

大家好,欢迎来到IT知识分享网。

进程间的通信方式三种分别是消息队列通信信号量通信共享内存通信,还有管道、Scoket。下面我们具体来了解一下这5种方式。

 

1、消息队列是在两个不相关的进程之间传递数据的一种简单高效的方式,独立于发送进程和接受进程而存在。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。在内核中创建一队列,队列中每个元素是一个数据报,不同的进程可以通过句柄去访问这个队列;消息队列独立于发送与接收进程,可以通过顺序和消息类型读取,也可以fifo读取;消息队列可实现双向通信。

 进程间的通信方式5种

 

 

 2、信号量是一种提供不同进程或者一个给定的不同线程之间同步的手段。它常作为一种锁机制,防止进程访问共享资源时,其他的进程也访问该资源。主要作为进程之间以及同一进程内的不同线程之间的同步手段。

  进程间的通信方式5种

 

 

3、共享内存是指在多个处理器的计算机中,可以被不同的中央处理器访问的大容量的内存。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低的问题专门设计的。它往往与其他通信机制配合使用,来实现进程间的同步通信。

将同一块物理内存一块映射到不同的进程的虚拟地址空间中,实现不同进程间对同一资源的共享。目前最快的IPC形式,不用从用户态到内核态的频繁切换和拷贝数据,直接从内存中读取就可以,共享内存是临界资源,所以需要操作时必须要保证原子性。使用信号量或者互斥锁都可以。

 进程间的通信方式5种

 

 4、管道分为命名管道和无名管道,在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,都可以看成一种特殊的文件,具有固定的读端和写端,也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中;无名管道一般使用fork函数实现父子进程的通信,命名管道用于没有血缘关系的进程也可以进程间通信;面向字节流、自带同步互斥机制、半双工,单向通信,两个管道实现双向通信。

以上就是对三种通信方式的具体介绍。

5、socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据。socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种”打开—读/写—关闭”模式的实现,服务器和客户端各自维护一个”文件”,在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件。是一种可以网间通信的方式。

摘自:

https://baijiahao.baidu.com/s?id=1720080267991353862&wfr=spider&for=pc

https://mp.weixin.qq.com/s?__biz=MjM5NzEyMzg4MA==&mid=2649423819&idx=3&sn=13a467712e6425576c7b6220580788aa&chksm=bec09d8c89b7149a2f27a6e29e67a17b241902b3686008258f34e0ccf9a883caedb6b4814b71&scene=27

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/27766.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信