进程通信的方式及区别

进程通信的方式及区别

进程通信方式有5种:

1.管道:

又分匿名管道和有名管道。如果管道中的信息没有被读取,这个管道就会一直被阻塞。

匿名管道:是半双工通信(只能单向传递),只能在亲缘关系的进程之传间传递信息,不属于文件系统只存在于内存中。

有名管道(FIFO):任何进程均可以进行通信,有特定的路径名与之关联,存在于文件系统中。

2.消息队列:

它是消息的链接表,存于内核中,每个消息队列都有一个标识符ID。

其中的消息有特定的格式和优先级,接收消息可以按先进先出,也可以按消息的类型去查询;另外,消息是有一定大小限制的。

消息队列独立于发送接收进程,就是两个进程终止了,消息队列中的内容还是会留着。

3.信号量:

信号量是一个计数器,它并不能用于存储数据,而是用来进行进程同步,通常和共享内存结合使用。

它基于操作系统的PV操作,可以加减任意数值。

4.共享内存:

共享内存指两个或多个进程共享一个给定的存储区。(进程中的内存都是虚拟内存空间,可以拿出一部分映射到相同的物理空间上实现共享)

它是最快的一种IPC,进程可以直接去内存中获取数据。

共享内存需要同步,信号量就是用来同步对共享内存的访问。

还有socket等好像不是重点,先不总结了。

如何向面试官讲述进程间通信

面试必问:进程与线程的异同以及进程间通信方式

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 进程通信的方式及区别