Ou “O que acontece depois que eu aperto o botão pra ligar o PC” x]
Bom, na verdade,a maior parte não interessa mesmo, você quase não vai depender de nada do que acontecer aqui, e quando for, eu vou recordar, mas sempre tem gente querendo saber demais então vou explicar.
Em primeiro lugar, durante o boot, o mundo é de 16 bits. O processador está operando em 16 bits, a BIOS está em 16 bits e você também estará no começo do seu OS. Se você não sabe o que isso significa, vá ler um tutorial de assembly, mas pra ter uma idéia, em modo de 16 bits, você acessa por padrão apenas os 16 primeiros bits dos registradores, podendo armazenar até 65536 valores. Isso se refere às instruções também e ao acesso de memória. Felizmente você terá acesso à até aproximadamente 1MB de memória, mas isso fica para o próximo post.
O processador, através de uma avançada técnica insere no registrador IP o endereço 0xFFF0 e em CS o segmento 0xF000 (veremos segmentos no próximo post). Isso te joga no endereço 0xFFFF0 (os macacos-velhos notarão que isso é 1048560, ou seja, o processador executará a instrução no endereço 16 bytes abaixo de 1 MB) e o que tem lá??? Uma instrução jmp x]
O jmp vai mandar o fluxo de execução do processador direto para o BIOS. O BIOS geralmente é mapeado no segmento 0xF000 (não me pergunte como). O BIOS fará sua mágica (que não nos interessa como, por enquanto) e depois irá verificar se o disco de boot existe, e se é bootável mesmo. Se for, o BIOS lerá alguns bytes do disco e mandará esses dados para a memória. Por um acaso, o que existe nesses bytes, num HD, é a MBR.
Para entendermos o que é a MBR, antes temos de conhecer a memória quando o processador está em modo de 16 bits e um pouco de geometria de disco. Os próximos posts abordarão, respectivamente, estes dois assuntos e teremos um post sobre utilização do BIOS antes de entrarmos em detalhes sobre o que a MBR tem de fazer.