http://baike.baidu.com/link?url=Vwbxrr6PmMAs4lHMwzYA-2rpIwvEXHi55ptEFYKIgZ_Fbp0NxzSHTytp0QhuUj9JaKrEcz7fAFztUGOuc_aPTa
我们可以借用思想来实现自己的代码:
可以将自己生成的.so用dlopen跟dlsym等进行加载,返回句柄
句柄可以压入队列中,以后从中取出进行用。
为什么手工加载,以及这样做的优缺点上面的文章已经指出。
优点:
Linux的解决方案是包含内核模块,这些模块是可以按需要随时装入和卸下的。这样做可以使得内核的大小和通信量都达到最小。将模块从内核中独立出来,不必预先『绑』在 kernel codes 中。这样做有三种优点: 第一, 将来修改 kernel 时,不必全部重新 compile,可节省不少时间;第二, 若需要安装新的 modules ,不必重新 compile kernel,只要插入 (通过insmode指令) 对应的 modules 即可;第三,减少内核对系统资源的占用,内核可以集中精力做最基本的事情,把一些扩展功能都交由modules实现。
缺点:
模块也可以用来尝试新的内核代码而不需要每次都创建和重激活内核。但是,这样做带来的问题是:使用内核模块通常会轻微的增加性能和内存开支。一个可加载模块肯定会产生更多的代码,这种代码和额外的数据结构会占用更多一点的内存。另外因为间接访问内核资源也让模块的效率轻微降低。