pt.phhsnews.com


pt.phhsnews.com / Por que os processadores x86 usam apenas dois de quatro "anéis"?

Por que os processadores x86 usam apenas dois de quatro "anéis"?


Ao aprender mais sobre como os sistemas operacionais e o hardware funcionam no trabalho e interagem uns com os outros, você pode se surpreender para ver o que parece ser esquisitices ou subutilização de "recursos" que ocorrem. Por que é que? A postagem de perguntas e respostas do SuperUser de hoje tem a resposta para a pergunta de um curioso leitor.

A sessão de Perguntas e Respostas é cortesia da SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade.

Foto cedida por Lemsipmatt (Flickr).

A pergunta

Leitor SuperUser AdHominem quer saber porque CPUs x86 usam apenas dois de quatro toques:

Sistemas x86 baseados em Linux e Windows usam apenas Ring 0 para modo kernel e Ring 3 para o modo de usuário. Por que os processadores distinguem até quatro anéis diferentes se todos acabarem usando apenas dois deles? Isso mudou com a arquitetura AMD64?

Por que os processadores x86 usam apenas dois dos quatro toques?

O colaborador do SuperUser do Answer

Jamie Hanrahan tem a resposta para nós:

Há dois motivos principais.

A primeira é que, embora as CPUs x86 ofereçam quatro anéis de proteção de memória, a granularidade de proteção oferecida por ela é apenas no nível por segmento. Ou seja, cada segmento pode ser definido como um anel específico (nível de privilégio) juntamente com outras proteções, como desativado por gravação. Mas não há muitos descritores de segmento disponíveis. A maioria dos sistemas operacionais gostaria de ter uma granularidade muito mais fina da proteção de memória, como… para páginas individuais.

Portanto, insira a proteção baseada em tabela de páginas. A maioria dos sistemas operacionais x86 modernos, se não todos, mais ou menos ignoram o mecanismo de segmentação (tanto quanto podem, de qualquer maneira) e contam com a proteção disponível dos bits de baixa ordem nas entradas da tabela de páginas. Um deles é chamado de bit “privilegiado”. Esse bit controla se o processador precisa ou não estar em um dos níveis “privilegiados” para acessar a página. Os níveis “privilegiados” são PL 0, 1 e 2 . Mas é apenas um bit, portanto, no nível de proteção página por página, o número de “modos” disponíveis no que diz respeito à proteção de memória é apenas dois: uma página pode ser acessada do modo não privilegiado ou não. Por isso, apenas dois anéis. Para ter quatro anéis possíveis para cada página, eles precisariam ter dois bits de proteção em cada entrada da tabela de páginas para codificar um dos quatro números possíveis (assim como os descritores de segmento). No entanto, eles não o fazem.

O outro motivo é um desejo de portabilidade do sistema operacional. Não é apenas sobre x86; O Unix nos ensinou que um sistema operacional poderia ser relativamente portátil para arquiteturas de múltiplos processadores, e que isso era uma coisa boa. E alguns processadores suportam apenas dois toques. Por não depender de vários toques na arquitetura, os implementadores do sistema operacional tornaram os sistemas operacionais mais portáteis.

Há um terceiro motivo específico para o desenvolvimento do Windows NT. Os designers de NT (David Cutler e sua equipe, que a Microsoft contratou para longe da DEC Western Region Labs) tiveram uma vasta experiência anterior em VMS; Na verdade, Cutler e alguns dos outros estavam entre os designers originais da VMS. E o processador VAX para o qual o VMS foi projetado tem quatro toques (o VMS usa quatro toques).

Mas os componentes executados nos Toques 1 e 2 do VMS (Record Management Services e CLI, respectivamente) foram deixados de fora do design do NT. Anel 2 no VMS não se tratava realmente de segurança do sistema operacional, mas sim de preservar o ambiente CLI do usuário de um programa para outro e o Windows não tinha esse conceito; o CLI é executado como um processo comum. Quanto ao Anel 1 de VMS, o código RMS em Anel 1 teve que chamar Anel 0 com bastante frequência, e transições de anel são caras. Acabou sendo muito mais eficiente simplesmente ir para Ring 0 e terminar com isso em vez de ter um monte de Ring 0 transições dentro do Ring 1 código (novamente, não que o NT tenha algo parecido com o RMS).

Quanto ao motivo pelo qual o x86 implementou quatro toques enquanto os sistemas operacionais não os usavam, você está falando sobre sistemas operacionais de design muito mais recente que o x86. Muitos dos recursos de programação do sistema do x86 foram projetados muito antes que o NT ou os verdadeiros kernels Unix-ish fossem implementados nele, e eles realmente não sabiam o que o sistema operacional usaria. Não foi até termos paginação em x86 que pudemos implementar verdadeiros kernels Unix-ish ou VMS-like.

Não só os modernos sistemas operacionais x86 ignoram a segmentação (eles apenas configuram os segmentos C, D e S com um endereço base de 0 e tamanho de 4 GB; os segmentos F e G às vezes são usados ​​para apontar para as principais estruturas de dados do sistema operacional), eles também ignoram amplamente coisas como "segmentos do estado da tarefa". O mecanismo TSS foi claramente projetado para troca de contexto de thread, mas tem muitos efeitos colaterais, então os sistemas operacionais x86 modernos o fazem “manualmente”. A única vez que o NT x86 altera as tarefas de hardware é para algumas condições realmente excepcionais, como uma exceção de falha dupla.

Com relação à arquitetura x64, muitos desses recursos em desuso foram omitidos. Para seu crédito, a AMD conversou com as equipes de kernel do sistema operacional e perguntou o que elas precisavam do x86, o que elas não precisavam ou não e o que elas gostariam de adicionar. Os segmentos em x64 existem apenas no que pode ser chamado de forma vestigial, a comutação de estado da tarefa não existe, etc., e os sistemas operacionais continuam a usar apenas dois toques.


Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.


Solucionar problemas do Windows 10 não vai dormir

Solucionar problemas do Windows 10 não vai dormir

Eu já escrevi sobre como corrigir problemas com o Windows 7 não vai dormir e Windows 8 não vai dormir, mas eu não falei sobre problemas de sono no Windows 10. Devido ao grande número de máquinas e enorme variedade de hardware que o Windows pode ser executado, todas as versões do Windows terão problemas para dormir em determinadas situações.Às vezes

(How-to)

Como executar um desligamento completo no Windows 8

Como executar um desligamento completo no Windows 8

No Windows 8, quando você encerra seu computador, você está executando um desligamento híbrido por padrão. O que é um desligamento híbrido? Como você provavelmente já ouviu falar, o Windows 8 inicializa muito mais rápido que o Windows 7 e versões anteriores do Windows.Isso é por causa da maneira como ele é desligado. Em vez de e

(How-to)