Chamada de sistema
Uma chamada de sistema é uma solicitação feita por um programa ao sistema operacional. Ela permite que um aplicativo acesse funções e comandos da API do sistema operacional.
As chamadas de sistema executam operações no nível do sistema, como a comunicação com dispositivos de hardware e a leitura e gravação de arquivos. Ao fazer chamadas de sistema, os desenvolvedores podem usar funções pré-escritas compatíveis com o sistema operacional (SO), em vez de escrevê-las do zero. Isso simplifica o desenvolvimento, melhora a estabilidade dos aplicativos e torna os aplicativos mais "portáteis" entre diferentes versões de um SO.
Como funcionam as chamadas de sistema
Os aplicativos são executados em uma área da memória chamada espaço do usuário. Uma chamada de sistema acessa o kernel do sistema operacional, que é executado no espaço do kernel. Quando um aplicativo faz uma chamada de sistema, primeiro precisa solicitar permissão ao kernel. Isso pode ser feito com uma solicitação de interrupção, que pausa o processo atual e transfere o controle para o kernel.
Se a solicitação for permitida, o kernel a processará, por exemplo, criando ou excluindo um arquivo. Quando a operação é concluída, o kernel passa a saída de volta ao aplicativo, que transfere dados do espaço do kernel para o espaço do usuário na memória. O aplicativo recebe a saída do kernel como entrada. No código-fonte de um programa, isso pode ser um valor de parâmetro ou um valor de retorno dentro de uma função. Depois que a entrada é recebida, o aplicativo retoma o processo.
Uma chamada de sistema básica, como obter a data e a hora do sistema, pode levar alguns nanossegundos. Uma chamada de sistema mais avançada, como estabelecer comunicação com um dispositivo de rede, pode exigir alguns segundos. Para evitar gargalos, a maioria dos sistemas operacionais inicia uma thread separada do kernel para cada chamada de sistema. Os sistemas operacionais modernos são multithread, o que significa que podem processar várias chamadas de sistema ao mesmo tempo.
Teste seus conhecimentos