Em sistemas operacionais do tipo UNIX, as chamadas do sistema são identificadas por números exclusivos. Estes são chamados de números
chamadas do sistema ou às vezes apenas
números do sistema . Eles são essencialmente índices em uma tabela de chamadas do sistema dentro do kernel. Quando um programa faz uma chamada de sistema (por exemplo, `Open`,` read`, `write`,` fork`), ele não usa diretamente o nome da função; Em vez disso, ele usa o número de chamada do sistema correspondente. O kernel usa esse número para procurar a função correta para executar.
Aqui está um colapso de seu significado:
*
Eficiência: O uso de números é mais eficiente do que usar strings (como nomes de funções). As pesquisas de números são muito mais rápidas que as pesquisas de string.
*
Abstração: Eles fornecem um nível de abstração. A interface de chamada do sistema é consistente, independentemente dos detalhes específicos da implementação de cada função de chamada do sistema.
*
Portabilidade (com advertências): Embora os números de chamadas * do sistema * próprios não sejam necessariamente portáteis em diferentes sistemas do tipo UNIX (por exemplo, Linux, MacOS, BSD), os * nomes * das chamadas do sistema geralmente são (embora seu comportamento possa ter diferenças sutis). Os arquivos de cabeçalho fornecem um mapeamento entre os nomes simbólicos e os números para um sistema específico. Você geralmente usaria os nomes simbólicos do seu código, contando com o compilador e o vinculador para resolvê -los para os números corretos de chamadas do sistema.
*
Segurança: O uso direto dos números de chamadas do sistema oferece menos proteção do que o uso de uma biblioteca ou API bem-vindos; O uso incorreto pode levar a falhas do sistema ou vulnerabilidades de segurança. Portanto, o uso dos nomes simbólicos é quase sempre preferido.
Como eles são usados: Um programa geralmente não usa diretamente os números de chamadas do sistema. Em vez disso, ele usa uma interface de chamada do sistema (geralmente fornecida por uma biblioteca C), que lida com a tradução do nome da função para o número. Os arquivos de cabeçalho (como `unistd.h` em c) definem constantes simbólicas para cada chamada do sistema, permitindo que os programadores escrevam código portátil usando esses nomes simbólicos. O compilador e o vinculador cuidam do mapeamento desses símbolos para os números apropriados de chamadas do sistema durante a compilação e a ligação.
Em resumo, os números de chamadas do sistema são identificadores de baixo nível usados pelo kernel para despachar chamadas do sistema, oferecendo eficiência e uma camada de abstração para programadores que, de outra forma, precisariam trabalhar diretamente com interfaces de kernel, uma tarefa geralmente deixada para escritores de bibliotecas e o próprio sistema operacional.