参考
https://man7.org/linux/man-pages/man7/vdso.7.html
简介
所有的概念无一避免,都需要吃透,才能使用起来如鱼得水。
"vDSO(virtual dynamic shared object)虚拟动态库是一个小巧的共享库,内核会自动将其映射到所有的用户态进程的地址空间。就是一次加载,然后大家都可以使用。当然应用并不需要关系太多的vDSO的细节,这些调用通常是由C的库函数完成。这样应用只需调用C的标准库,就可以是由vDSO提供的功能。
那vDSO为什么会存在呢?存在这么一些内核提供的系统调用,用户侧调用的频率非常的高,这样就会导致一些性能问题的考虑,因为存在上下文的切换问题,导致额外的负担。所以就产生了这个vDSO
文档说明
接下来的文档的目标读者是C标准库的编写者,而不是普通的开发这个。不推荐应用直接调用vDSO提供的接口。
背景举例
系统调用是慢的。在x86 32位系统,可以通过触发软件中断(int $0x80)来告诉内核,系统做系统调用,但是这种操作非常的昂贵:因为这一动作,会经过中断处理的整条路,有架构的微代码,