摘自:https://blog.csdn.net/m0_47413019/article/details/107578694
1、共享内存机制
Sysrepo0.X.X版本使用的进程间通信的机制,在实际的使用过程中,出现了诸如数据不同步、数据处理TimeOut、完成一次Get请求时,但实际处理的请求会较多,导致性能与规格上不去的各类问题。Sysrepo-devel分支开始引入共享机制后,合入到Sysrepo的Master分支,也就是现在的 Sysrepo1.X.X版本。
简单说一说什么是共享内存,共享内存就是允许两个或多个进程共享一定的存储区,说白了,就是两个进程访问同一块内存区域,当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改,所以数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干次数据拷贝,是一种最快的IPC。原理图如下所示,需要注意的是,共享内存本向并没有任何的同步与互斥机制,所以必须使用信号量来实现对共享内存的存取的同步。其它有关的共享内存的概念使用,网上有很多,可自行查阅理解。本处这分析与sysrepo相关的共享内存机制的使用。
图1 共享内存原理图
。。。。。。。
共享内存间在初始操作,包括信号的创建与初始化,也是在sr_connet函数中处理。sr_connet是plugind与sysrepo的连接入口,SHM是在入口中初始的一种机制,用来保证sysrepo与plugind的通信高效,快速。
先用sysrepo共享内存机制为后面的各类订阅打个底。先了解一下sysrepo的共享内存机理的实现。