BIOS interrompe, níveis de privilégios e paginação

0

Eu estava aprendendo sobre as CPUs Intel 8086-80486 e suas interações com o hardware. Mas ainda não entendi muito bem. Por favor, ajude-me a preencher pontos em branco.

Primeiro, eu sei que a CPU se comunica com o hardware usando as interrupções da BIOS. Mas, o que realmente acontece no PC, quando eu chamo alguma instrução INT? Eu sei que, de acordo com a tabela de interrupções, algumas instruções começam a ser executadas, mas como, executando algumas instruções, a BIOS pode reconhecer o que eu quero fazer? Porque, até onde eu sei, a CPU não possui nenhum canal de comunicação extra com a BIOS, ela só pode endereçar memória e receber dados. Então, como eu posso instruir o BIOS para fazer algo, quando eu posso apenas endereçar RAM?

A próxima coisa que não entendo é sobre os níveis de privilégio. Eu sei sobre o modelo de anel e os direitos de acesso, mas como a CPU sabe qual nível de privilégio executou uma instrução? Eu acho que esses privilégios se aplicam somente quando a intruction está tentando endereçar a memória, mas como um aplicativo obtém seu nível de privilégio? Quer dizer, eu sei que é o nível 3, mas como isso é definido?

E, por último, eu sei que a paginação é um esquema de endereços que é usado para suportar memória virtual transparente, ou troca, mas não consegui encontrar nenhuma informação sobre como a paginação está vinculada ao modo protegido. Como se a paginação fosse como o próximo modo independente do modo protegido, ou se fosse de alguma forma implementada no modo protegido. E se ele for implementado no modo protegido, não é muito lento, para primeiro endereçar o espaço do aplicativo, depois o deslocamento, e depois a pasta de paginação, a página e o deslocamento novamente?

    
por Peter Mortensen 08.03.2010 / 17:20

1 resposta

2

Existem 2 modos: real e protegido. No modo real, você pode endereçar apenas 1 MiB de memória. As interrupções do BIOS são acessíveis apenas no modo real. Endereços A0000 - FFFFF são mapeados: A0000 - BFFFF é memória de vídeo, F0000 - FFFFF é ROM BIOS, onde o código de rotinas de serviço de interrupção da BIOS está localizado. Não há níveis de privilégio no modo real. Se você executar a instrução "int n", isso acontece: flags, cs, ip são armazenados na pilha. O word em n * 4 + 2 é carregado em cs e a palavra em n * 4 é carregada em ip.

O modo protegido é iniciado definindo o bit 0 do registrador cr0. Então você tem os 4 níveis de privilégio. Mas antes de iniciá-lo, você deve habilitar o A20, configurar as bases de interrupção do IRQ 0-7 e IRQ 8-15, crie IDT, GDT.

A paginação é iniciada configurando o bit 31 de cr0. Antes de iniciá-lo, você deve criar o diretório de páginas e as tabelas de páginas e definir cr3 para apontar para o diretório de páginas.

    
por 12.04.2011 / 13:55