Por que a necessidade syscall para alternar para o modo kernel?
-
03-07-2019 - |
Pergunta
Eu estou estudando para meus sistemas operacionais finais e queria saber se alguém poderia me dizer por que as necessidades do sistema operacional para alternar para o modo kernel para syscalls?
Solução
A syscall é usado especificamente para executar uma operação no modo kernel, já que o código de utilizador habitual não tem permissão para fazer isso por razões de segurança.
Por exemplo, se você queria para alocar memória, o sistema operacional tem o privilégio de fazê-lo (uma vez que conhece as tabelas de páginas e está autorizado a memória de acesso de outros processos), mas como um programa de usuário não deve ser permitido espiada ou arruinar a memória de outros processos. É uma maneira de sandboxing você. Então você enviar um syscall solicitando o sistema operacional para alocar a memória, e isso acontece no nível do kernel.
Edit: Eu vejo agora que a Wikipedia artigo é surpreendentemente úteis sobre este
Outras dicas
Uma vez que este é marcado "dever de casa", eu não vou apenas dar a resposta longe, mas irá fornecer uma dica:
O kernel é responsável por acessar o hardware do computador e garantir que os aplicativos não pisar em um outro. O que aconteceria se qualquer aplicativo pode acessar um dispositivo de hardware (por exemplo, o disco rígido) sem a cooperação do kernel?