Vou tentar responder às perguntas da forma mais breve possível. As perguntas que você está fazendo são geralmente abordadas em cursos de sistemas operacionais introdutórios em universidades, mas eu assumirei que você não fez esse curso.
-
O isolamento de memória para processos do espaço do usuário é muito desejável - não apenas para proteger o kernel de programas maliciosos do espaço do usuário, mas também para proteger os programas do espaço do usuário uns dos outros. Isso geralmente é chamado de Memória Virtual . Também facilita a implementação da paginação, o que é desejável também por outros motivos (fragmentação mais simples, vinculadores / carregadores mais simples, etc.).
-
Interrupções (nem todas estão no controle de um aplicativo no nível do usuário). Desistir do processador também retira o "controle" do processo (por exemplo,
wait
etc., que também são chamadas do sistema). O kernel pode decidir não programar um aplicativo. -
Essa é uma questão muito ampla. Kernel com chamadas do sistema mal implementadas é vulnerável. A capacidade de escrever na memória física seria outro caminho. Existem outras vulnerabilidades que podem surgir de instruções mal implementadas (por exemplo, vulnerabilidade sysret em processadores Intel).
-
Privilégios de raiz não são os mesmos privilégios de kernel. Um aplicativo em execução como usuário root ainda está usando a memória virtual, ainda precisa fazer chamadas do sistema, ainda precisa obedecer às outras regras que qualquer aplicativo de nível de usuário precisa.
Se você quiser que eu forneça mais detalhes sobre algumas das respostas, me avise.
Se alguém puder melhorar algumas das respostas, sinta-se à vontade para indicá-lo.