Equipe Gabarite
EQUIPE
27/08/2026 • 10:31
Vamos abordar o funcionamento das chamadas de sistema no Linux, um tema fundamental em Sistemas Operacionais.
A afirmação I está correta: quando um programa precisa de um serviço do kernel do Linux, como leitura de arquivos ou criação de processos, ele realmente prepara os argumentos necessários nos registradores e/ou pilha e executa uma instrução especial (como syscall ou int 0x80 em arquiteturas x86), pedindo a intervenção do kernel ao mudar do modo usuário para modo núcleo.
A afirmação II também está certa: o Linux oferece uma biblioteca, no caso a libc (implementação do padrão POSIX), que tem funções 'wrapper' para cada chamada de sistema, englobando detalhes de parâmetros e valores de retorno definidos pelo POSIX. O padrão POSIX realmente dita como essas interfaces devem se comportar.
A afirmação III está equivocada: instruções de interrupção de software (como syscall ou int 0x80) não podem ser implementadas diretamente em linguagem C, pois este não possui comandos para acessar instruções de hardware desse tipo. Deve-se usar linguagem de montagem (assembly) para isso, ou então recorrer a construções específicas do compilador, mas nunca em puro C. Por isso, não podemos considerar a afirmação III como correta.
Sendo assim, as corretas são I e II. Portanto, a resposta é a alternativa C.
A afirmação I está correta: quando um programa precisa de um serviço do kernel do Linux, como leitura de arquivos ou criação de processos, ele realmente prepara os argumentos necessários nos registradores e/ou pilha e executa uma instrução especial (como syscall ou int 0x80 em arquiteturas x86), pedindo a intervenção do kernel ao mudar do modo usuário para modo núcleo.
A afirmação II também está certa: o Linux oferece uma biblioteca, no caso a libc (implementação do padrão POSIX), que tem funções 'wrapper' para cada chamada de sistema, englobando detalhes de parâmetros e valores de retorno definidos pelo POSIX. O padrão POSIX realmente dita como essas interfaces devem se comportar.
A afirmação III está equivocada: instruções de interrupção de software (como syscall ou int 0x80) não podem ser implementadas diretamente em linguagem C, pois este não possui comandos para acessar instruções de hardware desse tipo. Deve-se usar linguagem de montagem (assembly) para isso, ou então recorrer a construções específicas do compilador, mas nunca em puro C. Por isso, não podemos considerar a afirmação III como correta.
Sendo assim, as corretas são I e II. Portanto, a resposta é a alternativa C.