OS Dev na prática para x86 – 5. BIOS

By Vovô

OK, demorou mas aqui estou novamente.

A BIOS é um conjunto de códigos em 16 bits cuja função prover funções de acesso genérico à memória de vídeo, aos discos e outros periféricos em geral, como teclado e mouse. A natureza de 16 bits da BIOS impõe várias limitações a até onde esse hardware pode ser usado x/ (Ah, mas vovô, se a BIOS é uma coisa do $#%@, então por que não é feita em 32 bits ou 64 bits, de acordo com o processador? Ah amiguinho, o buraco é mais embaixo ¬¬).

As BIOS de hoje ainda são em 16 bits para que você possa rodar os sensacionais sistemas operacionais de 16 bits. Ainda hoje, qualquer Quad Core realiza o boot de acordo com aquele procedimento do post 2, ou seja, você ainda está em modo real (16 bits) durante o boot.

A BIOS possui inúmeras funções para facilitar a sua vida em modo real (de 16 bits). Porém, ao invés de ficar descrevendo-as, vou enviá-los para o site que eu utilizo como referência, o Ralf Brown Interrupt Jump Table. Dê uma olhada especialmente nas interrupções 0×10 (de manipulação de vídeo) e 0×13 (acesso ao disco rígido/disquete).

No boot a BIOS carrega o primeiro setor do disco (MBR no caso de HDs) de boot na memória e, se o mesmo contiver uma flag nos dois últimos bytes do setor (0×55AA), passa a executar o código presente nesse setor. Caso estes dois bytes não estejam presentes, a BIOS passa para o próximo disco de boot. Como a BIOS está rodando em modo real (16 bits), o código nesse setor também tem de ser escrito para rodar em modo real.

Mas vovô, e o modo protegido (de 32 bits)? É função do sistema operacional mudar para o modo protegido (de 32 bits) na arquitetura x86, porém para isso é necessário que o código inicial carregue mais informações do disco (vocês irão ver todas as dificuldades desse trabalho nos próximos posts), mostre a bela mensagem de “Carregando…” na tela e talvez espere alguma entrada do teclado (como o LILO ou o GRUB fazem).

No próximo artigo veremos o uso das inerrupções citadas anteriormente ao vivo no próximo artigo sobre MBR.

Deixe uma resposta