BIOS a systemy operacyjne

Sterowniki urządzeń zawarte w BIOS'ie

Obsługa przerwań

Przerwania w procesorach rodziny x86 mogą być zgłaszane W momencie wywołania przerwania procesor umieszcza na stosie bieżącą zawartość rejestrów CS i IP oraz słowo stanu. I wykonuje skok do procedury obsługi przerwania. Tablica z adresami procedur obsługi poszczególnych przerwań znajduje się na początku pamięci (od adresu 0000:0000 do 0040:0000) i zawiera 256 adresów

Przerwania komputera PC zgłaszane przez procesor:

Przerwania komputera PC zgłaszane przez sprzęt:

BIOS komputerów PC wykorzystuje mechanizm przerwań do realizacji procedur obsługi urządzeń przez program użytkownika. Mechanizm ten działa w sposób następujący:

Standardowy PC przewidywał obsługę następujących urządzeń przez przerwania BIOS:

Przykładowy program przełączający kartę graficzną w tryb graficzny 320 x 200 x 256 kolorów
  xor ah, ah  ;funkcja numer 0 - zmiana trybu graficznego
mov al, 13h ;parametr - numer trybu graficznego
int 10h ;wywołanie przerwania programowego karty graficznej
Ponieważ tablica wektorów przerwań znajduje się w pamięci RAM możliwa jest podmiana programu obsługi przerwania przez program użytkownika. Pozwala to na wygodną realizację sterowników urządzeń, których nie przewidział producent komputera. I tak n.p. sterowniki myszy instalują się jako przerwanie 33h.

Mechanizm przerwań programowych jest również wykorzystywany przez systemy operacyjne do realizaji funkcji systemowych i tak wszystkie fukcje systemowe DOS'a dostępne są poprzez przerwanie 21h, a funkcje systemowe Linuxa pod przerwaniem 80h

Ograniczenia sterowników urządzeń zawartych w BIOS'ie

Dyski twarde - przerwanie 13h

Komputery standardu PC przewidziane były do pracy z dyskami IDE - BIOS obsługiwał tylko takie dyski. Niektóre kontrolery SCSI dodawały własną obsługę tego przerwania

Standardowe funkcje BIOS'u obsługujące dyski twarde przyjmowały numer cylindra z zakresu 0-1023, numer głowicy 0-255 a numer sektora od 1 do 63. Pozwalało to teoretycznie na obsługę dysków o pojemności do 8GB. Z drugiej strony pojawiały się ograniczenia standardu IDE, pozwalającego na numery cylindra od 0-65535, głowicy 0-15, numery sektora od 0-255. Dysk może mieć zatem pojemność do 128GB, jednak połączenie ograniczeń przerwania 13h i kontrolera IDE spowodowało powstanie bariery wielkości wynoszącej 504MB. Aby obejść to ograniczenie twórcy BIOS'ów musieli zastosować pewną sztuczkę.

Z punktu widzenia użytkownika nie jest tak naprawdę ważne jaka jest geometria dysku. Dotychczas sektory opisywane były trzema liczbami numerem cylindra, numerem głowicy i numerem sektora na ścieżce (CHS) - razem są to 24 bity. Nowsze BIOSy umożliwiają liniowe adresowanie sektorów i automatyczną translację 24bitowego numeru sektora na współrzędne CHS. Dzięki temu możliwa jest obsługa dysków do 8 GB. Niestety nie jesteśmy w stanie zaadresować przestrzeni powyżej tej wielkości korzystając z funkcji BIOS'a.

Oczywiście współczesne systemy operacyjne posiadają własne programy sterujące dyskami, a funcje BIOS'a używane są tylo przez program ładujący. Zatem jedyne ograniczenie polega na tym aby jądro systemu operacyjnego było zapisane w pierwszych ośmiu gigabajtach dysku.

Karty graficzne - przerwanie 10h

VGA/VESA SVGA
Standard komputera PC zatrzymał się na etapie karty VGA. Przewidywał obsługę maksymalnej rozdzielczości obrazu 640x480 przy 16 kolorach. Dodatkowe funkcje nowocześniejszych kart graficznych nie były obsługiwane przez BIOS.
W 1989 roku producenci kart graficznych ustalili standard rozszerzeń przerwania 10h, który przewidywał obsługe dodatkowych trybów graficznych do rozdzielczości 1280x1024 w maksymalnie 24bitowej głebi koloru. Realizacja tych rozszerzeń była realizowana albo przez BIOS karty graficznej, albo przez specjalny program uruchamiany przez użytkownika.
Wydajność
Podstawową operacją wykonywaną podczas pracy na karcie graficznej jest rysowanie piksela

Inne ograniczenia

Uruchamianie systemu operacyjnego

Po pomyślnym przejściu POST'u BIOS wykonuje przerwanie INT19h.
Procedura obsługująca przerwanie INT19h próbuje znaleźć system operacyjny. W tym celu wczytuje pod adres 0000:7C000 sektor zerowy z dysku twardego lub napędu dyskietek i wykonuje skok do znalezionego tam kodu. Zwykle znajduje się tam program ładujący system operacyjny lub - w przypadku dysku na którym nie ma systemu operacyjnego - program wyświetlający komunikat o błędzie.
W przypadku nie wykrycia sektora startowego wywoływane jest przerwanie INT18h.

Jak wcześniej zostało powiedziane, podczas POST'u uruchamiany jest kod zawarty w pamięciach ROM znajdujących się na kartach rozszerzeń. W przypadku kart takich jak sterowniki sieci i sterowniki dysków kod ten podmienia przerwanie INT19h na takie, które próbuje uruchomić system z danego urządzenia a w przypadku niepowodzenia wykonuje skok do poprzedniej procedury obsługi tego przerwania. Dzięki temu możemy uruchomić system z dysków SCSI oraz kart sieciowych.

Plug and Play

Architektura PC nie posiadała mechanizmu pozwalającego na automatyczne przydzielanie urządzeniom zewnętrzym zasobów takich jak porty wejścia/wyjścia, przerwania IRQ, kanały DMA, zakresy pamięci.

W przypadku kart ISA aby przydzielić urządzeniu określone zasoby należało ustawić zworki na karcie. Później w programie obsługującym dane urządzenie należało wpisać przydzielone zakresy.

W 1994 firma Intel zaproponowała standard Plug and Play na którego składały się rozszerzenia architektury ISA (architektura PCI od początku implementowała PnP) oraz BIOS'a pozwalające na automatyczne przydzielanie zasobów oraz pozwalające na odczytanie przez programy użytkownika informacji o urządzeniach zainstalowanych w systemie.

Zasada działania PnP

W przypadku szyn ISA pewnym problemem jest odizolowanie od siebie poszczególnych kart od siebie aby móc komunikować się tylko z jedną z nich. Tego problemu nie ma w przypadku szyny PCI ponieważ każde złącze ma swój unikalny numer.

Powrót do strony głównej prezentacji