A execução de um processo executa as instruções da CPU por definição. Existem algumas instruções da CPU que só podem ser executadas em um modo privilegiado, principalmente instruções relacionadas ao acesso ao hardware fora da CPU, incluindo a RAM ou à modificação de algumas configurações. O kernel é executado em modo privilegiado, processos comuns são executados em modo não privilegiado. Os detalhes do que significa “modo privilegiado” depende da arquitetura da CPU.
Instruções puramente computacionais, como operações inteiras e operações de ponto flutuante, não requerem acesso privilegiado, portanto, elas podem ser executadas por processos comuns.
Quando um processo deseja executar uma operação que requer privilégios, ele precisa invocar algum código do kernel para fazê-lo. Há uma instrução especial da CPU que alterna simultaneamente a CPU para o modo privilegiado e ramifica para um endereço predefinido na memória. Em um sistema operacional unix (e na maioria dos sistemas operacionais em geral), essa ação é chamada de chamada de sistema.
O Unix fornece isolamento entre processos, por isso configura o processador (especificamente, o MMU ) de tal forma que cada processo só pode acessar sua própria memória, e não a memória de outros processos ou do kernel. (Quase) qualquer ação que possa afetar outros processos ou que envolva acesso a hardware fora da CPU principal passa pelo kernel e, portanto, requer uma chamada de sistema. Isso inclui acesso a arquivos e dispositivos de hardware, rede, comunicação entre processos, gerenciamento de privilégios e memória, etc.
Você pode ver a documentação das chamadas do sistema em seu sistema na seção 2 do manual . Você pode ver o que o sistema chama de um processo ao ativá-lo por meio de truss
no Solaris e no FreeBSD, < href="http://en.wikipedia.org/wiki/Strace"> strace
no Linux, ou equivalentes em outras variantes unix.