Rola BIOSu w systemie.pdf

(54 KB) Pobierz
Rola BIOSu w systemie
Rola BIOSu w systemie
Wstħp
Zgodnie z intencjami inŇynierw firmy IBM, BIOS oprcz wykonywania procedur
inicjalizujĢcych wywoþywanych po wþĢczeniu komputera miaþ sþuŇyę jako warstwa
poĻredniczĢca miħdzy systemem operacyjnym a sprzħtem. Tak zwane "usþugi BIOSu" - to
funkcje obsþugi urzĢdzeı takich jak napħdy, karta graficzna, klawiatura itp. Usþugi BIOSu
sĢ zrealizowane za pomocĢ mechanizmu przerwaı programowych - po uruchomieniu
komputera BIOS wpisuje do tablicy wektorw przerwaı adresy procedur obsþugi
odpowiednich przerwaı. System operacyjny, chcĢc wykonaę jakĢĻ operacjħ na
urzĢdzeniu, generuje przerwanie poleceniem int. System operacyjny dziaþaþ zatem w
pewnym sensie na "maszynie wirtualnej" ukrywajĢcej przed nim szczegþy sprzħtowe.
Wykorzystanie BIOSu w systemie MS-DOS
W przypadku starszych systemw operacyjnych ten model rzeczywiĻcie byþ zachowany -
bardzo czħsto wykorzystywaþy one funkcje BIOSu. Niektre systemy operacyjne mogþy
byę wrħcz nazwane "nakþadkĢ" na BIOS, poniewaŇ nie oferowaþy duŇo wiħcej niŇ obsþugħ
systemu plikw, wszystkie pozostaþe operacje wykonywane byþy przy uŇyciu wywoþaı
funkcji BIOSu. Najbardziej jaskrawym przykþadem jest system DOS - pozbawiony
wieloprogramowoĻci, ciħŇar obsþugi pamiħci zrzucaþ na programy uŇytkownika
(prymitywne rozwiĢzania w rodzaju sterownika EMM) itp. Przez wiele osb nie jest w
ogle nazywany systemem operacyjnym, na przykþad w podrħczniku programu Emacs
paragraf o uruchamianiu Emacsa pod MS-DOS zaczyna siħ tak:
This section briefly describes the peculiarities of using Emacs under the
MS-DOS "operating system"(also known as "MS-DOG").
System DOS sprowadzaþ siħ w gruncie rzeczy do dwch elementw - od strony
uŇytkownika byþa to garstka programw diagnostycznych i niewygodny interpreter
poleceı (pozbawiony historii wpisywanych poleceı za to z moŇliwoĻciĢ zmiany znaku
zachħty), od strony programisty byþ to przede wszystkim zestaw funkcji przerwania 21h,
takich jak miħdzy innymi:
Funkcja Opis
09H Wypisywanie tekstu
0AH Czytanie wiersza z klawiatury.
0FH Otwieranie pliku
13H Usuwanie pliku
14H Sekwencyjne czytanie pliku
15H Sekwencyjne pisanie w pliku
16H Tworzenie pliku
2AH Pytanie o datħ
2CH Pytanie o czas
Kod procedury obsþugi tych przerwaı wywoþywaþ przerwania BIOSu. Na przykþad przy
operacjach dyskowych wywoþywaþ funkcje przerwania 13h, przy komunikacji z klawiaturĢ
- przerwania 09h, wypisywanie na ekran - 10h, czas systemowy - 70h. Programy
uŇytkownika rwnieŇ miaþy moŇliwoĻę wywoþywania funkcji BIOSu, mogþy one rwnieŇ
ustawiaę wþasne procedury obsþugi przerwaı.
204282292.005.png 204282292.006.png 204282292.007.png
WiħkszoĻę wspþczesnych systemw operacyjnych nie komunikuje siħ ze sprzħtem
poprzez wywoþania funkcji BIOSu, ale wykorzystuje wþasne sterowniki. Dotyczy to
szczeglnie operacji dyskowych. Dzieje siħ tak z dwch powodw - po pierwsze
wywoþywanie funkcji BIOSu podczas kaŇdej transakcji dyskowej jest nieefektywne. Po
drugie starsze wersje BIOSu majĢ trudnoĻci ze wspþpracĢ z duŇymi dyskami twardymi.
Zamiast zmuszaę uŇytkownikw do aktualizowania BIOSu ( co to znaczy? ) system
operacyjny przejmuje na siebie obsþugħ urzĢdzeı.
Na potwierdzenie przedstawiamy tabelkħ prezentujĢcĢ liczbħ wywoþaı przerwaı BIOSu w
kodzie jĢdra Linuxa (wersja 2.4.20).
Plik
Numer
przerwania
Liczba
wywoþaı
arch/i386/boot/bootsect.S
0x10
9
0x13
5
0x10
1
0x11
1
arch/i386/boot/setup.S
0x13
5
0x15
11
0x16
1
0x1a
1
arch/i386/boot/video.S
0x10
31
0x16
4
arch/x86_64/boot/bootsect.S 0x13
0x10
9
4
0x10
1
0x11
1
arch/x86_64/boot/setup.S
0x13
3
0x15
4
0x16
1
0x1a
1
arch/x86_64/boot/video.S
0x10
31
0x16
4
Jak widaę Linux wykorzystuje funkcje BIOSu (takie jak wykonywanie operacji dyskowych,
wypisywanie na ekran w trybie tekstowym) tylko podczas startu systemu.
Widaę zatem, Ňe wspþczesne systemy operacyjne "obchodzĢ" BIOS i komunikujĢ siħ
bezpoĻrednio ze sprzħtem. Do wykorzystywania funkcji BIOSu sĢ natomiast zmuszeni
twrcy boot loaderw, czyli programw þadujĢcych system operacyjny. Z tego powodu
nie jest moŇliwe wystartowanie systemu operacyjnego, ktrego obraz znajduje siħ na
urzĢdzeniu, z ktrym nie wspþpracuje BIOS (lub na tej czħĻci dysku twardego, do ktrej
nie ma dostħpu). Drugim problemem, ktry napotyka siħ podczas tworzenia boot loadera
jest bardzo uboga funkcjonalnoĻę oferowana przez BIOS. Na przykþad aby boot loader
mgþ dziaþaę w trybie graficznym (tak jak program GRUB) sam musi zapewniaę obsþugħ
trybu graficznego karty.
Alternatywy dla BIOSa. Specyfikacja EFI
Podobno inŇynierowie z IBM, ktrzy opracowali BIOS, przewidywali, Ňe trafi on do okoþo
250 tysiħcy komputerw, a nastħpnie zostanie zastĢpiony innym, lepszym rozwiĢzaniem.
204282292.008.png 204282292.001.png 204282292.002.png 204282292.003.png
Staþo siħ jednak inaczej - BIOS nieprzerwanie od ponad dwudziestu lat krluje na
komputerach osobistych. Natomiast jego rola systematycznie siħ zmniejszaþa. Obecnie
wþaĻciwie jedynymi programami wykorzystujĢcymi BIOS sĢ programy þadujĢce system
operacyjny.
Z tych powodw firma Intel opracowaþa specyfikacjħ EFI (Extensible Firmware Interface).
EFI jest warstwĢ poĻredniczĢcĢ miħdzy programem þadujĢcym system operacyjny a
sprzħtem. Ponadto system operacyjny juŇ po uruchomieniu moŇe wywoþywaę funkcje EFI.
RŇnicĢ w stosunku do tradycyjnego modelu, w ktrym sterowniki urzĢdzeı takich jak
karty graficzne, sieciowe itp. umieszczane sĢ jako firmware w pamiħci ROM, jest fakt, Ňe
wedþug specyfikacji EFI sterowniki mogĢ byę zapisywane na twardym dysku (patrz dalej).
Ponadto nie bħdĢ one napisane w assemblerze, lecz w C.
DuŇym zyskiem jest fakt, Ňe juŇ w chwili uruchomienia boot loadera ma on do dyspozycji
bogate Ļrodowisko - tryb graficzny, stos TCP/IP itp. To samo dotyczy programu do
konfiguracji urzĢdzeı (odpowiednika Setupa BIOSu) - nie bħdzie on juŇ nieprzyjemnĢ
aplikacjĢ w trybie tekstowym, tylko przyjaznym programem z graficznym interfejsem
uŇytkownika, ktry na dodatek moŇna uruchamiaę zdalnie.
Wprowadzenie EFI nie oznacza caþkowitej rezygnacji z BIOSu. Pþyty gþwne nadal bħdĢ
zawieraę kostkħ z BIOSem, zawierajĢcĢ instrukcje wykonywane przez procesor tuŇ po
uruchomieniu komputera. Podobnie jak dzieje siħ to dotychczas, pierwszym krokiem
bħdzie sprawdzenie pamiħci, wykrycie twardych dyskw itp. Na koıcu zainicjalizowany
zostanie interfejs EFI. OczywiĻcie sterowniki urzĢdzeı nie zostanĢ zamieszczone w
pamiħci flash BIOS (po pierwsze koĻci majĢ ograniczonĢ pojemnoĻę, po drugie dodanie
nowego sterownika oznaczaþoby koniecznoĻę uaktualnienia pamiħci flash), tylko zapisane
na specjalnie wydzielonym obszarze twardego dysku. Ta czħĻę specyfikacji jest
przedmiotem wielu kontrowersji, poniewaŇ specyfikacja okreĻla, Ňe ten obszar dysku
powinien byę partycjĢ logicznĢ z systemem plikw FAT 32 o rozmiarze rwnym 1%
rozmiaru caþego dysku. Na partycji oprcz sterownikw moŇna zamieszczaę kod boot
loaderw oraz rŇnego rodzaju narzħdzia diagnostyczne.
Linki
· Funkcje przerwania 21h http://www.binboy.org/index.php?show=ados.htm
· Strona gþwna projektu EFI http://www.intel.com/technology/efi/
· Wprowadzenie do EFI
http://www.intel.com/update/departments/initech/it10012.pdf
· FAQ na temat EFI ze strony American Megatrends
http://www.ami.com/products/efi/faq.cfm
204282292.004.png
Zgłoś jeśli naruszono regulamin