优秀的思想总是相似的

前几天学校优秀毕业论文答辩,无意间看到了一个很熟悉的名词——管道

当时在台上的是另一个已经签约在某直播平台工作的学生,讲述的毕业设计好像是说网络直播通信方面的东西。

我之前在研读SylixOS应用开发手册时也看到了这一章节。

其实对于不同的进程间的通信方式,一般有以下几种:

管道、命名消息队列、命名信号量、共享内存、信号等

其实我一直觉得,有些难以理解的东西可以放在一个大背景中去了解。

在操作系统设计的初期,应该不会涉及到很多很多的进程间相互通信,只有少数的不同进程通信,那么信号量则是不二之选,配置简单,调用方便。

但是随着操作系统逐步更新换代,信号量显然变得有些不够用,并且有的时候很多应用对多个进程重复操作,这时用信号量显然会变得不可控,此时如果用管道、命名消息队列就显然比信号量好很多。

但在在上述解决方法中,管道这种方式仅能对字节流进行承载、并且缓冲区也不可能无限的大,消息队列,既然是队列,那么必然会降低进程通信的实时性。

所以为了解决上述问题,直接把内存的一块区域共享出来的方法构思出来,共享内存可以解决实时性的问题(仅限于读取),这样便解决了队列处理的时延。

于是,可以在一个成熟的操作系统源码当中看到这五种方式其实都同时存在着,在设计其内核时,取其优点,避其缺点。

参考文章:
进程间通信

猜你喜欢

转载自blog.csdn.net/weixin_44076906/article/details/106852584