Chamadas de sistema per se são um conceito. Eles representam ações que os processos podem solicitar ao kernel para executar.
Essas chamadas de sistema são implementadas no kernel do sistema semelhante ao UNIX. Essa implementação (escrita em C e em asm para pequenas partes) realmente executa a ação no sistema.
Em seguida, os processos usam uma interface para solicitar ao sistema a execução das chamadas do sistema. Essa interface é especificada pelo POSIX. Este é um conjunto de funções da biblioteca padrão C. Eles são, na verdade, wrappers, eles podem executar algumas verificações e, em seguida, chamar uma função específica do sistema no kernel que o instrui a executar as ações exigidas pela chamada do sistema. E o truque é que essas funções, que são a interface, são nomeadas da mesma forma que as chamadas do sistema em si e geralmente são chamadas diretamente como "as chamadas do sistema".
Você poderia chamar a função no kernel que executa a chamada do sistema diretamente através do mecanismo específico do sistema. O problema é que isso torna o seu código absolutamente não portável.
Então, uma chamada do sistema é:
- um conceito, uma seqüência de ação executada pelo kernel para oferecer um serviço a um processo do usuário
- a função da biblioteca padrão C que você deve usar em seu código para obter este serviço do kernel.