# Modo protegido

Em computação modo protegido (Protected Mode) é um modo operacional dos processadores compatíveis x86 da série 80286 e posteriores. Este modo permite que o os softwares do sistema façam uso de recursos como memória virtual, paginação, multi-tarefa segura e outras características projetadas para aumentar o controle do sistema operacional sobre as demais aplicações.
Quando um processador que suporta x86 em modo protegido é ligado ele começa executando instruções em modo real (real mode) para manter a Compatibilidade reversa com processadores x86 anteriores. O modo protegido só poderá ser ativado após o sistema operacional definir várias tabelas de descrição e ativar o bit de controle que habilita o modo protegido.
O modo protegido foi inicialmente adicionado na arquitetura x86 em 1982 com o lançamento da família de processadores Intel 80286, e mais tarde aprimorado com o lançamento dos processadores 80386 em 1985. Devido as melhorias adicionadas pelo modo protegido, logo iniciou-se a ampla adoção, tornando-o a base para todas as melhorias posteriores à arquitetura x86.

## História

Os 8086, predecessores dos 286, foram originalmente projetados com um barramento de memória de 20 bits o que possibilitaria o processador ter acesso ao equivalente a 1 megabyte de memória. Na época, 1 megabyte foi considerado uma quantidade de memória relativamente grande, então os engenheiros da IBM reservaram os primeiros 640 kilobytes de memória para aplicações e para o sistema operacional e os 384 kilobytes restantes foram reservados para a BIOS e memória para os periféricos.
Com o passar do tempo, o custo de memória diminuindo continuamente e a utilização crescendo, a limitação de 1 MB eventualmente começa a tornar-se um problema significativo. A Intel empenhada em resolver essa limitação lança os processadores 80286 expandindo a limitação de memória de 1 MB para 16 MB, e, posteriormente com a família de processadores 80386 o limite de memória sobe de 16 MB para 4 Gb e várias características utilizadas até hoje foram inseridas na arquitetura, tais como o sistema de paginação, modo de memória virtual e a habilidade de alternar entre modo real e modo protegido conforme a necessidade da aplicação.

### Características

O modo protegido tem um numero de características projetadas para aumentar o controle do sistema operacional sobre as demais aplicações, a fim de aumentar a segurança e a estabilidade do sistema. Estas adições permitem o sistema operacional a funcionar de uma forma que seria muito mais difícil ou mesmo impossível, sem o suporte de hardware adequado.

## Níveis de Privilégio

No modo protegido, há quatro níveis de privilégio ou anéis, numeradas de 0 a 3, com o anel sendo 0 o mais privilegiado e 3 sendo o mínimo. O uso de anéis permite software do sistema para restringir regras e tarefas de acesso aos dados, portões de chamada ou executar instruções privilegiadas.
Na maioria dos ambientes, o sistema operacional e alguns drivers de dispositivo executado em ring 0 e os aplicativos são executados no ring 3.

## Modo Virtual

Com o lançamento do 386, o modo protegido oferece o que os manuais Intel chamada modo virtual 8086. O Modo Virtual 8086 é projetado para permitir que o código escrito anteriormente ao 8086 para ser executado sem modificações e simultaneamente com outras tarefas, sem comprometer a segurança ou a estabilidade do sistema. O Modo Virtual 8086, no entanto, não é completamente compatível com todos os programas. Programas que exigem manipulação de segmento, instruções privilegiadas, acesso direto ao hardware, ou use auto-modificação de código irá gerar uma exceção que deve ser tratada pelo sistema operacional. Além disso, os aplicativos em execução no modo 8086 virtual que utilizam de instruções que envolvem entrada/saída (I/O), possuem um desempenho inferior.

## Endereçamento Segmentado

No modo real cada endereço lógico aponta diretamente para o local do endereço físico. Cada endereço lógico consiste em duas partes de 16 bits, uma parte contendo um segmento do endereço lógico com o endereço base de um segmento com uma granularidade de 16 bytes, e a outra parte contendo o deslocamento do endereço lógico dentro do segmento.

## Paginação

Além de adicionar modo virtual 8086, o 386 também acrescentou paginação para o modo protegido. Através de paginação o software do sistema pode restringir e controlar o acesso de uma tarefa em páginas, que são seções de memória. Em muitos sistemas operacionais, a paginação é usada para criar um espaço de endereço virtual independente para cada tarefa. Isso evita que um processo manipule a memória de outro. A Paginação também permite que as páginas sejam movidas do armazenamento primário para um armazenamento mais lento e maior secundário, como um disco rígido. Isto permite mais memória para ser utilizada do que é fisicamente disponível no armazenamento primário. A arquitetura x86 permite o controle de páginas por meio de duas matrizes: diretórios de páginas e tabelas página.

## Multi-tarefa

Através do uso de anéis, portões chamada privilegiada, e o Segmento de Estado de Tarefa (TSS), introduzida com o 286, o sistema multitarefa foi possível na arquitetura x86. A TSS permite registradores de uso geral, campos seletores de segmento e pilhas, o que permitem com que tudo seja modificado sem afetar as áreas reservadas para outras tarefas. A TSS também permite um nível de aplicação privilegiado e as permissões de porta de entrada/saída são independentes de outras aplicações.