Skip to content

虚拟系统调用

系统调用一次的开销太大,有时候只想查个时间,也需要走一大堆系统调用的流程。后来 linux 就有了虚拟系统调用机制。

vsyscall

linux 将系统调用的一些数据放到用户能访问的内存里,比如时间等等。在系统调用的时候,走的流程就不用这么多了,直接访问相关的内存就行了。但是这个 vsyscall 的缺点在于,所有的用户进程使用同一个虚拟地址访问这个数据,会带来一定的安全问题。

vdso

更新的虚拟系统调用机制,和动态库加载的想法类似,完全可以想象成动态库的加载。等于把相关信息的页面想象成动态库,每个进程访问的时候都能够进行加载,这样所有进程访问的虚拟地址也不一定相同了。