As chamadas do sistema são implementadas no kernel, conforme mencionado na resposta à sua pergunta de acompanhamento . vDSO, o objeto compartilhado dinâmico virtual, é uma pequena biblioteca virtual, também implementada pelo kernel, que o kernel mapeia em todos os processos. Como syscalls, é encapsulado pela biblioteca C.
A principal diferença entre o syscalls e o vDSO é de privilégio. As chamadas do sistema são executadas no espaço do kernel, e a troca entre o espaço do usuário e o espaço do kernel é cara. Como uma otimização, algumas chamadas do sistema que não precisam realmente ser executadas no espaço do kernel são fornecidas no vDSO, que é executado no espaço do usuário. Um exemplo é gettimeofday
, que costuma ser chamado com bastante frequência e pode ser implementado pelo kernel sem mudar para o espaço do kernel.
A vdso
página de man tem mais detalhes. Para uma discussão detalhada das chamadas do sistema no Linux em geral, incluindo vDSO, veja Anatomia de uma chamada de sistema parte 1 e parte 2 .