Nella fase di POST ci sono soltanto due protagonisti, il BIOS ( Basic Input Output System ) ed il CMOS. Queste parti sono l’hardware di un computer ed il tutto risiede sulla scheda madre. Nel CMOS è memorizzata la descrizione di alcuni dispositivi hardware molto importanti per il funzionamento del computer, come la configurazione dei dischi rigidi o il tipo di scheda video installata.
Tramite un’opportuna interfaccia grafica l’utente può pilotare il comportamento dell’hardware come ad esempio la cache del disco rigido. Il BIOS contiene invece una serie di procedure, scritte in linguaggio assembler, per gestire l’hardware del computer. In pratica il BIOS può essere considerato come una libreria di funzioni per mezzo della quale il programmatore può interagire con l’hardware della macchina. Il BIOS si occupa sostanzialmente di due operazioni: fare il check-up dell’hardware e la lettura del sistema operativo dall’hard disk o altro supporto. Il BIOS deve quindi verificare l’hardware del computer e poi lasciare il controllo di questo al sistema operativo, se ci fosse qualcosa che non funziona il BIOS avvertirà l’utente con una serie di bip sonori.
All’accensione di un computer, gli ingegneri che hanno progettato l’hardware hanno fatto in modo che la CPU sia pronta ad eseguire un piccolo programma contenuto nel BIOS, ecco le fasi salienti che le istruzioni contenute nel programma compiono:
- Verifica della CPU – Il sistema operativo è la parte software della procedura e per eseguirla occorre avere una CPU che deve essere funzionante. Per verificare il corretto funzionamento della CPU si fa inserire a quest’ultima dei numeri in tutti i registri ( ax, bx, cx.. in una CPU x86 ) ed alla fine delle istruzioni si legge il valore di una cella di un registro, se il valore trovato è diverso da quello inserito allora il BIOS fa emettere 5 bit continui alla macchina.
- Verifica del ROM BIOS – Questo test serve per assicurarsi della consistenza del contenuto del BIOS, la procedura calcola una sorta di CRC comparato con quello precalcolato in fase di memorizzazione della ROM, se il test fallisce abbiamo 9 bip continui.
- Verifica del controller della tastiera – Il BIOS spedisce al controller della teastiera il comando esadecimale AA e di risposta è atteso il valore esadecimale 55, se qualcosa fallisce il BIOS emette 6 bip consecutivi.
- CMOS – La verifica del CMOS viene messa in una parte della memoria e se questo test ha avuto esito negativo il sistema operativo mostrerà un messaggio visivo all’utente.
- Channel 2,1,0 timer – Se questo test ha esito negativo il BIOS emette dei bit sonori, altrimenti se c’è qualche problema minore il risultato viene messo in una parte della memoria in modo che il sistema operativo lo mostri all’utente solo dopo aver verificato la scheda video.
- Memory Refresh – Viene verificato il tempo necessario ad eseguire un’operazione di refresh.
- Base 64KB RAM – Viene verificata la lettura e scrittura di tutte le celle dei primi 64 KByte di RAM, se il test fallisce il BIOS emetterà 3 bip sonori.
- CACHE Memory Test – L’algoritmo è simile al precedente, solo che in questo caso vengono considerate anche le caratteristiche del CMOS.
- Batteria del CMOS, options set & checksum – Verifica il registro di stato del CMOS e del funzionamento dell’alimentazione.
- Verifica del tipo di video – Se il BIOS non può utilizzare la scheda video allora verranno emessi degli opportuni bip sonori di errore.
- Protected Mode – Tramite la procedura ( interrupt ) numero 15 del BIOS ( servizio 89 ), si esegue lo switch del processore in modalità protetta.
Non mi dilungo su tutti gli altri test, ma sono molti, questo per fare in modo che tutto sia pronto a dare il controllo al sistema operativo, la conosciutissima fase di Boot-Strap, parola inglese che significa letteralmente “farcela da sé con le proprie forze”.