... il boot-sector loader carica i 512 byte dei dati di un dischetto che risiede all'indirizzo di memoria 0x7C00 (se ho ragione) nella RAM
...
Poiché la macchina si sta avviando, la RAM deve essere vuota, quindi il bootloader è stato caricato a 0x0000 della RAM?
No. 0000:7C00
fa riferimento a un indirizzo RAM . RAM significa "Random Access Memory", significa che ogni posizione nella memoria è accessibile direttamente. Non c'è niente come "RAM vuota". Puoi anche fare riferimento alla funzione di interrupt INT13 "Read Sectors From Drive":uno dei parametri (passato in ES:BX
) deve indicare l'indirizzo di destinazione in cui verranno archiviati i contenuti del settore. Quindi, ciò che fa il BIOS è caricare 512 byte dall'unità e memorizzarli in 0000:7C00
a 0000:7DFF
, quindi passa a 0000:7C00
per eseguire il codice del boot loader principale.
Qualche articolo/libro che dovrei leggere per familiarizzare con i kernel, ecc.?
Questo Wiki è molto utile:http://wiki.osdev.org/Main_Page. Per il processo di avvio, guarda http://wiki.osdev.org/Boot_Sequence.