Udział programu BIOS podczas rozruchu komputera.


    Po włączeniu komputera elektronika "myśląca" znajduje się w stanie totalnego chaosu. Na szczęście procesor trafia pod adres FOOOh:FFFOh gdzie "zamieszkuje" BIOS płyty głównej. Zaczyna przetwarzać zapisany tu kod, którego większość jest skompresowana i potrzebuje więcej przestrzeni życiowej w postaci RAM-u. W tym celu podstawowy system wejścia/wyjścia musi wykryć podłączony sprzęt, uruchamiając procedury diagnostyczne
POST (Power On Self Test). Procesor w nagrodę jest analizowany jako pierwszy a po nim następuje inicjowanie chipsetu płyty głównej. Najwyższy priorytet otrzymuje kontroler pamięci potrzebny do rozpakowania BIOS-u.
    Inicjacja podzespołów płyty głównej jest wykonywana podobnie jak kontrolera pamięci. Aby przygotować do działania wymieniony kontroler procedura Post pobiera ustawienia SETUP-u z pamięci CMOS i zapisuje je w rejestrze kontrolera. Czyli jeżeli wybraliśmy ustawienie SPD w opcji
Configure SDRAM TIMING By to konfiguracja podzespołu będzie zgodna z pobranymi z pamięci SPD informacjami i od tej pory kontroler wie jak zarządzać modułami pamięci.
    Procedury POST dodatkowo oprócz konfiguracji sprzętu wykorzystują instrukcje warunkowe do optymalizacji działania np: procesu przeszukiwania napędów z zainstalowanym systemem operacyjnym. Ponieważ w pamięci roboczej kod Biosu jest już rozpakowany to kolejno testuje i inicjuje pozostałe podzespoły płyty głównej. BIOS rządzi twoim komputerem a Ty, co teraz robisz? A właśnie w tej chwili od Ciebie zależy dalsze działanie procedur POST.
Jeżeli opcję Plug&Play OS ustawiłeś na Disabled to BIOS musi wszystkim urządzeniom przydzielić zasoby (przerwanie itd), ponieważ uważa że system nie obsługuje standardu Plug&Play. Myślę jednak,że masz ustawienie Eneblad lub Yes co spowoduje przydzielenie zasobów tylko urządzeniom biorącym udział w uruchamianiu systemu (kontroler EIDE, karta sieciowa, kontroler dyskietek). POST wykonuje jeszcze ostatnie zadanie .
Znajduje MBR (Master Boot Record), a procesor wykonuje zawarty w nim kod i rozpoczyna się uruchamianie systemu operacyjnego.
W Windows XP uruchomieniem systemu zajmuje się NTLdr (NT Loader).
  - Jako pierwszy uruchamia program NTDETECT.COM analizujący komputer i po pobraniu informacji z Bios-u zapisuje je w rejestrze w kluczu "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION".
  - Następnie wczytuje tak zwany HAL czyli Hordware Abstraction Layer. Jest to warstwa oddzielająca system operacyjny od płaszczyzny sprzętowej. Wersja HAL zapisana zostaje w Rejestrze w kluczu "HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\Hardware Abstraction Layer"

0x01 graphic


   
oraz w Mendżerze urządzeń.

0x01 graphic


Rodzaj warstwy HAL zależy od ilości procesorów , kontrolera przerwań (PIC czy APIC) oraz ACPI i jeżeli wpis wygląda następująco ACPI 1.0-APIC platform UP to znaczy, że komputer obsługuje ACPI oraz APIC z jednym procesorem - UP(uniprocesor).
  - Teraz NTLdr wczytuje sterowniki urządzeń potrzebnych do uruchomienia systemu pobierając z Rejestru z klucza "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" tylko te które mają przyporządkowaną dla
0x01 graphic
Start wartość (0)"

0x01 graphic


 
- NT Loader może teraz uruchomic jądro systemu czyli plik NTOSKRNL.EXE , który dla odmiany wczytuje sterowniki z wartością dla 0x01 graphic
Start wynoszącą (1) z wyżej wymienionego klucza rejestru.

W trybie awaryjnym wczytywane są sterowniki wyszczególnione w kluczu "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\S
afeBoot\Minimal"

Natomiast dla
Ostatnia znana dobra konfiguracja klucz "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet"
zostanie zamieniony na "HKEY_LOCAL_MACHINE\SYSTEM\Select\LastKnownGood".

  - Windows uaktywnia procedury PLUG&PLAY zależne od warstwy HAL i przydziela zasoby urządzeniom komputera nie uwzględniając ustawień w Biosie, przydzielając przerwania konkretnym slotom. Dlatego w razie problemów najłatwiej jest pozamieniać karty PCI miejscami.