Chamada de sistema
Uma chamada de sistema (syscall) é o mecanismo que permite que um programa em modo usuário (como um aplicativo ou software) peça serviços do sistema operacional, como operações de entrada/saída, alocação de memória, gerenciamento de processos, entre outros.
As syscalls são necessárias porque os programas em modo usuário não têm permissão direta para acessar o hardware ou executar operações críticas no sistema.
Principais aspectos das syscalls
Mecanismo de interface entre software e sistema operacional
Quando um programa precisa realizar uma operação que envolve recursos do sistema (como acessar o disco, se comunicar com o hardware, ou criar processos), ele não pode fazê-lo diretamente. Em vez disso, ele faz uma chamada de sistema para pedir ao sistema operacional que execute a operação em seu nome.
Modo usuário e modo kernel
Os sistemas operacionais modernos são divididos em dois modos de operação:
Execução de syscalls
As syscalls são feitas por meio de interrupções ou instruções especiais do processador que sinalizam ao sistema operacional para assumir o controle.
Em sistemas Unix, por exemplo, as chamadas de sistema são invocadas através de instruções como int 0x80
(em sistemas mais antigos) ou usando a instrução syscall
nas arquiteturas mais modernas.
Exemplo
Abaixo um exemplo de como funciona uma chamada de sistema para abrir um arquivo.