# Espaço de usuário

O termo espaço de usuário, terra do usuário ou modo de usuário (do inglês, userspace, userland ou usermode) é um conceito da ciência da computação que se refere a um modo de execução em que um processador executa apenas instruções não privilegiadas. Quando um programa que corre em modo de utilizador tenta executar uma dessas instruções, o processador não a executa e, em vez disso, informa o núcleo para que este possa decidir o que fazer perante a situação (nomeadamente tolerar a execução da instrução). Etimologicamente, espaço refere-se ao conjunto de programas que rodam com o processador em modo usuário e a expressão origina da tradução direta da expressão em inglês user space application.
Típico de sistemas operacionais Unix ou tipo Unix, sendo um ambiente externo ao núcleo e protegido. Mais especificamente pode referir-se a um conjunto de bibliotecas providas pelo sistema operacional para executar entrada/saída ou outra interação com o núcleo e é usada geralmente dentro do escopo do espaço ou ambiente de usuário. Pode referir-se também a componentes de sistema não relacionados com o núcleo, como shell ou outros utilitários para manipular o sistema de arquivos.

## Modos de acesso

Existem certas instruções que não podem ser colocadas à disposição das aplicações, pois a sua utilização indevida ocasiona sérios problemas à integridade do sistema. Suponha que uma aplicação atualize um arquivo em disco. O programa, por si só, não pode especificar diretamente as instruções que acessam seus dados no disco. Como o disco é um recurso compartilhado, sua utilização deverá ser gerenciada unicamente pelo sistema operacional, evitando que a aplicação possa ter acesso indiscriminado a qualquer área do disco, o que poderia comprometer a segurança e integridade do sistema de arquivos.
Como visto fica claro que existem certas instruções que só devem ser executadas pelo sistema operacional ou sob sua supervisão, impedindo, assim, a ocorrência de problemas de segurança e integridade do sistema. As instruções que têm o poder de comprometer o sistema são conhecidas como instruções privilegiadas, enquanto as instruções não-privilegiadas são as que não oferecem risco ao sistema.
Para que uma aplicação possa executar uma instrução privilegiada, é necessário que no processador seja implementado o mecanismo de proteção conhecido como modos de acesso. Existem basicamente dois modos de acesso implementados pelos processadores: modo de acesso usuário e modo de acesso núcleo. Quando o processador trabalha no modo usuário, uma aplicação só pode executar instruções não privilegiadas, tendo acesso a um número reduzido de instruções, enquanto no modo núcleo ou supervisor a aplicação pode ter acesso ao conjunto total de instruções do processador.
O mecanismo de modos de acesso também é uma boa forma de proteger o próprio núcleo do sistema residente na memória principal. Suponha que uma aplicação tenha acesso a áreas de memória onde está o sistema operacional. Qualquer programador mal-intencionado ou um erro de programação poderia gravar nesta área, violando o sistema. Com o mecanismo de modos de acesso, para uma aplicação escrever numa área onde resida o sistema operacional o programa deve estar sendo executado no modo núcleo.