Sistema Operacional em Camadas
# Sistema Operacional em Camadas

O Sistema Operacional em Camadas é um termo oriundo dos estudos referentes a sistemas operacionais, que designa os modelos de sistemas operacionais montados sobre uma hierarquia de camadas.

## Implementações

O sistema operacional é organizado em camadas construídas uma sobre a outra. O primeiro sistema construído dessa maneira foi o sistema criado no Technische Hogeschool Eindhoven, na Holanda, por E. W. Dijkstra (1968) e seus alunos. O sistema THE era um sistema de lote simples para um computador holandês, o Electrologica X8, que tinha 32K de palavras de 27 bits (bits eram caros naquela época).
O sistema tinha seis camadas:
* A camada 0 (zero) lidava com a alocação do processador, alternando entre processos quando ocorriam interrupções ou quando os temporizadores expiravam. Acima da camada 0 (zero), o sistema consistia em processos sequenciais, cada um dos quais podia ser programado sem ser necessário preocupar-se com o fato de que múltiplos processos estavam executando em um único processador. Em outras palavras, a camada 0 (zero) proporcionava a multiprogramação básica da CPU.
* A camada 1 fazia o gerenciamento da memória. Ela alocava espaço para os processos da memória principal e em um tambor (Antigo meio magnético de armazenamento de dados) com 512K de palavras utilizado para armazenar partes do processo (páginas) para os quais não havia lugar na memória principal. Acima da camada 1, os processos não tinha que se preocupar com o fato de eles estarem em memória ou no tambor, o software da camada 1 cuidava de assegurar que as páginas fossem levadas para a memória sempre que fossem necessárias.
* Já a camada 2 fazia a comunicação entre o console do operador e cada processo.
* A camada 3 gerenciava dispositivos de entrada e saída.
* A camada 4 localizavam-se os programas de usuários.
* A camada 5 era o usuário.
No entanto, a maioria dos sistemas de uso geral usa apenas duas camadas, mesmo que o hardware em que são executados forneça mais modos de CPU do que isso. Por exemplo, o Windows 7 e o Windows Server 2008 (e seus predecessores) usam apenas duas camadas, com o camada 0 correspondendo ao modo do núcleo e a camada 3 ao modo do usuário, porque as versões anteriores do Windows eram executadas em processadores que suportavam apenas dois níveis de proteção.
Muitas arquiteturas modernas de CPU (incluindo a popular arquitetura Intel x86) incluem alguma forma de proteção em camada, embora o sistema operacional Windows NT, como o Unix, não utilize totalmente esse recurso. O OS/2 o fez até certo ponto, usando três camadas: camada 0 para o código do núcleo e drivers de dispositivo, camada 2 para código privilegiado (programas de usuário com permissões de acesso de E/S) e camada 3 para código não privilegiado (quase todos os programas de usuário). No DOS, o núcleo, os drivers e os aplicativos normalmente são executados na camada 3 (no entanto, isso é exclusivo para o caso em que drivers de modo protegido e/ou extensores DOS são usados; como um sistema operacional de modo real, o sistema funciona efetivamente sem proteção), enquanto gerenciadores de memória 386, como o EMM386, são executados na camada 0.