Volání přerušení systému BIOS - BIOS interrupt call

Volání přerušení systému BIOS je nástroj, který operační systémy a aplikační programy používají k vyvolání zařízení softwaru Basic Input/Output System na počítačích kompatibilních s IBM PC . Volání systému BIOS tradičně používají hlavně programy DOS a některý další software, jako jsou zavaděče (včetně, většinou historicky, relativně jednoduchého aplikačního softwaru, který se spouští přímo a běží bez operačního systému - zejména herního softwaru). BIOS běží v režimu skutečné adresy (Real Mode) x86 CPU, takže programy, které volají BIOS, musí buď běžet také v reálném režimu, nebo se musí přepnout z chráněného režimu do reálného režimu, než zavoláte BIOS a poté se přepnete zpět. Z tohoto důvodu moderní operační systémy, které používají CPU v chráněném nebo dlouhém režimu, obecně nepoužívají volání přerušení systému BIOS k podpoře funkcí systému, ačkoli používají volání přerušení systému BIOS ke zjišťování a inicializaci hardwaru během spouštění . Skutečný režim má omezení paměti 1 MB, moderní zavaděče (např. GRUB2 , Windows Boot Manager ) používají nereálný režim nebo chráněný režim (a provádějí volání přerušení systému BIOS v režimu Virtual 8086 , ale pouze pro spouštění operačního systému), aby získali přístup až 4 GB Paměť.

Ve všech počítačích řídí softwarové pokyny fyzický hardware (obrazovka, disk, klávesnice atd.) Od okamžiku zapnutí napájení. V počítači BIOS převzatý z ROM na základní desce přebírá kontrolu bezprostředně po resetování procesoru, a to i během zapnutí, při stisknutí tlačítka pro reset hardwaru nebo při kritickém selhání softwaru ( trojitá chyba ). způsobí, že obvody základní desky automaticky spustí hardwarový reset. BIOS testuje hardware a inicializuje jeho stav; vyhledá, načte a spustí zaváděcí program (obvykle zavaděč operačního systému a historický ROM BASIC ); a poskytuje základní hardwarové ovládání softwaru běžícího na počítači, což je obvykle operační systém (s aplikačními programy), ale může to být přímo zaváděcí jediná softwarová aplikace.

Pokud jde o IBM, poskytly při programování raných modelů počítačů IBM (před PS/2) všechny informace potřebné k úplnému využití systému BIOS nebo k přímému využití hardwaru a úplnému vyhýbání se systému BIOS. Od začátku měli programátoři na základě hardwaru a periferie na výběr, zda použijí BIOS nebo ne. IBM důrazně podporovala autorství „dobře vychovaných“ programů, které přistupovaly k hardwaru pouze prostřednictvím volání BIOS INT (a volání služby DOS), aby podporovaly kompatibilitu softwaru se současnými a budoucími modely počítačů s odlišným periferním hardwarem, ale IBM to pochopila u některých vývojáři softwaru a zákazníci hardwaru, byla podmínkou schopnost uživatelského softwaru přímo ovládat hardware. Částečně to bylo proto, že služby systému BIOS neodhalily významnou podmnožinu všech hardwarových funkcí a funkcí. U dvou příkladů (mezi mnoha) jsou adaptéry MDA a CGA schopné posouvání hardwaru a sériový adaptér PC je schopen přenášet data na základě přerušení, ale systém IBM BIOS nepodporuje ani jednu z těchto užitečných technických funkcí.

Dnes BIOS v novém PC stále podporuje většinu, ne -li všechny, volání funkcí přerušení BIOSu definovaná IBM pro IBM AT (zavedeno v roce 1984), spolu s mnoha dalšími novějšími a rozšířením některých originálů ( např. rozšířené rozsahy parametrů) vyhlášené různými jinými organizacemi a kolaborativními průmyslovými skupinami. To v kombinaci s podobným stupněm hardwarové kompatibility znamená, že většina programů napsaných pro IBM AT může i dnes na novém PC fungovat správně, za předpokladu, že vyšší rychlost provádění je přijatelná (což obvykle platí pro všechny kromě her, které používají Časování na základě CPU). Navzdory značným omezením služeb přístupných prostřednictvím přerušení systému BIOS se ukázaly jako extrémně užitečné a odolné technologickým změnám.

Účel volání systému BIOS

Volání přerušení systému BIOS provádějí hardwarovou kontrolu nebo I/O funkce požadované programem, vracejí do systému informace o systému nebo dělají obojí. Klíčovým prvkem účelu volání systému BIOS je abstrakce - volání systému BIOS provádějí obecně definované funkce a konkrétní podrobnosti o tom, jak jsou tyto funkce prováděny na konkrétním hardwaru systému, jsou zapouzdřeny v systému BIOS a skryty z programu. Například program, který chce číst z pevného disku, nemusí vědět, zda je pevným diskem jednotka ATA , SCSI nebo SATA (nebo v dřívějších dobách jednotka ESDI nebo jednotka MFM nebo RLL s možná řadič Seagate ST-506 , možná jeden z několika typů ovladačů Western Digital , nebo s jiným proprietárním ovladačem jiné značky). Program potřebuje pouze identifikovat BIOSem definované číslo disku, ke kterému chce přistupovat, a adresu sektoru, který potřebuje číst nebo zapisovat, a BIOS se postará o převedení tohoto obecného požadavku do konkrétní posloupnosti požadovaných elementárních operací k dokončení úkolu prostřednictvím konkrétního hardwaru řadiče disku, který je připojen k dané jednotce. Program je zbaven nutnosti vědět, jak na nízké úrovni ovládat každý typ pevného disku (nebo grafický adaptér, rozhraní portu nebo periferie hodin reálného času), ke kterému může potřebovat přístup. To jednak usnadňuje programování operačních systémů a aplikací, jednak zmenšuje programy a omezuje duplikaci programového kódu, protože funkce, které jsou součástí systému BIOS, nemusí být součástí každého programu, který to potřebuje; v programech jsou místo toho zahrnuta relativně krátká volání do systému BIOS. (V operačních systémech, kde se nepoužívá BIOS, volání služeb poskytovaná samotným operačním systémem obecně plní stejnou funkci a účel.)

Systém BIOS také osvobozuje konstruktéry počítačového hardwaru (do té míry, že jsou programy psány tak, aby používaly výhradně BIOS), aby nemuseli při navrhování nových systémů udržovat přesnou hardwarovou kompatibilitu se starými systémy, aby byla zachována kompatibilita se stávajícím softwarem. Například hardware klávesnice na IBM PCjr funguje velmi odlišně než hardware klávesnice na dřívějších modelech IBM PC, ale u programů, které používají klávesnici pouze prostřednictvím systému BIOS, je tento rozdíl téměř neviditelný. (Jako dobrý příklad na druhé straně tohoto problému značný podíl počítačových programů používaných v době, kdy byl PCjr představen, nepoužíval výhradně klávesnici prostřednictvím systému BIOS, takže IBM do PCjr zahrnula také hardwarové funkce pro emulaci jak funguje původní hardware klávesnice IBM PC a IBM PC XT . Emulace hardwaru není přesná, takže ne všechny programy, které se pokoušejí přímo použít hardware klávesnice, budou na PCjr fungovat správně, ale všechny programy, které používají pouze služby klávesnice systému BIOS, budou .)

Kromě poskytnutí přístupu k hardwarovým zařízením poskytuje BIOS další zařízení, která jsou implementována v softwaru BIOS. Například BIOS udržuje oddělené pozice kurzoru až pro osm stránek zobrazení textu a zajišťuje výstup podobný TTY s automatickým zalamováním řádků a interpretací základních řídicích znaků, jako je návrat na začátek řádku a posun řádku, zatímco hardware pro textový displej kompatibilní s CGA má pouze jeden globální kurzor zobrazení a nemůže kurzor automaticky posunout dopředu, použijte pozici kurzoru k adresování paměti displeje (abyste určili, která buňka znaků bude změněna nebo prozkoumána) nebo interpretujte řídicí znaky. Jiným příkladem je, že rozhraní klávesnice systému BIOS interpretuje mnoho úhozů a kombinací kláves, aby sledovalo různé stavy posunu (levý a pravý Shift , Ctrl a Alt ), aby po stisknutí Shift + PrtScrn zavolalo službu Print Screen a restartovalo se po stisknutí Ctrl + Alt + Del systém sleduje stav zámku (Caps Lock, Num Lock a Scroll Lock) a v počítačích třídy AT ovládá odpovídající indikátory stavu zámku na klávesnici a provádět další podobné interpretační a manažerské funkce pro klávesnici. Naproti tomu běžné možnosti standardního hardwaru klávesnice PC a PC-AT jsou omezeny na hlášení systému každé primitivní události stisknutí nebo uvolnění jednotlivé klávesy (tj. Přechod ze stavu „uvolněno“ do stavu „stlačeno“ stav nebo naopak), provedení příkazového resetu a autotestu klávesnice a u klávesnic třídy AT provedení příkazu z hostitelského systému k nastavení absolutních stavů indikátorů stavu zámku (LED).

Volání systému BIOS: Software BIOS se přeruší

Operační systémy a další software komunikují se softwarem BIOS za účelem ovládání nainstalovaného hardwaru prostřednictvím softwarových přerušení. Softwarové přerušení je specifickou rozmanitostí obecného konceptu přerušení. Přerušení je mechanismus, kterým lze CPU přesměrovat tak, aby zastavilo provádění programu hlavní řady a místo toho okamžitě spustilo speciální program, nazývaný Interrupt Service Routine (ISR). Jakmile ISR skončí, CPU pokračuje v hlavním programu. Když na CPU x86 dojde k přerušení, ISR pro volání je nalezeno vyhledáním v tabulce adres počátečního bodu ISR (nazývané „vektory přerušení“) v paměti: Tabulka vektorů přerušení (IVT). Přerušení je vyvoláno jeho typovým číslem od 0 do 255 a číslo typu je použito jako index do tabulky přerušení vektoru a v tomto indexu v tabulce je nalezena adresa ISR, která bude spuštěna v reakci na přerušení. Softwarové přerušení je jednoduše přerušení, které je spuštěno softwarovým příkazem; proto softwarová přerušení fungují jako podprogramy, s hlavním rozdílem, že program, který provádí volání přerušení softwaru, nemusí znát adresu ISR, pouze jeho číslo přerušení. To má výhody pro modularitu, kompatibilitu a flexibilitu v konfiguraci systému.

Volání přerušení systému BIOS lze považovat za mechanismus pro předávání zpráv mezi systémem BIOS a klientským softwarem systému BIOS, například operačním systémem. Zprávy požadují data nebo akci ze systému BIOS a vracejí volajícímu požadovaná data, informace o stavu a/nebo produkt požadované akce. Zprávy jsou rozděleny do kategorií, z nichž každá má své vlastní číslo přerušení, a většina kategorií obsahuje podkategorie, nazývané „funkce“ a identifikované „čísly funkcí“. Klient systému BIOS předává většinu informací systému BIOS v registrech CPU a většinu informací přijímá zpět stejným způsobem, ale data příliš velká na to, aby se vešla do registrů, jako jsou tabulky řídicích parametrů nebo data diskového sektoru pro přenosy disků, jsou předávána přidělením vyrovnávací paměti. (tj. nějaký prostor) v paměti a předávání adresy bufferu v registrech. (Někdy může být v datové struktuře v paměti předáno více adres datových položek v paměti, přičemž adresa této struktury je předána systému BIOS v registrech.) Číslo přerušení je zadáno jako parametr instrukce přerušení softwaru (v jazyce sestavení Intel (instrukce „INT“) a číslo funkce je uvedeno v registru AH; to znamená, že volající nastaví registr AH na číslo požadované funkce. Služby systému BIOS odpovídající každému číslu přerušení fungují nezávisle na sobě, ale funkce v rámci jedné služby přerušení jsou zpracovávány stejným programem BIOS a nejsou nezávislé. (Tento poslední bod je relevantní pro reentrancy .)

Software BIOS se obvykle vrací volajícímu s chybovým kódem, pokud není úspěšný, nebo se stavovým kódem a/nebo požadovanými údaji, pokud je úspěšný. Samotná data mohou být tak malá, jak jeden bit, nebo až 65 536 bajtů celých sektorů surového disku (maximum, které se vejde do jednoho segmentu paměti v reálném režimu). BIOS byl v průběhu let mnohokrát rozšířen a vylepšen mnoha různými firemními entitami a bohužel výsledkem tohoto vývoje je, že ne všechny funkce systému BIOS, které lze nazvat, používají konzistentní konvence pro formátování a komunikaci dat nebo pro hlášení výsledků. Některé funkce systému BIOS hlásí podrobné informace o stavu, zatímco jiné nemusí hlásit ani úspěch nebo neúspěch, ale pouze se vracejí potichu, takže volající předpokládá úspěch (nebo testuje výsledek jiným způsobem). Někdy může být také obtížné určit, zda je v určitém počítači systémem BIOS podporováno určité volání funkce systému BIOS nebo jaké jsou limity parametrů volání v tomto počítači. (U některých neplatných čísel funkcí nebo platných čísel funkcí s neplatnými hodnotami klíčových parametrů - zejména u starší verze systému IBM BIOS - systém BIOS nemusí dělat nic a vrátit se bez chybového kódu; pak je [nepohodlnou, ale nevyhnutelnou] odpovědností volající se buď vyhne tomuto případu neprováděním takovýchto hovorů, nebo bude pozitivně testovat očekávaný účinek hovoru, místo aby předpokládal, že hovor byl účinný. Protože se BIOS v průběhu své historie v mnoha krocích značně vyvinul, je tato funkce platná v jedna verze systému BIOS od určitého dodavatele nemusí platit v dřívější nebo odlišné verzi systému BIOS od stejného dodavatele nebo ve verzi systému BIOS - jakéhokoli relativního věku - od jiného dodavatele.)

Protože volání přerušení systému BIOS používají předávání parametrů na základě registru CPU, jsou volání orientována na vytváření z jazyka sestavení a nelze je přímo provádět z většiny jazyků vysoké úrovně (HLL). Jazyk vysoké úrovně však může poskytnout knihovnu obalových rutin, které překládají parametry z formuláře (obvykle založeného na zásobníku) používaného jazykem na vysoké úrovni do registrového formuláře požadovaného systémem BIOS, a poté zpět do konvence volání HLL po BIOS se vrátí. V některých variantách C lze volání systému BIOS provádět pomocí vloženého jazyka sestavení v rámci modulu C. (Podpora pro vložený jazyk sestavení není součástí standardu ANSI C, ale je jazykovým rozšířením; proto jsou moduly C, které používají vložený jazyk sestavení, méně přenosné než čisté moduly C standardu ANSI.)

Vyvolání přerušení

Vyvolání přerušení lze provést pomocí instrukčního jazyka sestavovacího jazyka INT x86 . Chcete -li například vytisknout znak na obrazovku pomocí přerušení systému BIOS 0x10, lze provést následující pokyny pro jazyk sestavení x86:

 mov ah, 0x0e    ; function number = 0Eh : Display Character
 mov al, '!'     ; AL = code of character to display
 int 0x10        ; call INT 10h, BIOS video service

Přerušit tabulku

Seznam běžných tříd přerušení systému BIOS naleznete níže. Všimněte si toho, že některé BIOSy (zvláště ty staré) neimplementují všechny tyto třídy přerušení.

Systém BIOS také používá některá přerušení k přenosu přerušení hardwarových událostí do programů, které se rozhodnou je přijímat nebo směrovat zprávy pro vlastní použití. Níže uvedená tabulka obsahuje pouze ta přerušení BIOSu, která mají být volána programy (pomocí instrukce přerušení softwaru sestavovacího jazyka "INT") k vyžádání služeb nebo informací.

Přerušit vektor Popis
05h Provede se při stisknutí obrazovky Shift- Print , stejně jako když BOUNDinstrukce detekuje vázané selhání.
08h Toto je přerušení hodin v reálném čase. Střílí 18,2krát za sekundu. Během tohoto přerušení systém BIOS zvýší čítač denní doby.
09h Toto je přerušení klávesnice. To se obecně spouští při stisknutí klávesy na klávesnici.
10h Video služby
AH Popis
00h Nastavte režim videa
01h Nastavit tvar kurzoru
02h Nastavte pozici kurzoru
03h Získejte pozici a tvar kurzoru
04h Získejte polohu lehkého pera
05h Nastavit stránku zobrazení
06h Vymazat/posunout obrazovku nahoru
07h Vymazat/Posunout obrazovku dolů
08h Přečtěte si znak a atribut na kurzoru
09h Napište znak a atribut kurzorem
0Ah Napište znak kurzorem
0Bh Nastavte barvu ohraničení
0Ch Napište grafický pixel
0Dh Přečtěte si Grafický pixel
0Eh Napište znak v režimu TTY
0Fh Získejte režim videa
10h Nastavit registry palet (EGA, VGA, SVGA)
11h Generátor znaků (EGA, VGA, SVGA)
12h Alternativní funkce výběru (EGA, VGA, SVGA)
13h Napište řetězec
1Ah Získat nebo nastavit kombinovaný kód displeje (VGA, SVGA)
1Bh Získejte informace o funkcích (VGA, SVGA)
1Ch Uložit nebo obnovit stav videa (VGA, SVGA)
4Fh Funkce rozšíření VESA BIOS (SVGA)
11h Vrátí seznam vybavení
12h Vrátit konvenční velikost paměti
13h Nízkoúrovňové diskové služby
AH Popis
00h Resetujte diskové jednotky
01h Zkontrolujte stav disku
02h Přečtěte si sektory
03h Napište sektory
04h Ověřte sektory
05h Formát stopy
08h Získejte parametry disku
09h Inicializujte parametry pevného disku
0Ch Vyhledat specifikovanou stopu
0Dh Resetujte řadič pevného disku
15h Získejte typ disku
16h Získejte stav změny média Floppy Drive
17h Nastavte typ disku
18h Nastavte typ média disketové jednotky
41h Kontrola instalace rozšířené diskové jednotky (EDD)
42h Rozšířené oblasti čtení
43h Rozšířené sektory zápisu
44h Rozšířené ověřovací sektory
45h Zamknout/odemknout disk
46h Vysunout médium
47h Rozšířené hledání
48h Rozšířené funkce Získat parametry disku
49h Extended Get Media Change Status
4Eh Rozšířená konfigurace hardwaru
14h Služby sériového portu
AH Popis
00h Inicializace sériového portu
01h Přenášejte znak
02h Přijmout postavu
03h Postavení
15h Různé systémové služby
AH AL Popis
00h Zapněte motor kazetového pohonu (pouze IBM PC/PCjr)
01h Vypněte motor kazetového pohonu (pouze IBM PC/PCjr)
02h Čtení datových bloků z kazety (pouze IBM PC/PCjr)
03h Zápis datových bloků na kazetu (pouze IBM PC/PCjr)
4Fh Intercept klávesnice
83h Událost Počkejte
84h Číst joystick (BIOSy od roku 1986 dále)
85h Popis klíče Sysreq
86h Počkejte
87h Přesunout blok
88h Získejte velikost rozšířené paměti
89h Přepnout do chráněného režimu
C0h Získejte systémové parametry
C1h Získejte rozšířený segment datové oblasti systému BIOS
C2h Funkce polohovacího zařízení
C3h Funkce časovače hlídacího psa - pouze systémy PS/2
C4h Volba programovatelných možností - pouze systémy PS/2 sběrnice MCA
D8h Funkce systému EISA - pouze sběrnicové systémy EISA
E8h 01h Získejte velikost rozšířené paměti (novější funkce, od roku 1994). Poskytuje výsledky pro velikost paměti nad 64 Mb.
E8h 20h Mapa adresy systému dotazu. Informace vrácené z E820 nahrazují to, co je vráceno ze starších AX=E801ha AH=88hrozhraní.
16h Služby klávesnice
AH Popis
00h Přečíst postavu
01h Přečtěte si stav vstupu
02h Přečtěte si stav posunu klávesnice
05h Ukládání kláves do vyrovnávací paměti klávesnice
10h Přečtěte si Znak prodloužený
11h Stav vstupu pro čtení rozšířen
12h Přečíst stav posunu klávesnice rozšířen
17h Služby tiskárny
AH Popis
00h Tisk znaku na tiskárnu
01h Inicializace tiskárny
02h Zkontrolujte stav tiskárny
18h Execute Cassette BASIC : Na počítačích IBM až do rané řady PS/2 by toto přerušení spustilo ROM Cassette BASIC. Klony tuto funkci neměly a různé počítače/BIOSy by prováděly řadu různých akcí, pokud by byl spuštěn INT 18h, nejčastěji chybová zpráva uvádějící, že nebyl k dispozici žádný zaváděcí disk. Moderní stroje by se pokusily zavést ze sítě prostřednictvím tohoto přerušení. Na moderních počítačích bude toto přerušení zpracovávat BIOS jako signál ze zavaděče, že se mu nepodařilo dokončit svůj úkol. Systém BIOS pak může provést příslušné další kroky.
19h Po POST toto přerušení používá BIOS k načtení operačního systému. Program může toto přerušení zavolat, aby restartoval počítač (ale musí zajistit, aby přerušení hardwaru nebo operace DMA nezpůsobily zablokování nebo selhání systému během opětovné inicializace systému systémem BIOS nebo zaváděcího procesu).
1Ah Hodinové služby v reálném čase
AH Popis
00h Přečtěte si RTC
01h Nastavte RTC
02h Přečtěte si čas RTC
03h Nastavit čas RTC
04h Přečtěte si datum RTC
05h Nastavte datum RTC
06h Nastavte alarm RTC
07h Resetujte alarm RTC
1Ah Služby PCI - implementovány BIOSy podporujícími PCI 2.0 nebo novější
AX Popis
B101h Kontrola instalace PCI
B102h Najděte zařízení PCI
B103h Najděte kód třídy PCI
B106h Operace specifické pro sběrnici PCI
B108h Přečtěte si konfigurační bajt
B109h Přečtěte si konfigurační slovo
B10Ah Přečtěte si konfigurační Dword
B10Bh Zapište konfigurační bajt
B10Ch Napište konfigurační slovo
B10Dh Napište konfiguraci Dword
B10Eh Získejte rutinní informace IRQ
B10Fh Nastavte PCI IRQ
1Bh Ctrl-Break handler - volána INT 09při Ctrl- break bylo stisknuto
1Ch Obsluha časovače zaškrtnutí časovače - volá INT 08
1Dh Nesmí být volán; jednoduše ukazatel na VPT (Tabulka parametrů videa), která obsahuje data o režimech videa
1Eh Nesmí být volán; jednoduše ukazatel na DPT (Diskette Parameter Table), obsahující celou řadu informací týkajících se disketových jednotek
1Fh Nesmí být volán; jednoduše ukazatel na VGCT (Video Graphics Character Table), která obsahuje data pro znaky ASCII 80hdoFFh
41h Ukazatel adresy: FDPT = Tabulka parametrů pevného disku (1. pevný disk)
46h Ukazatel adresy: FDPT = Tabulka parametrů pevného disku (2. pevný disk)
4Ah Volán RTC pro poplach

INT 18h: spustit BASIC

INT 18htradičně skočil na implementaci Cassette BASIC (dodává Microsoft) uloženou v Option ROM . Toto volání by bylo obvykle vyvoláno, pokud by systém BIOS nemohl při spuštění identifikovat žádné svazky spouštěcího disku.

V době, kdy byl v roce 1981 vydán původní počítač IBM PC (stroj typu IBM 5150), byl BASIC in ROM klíčovou funkcí. Současné populární osobní počítače, jako je Commodore 64 a řada Apple II, měly také Microsoft Cassette BASIC v ROM (ačkoli Commodore přejmenoval jejich licencovanou verzi na Commodore BASIC), takže na podstatné části svého zamýšleného trhu potřeboval počítač IBM BASIC ke konkurenci. Stejně jako v těchto jiných systémech, ROM ROM IBM PC BASIC sloužil jako primitivní bezdiskový operační systém, který uživateli umožňoval načítat, ukládat a spouštět programy a také je zapisovat a vylepšovat. (Původní IBM PC byl také jediným počítačovým modelem od IBM, který, stejně jako jeho výše uvedení dva konkurenti, obsahoval hardware kazetového rozhraní. Základní model IBM PC měl pouze 16 KiB RAM a žádné diskové jednotky [ jakéhokoli druhu ], takže kazeta rozhraní a BASIC v ROM byly zásadní pro to, aby byl použitelný základní model.Počítač IBM s méně než 32 KiB RAM není schopen bootovat z disku.Z pěti osmi čipů ROM KiB v původním počítači IBM, celkem 40 KiB, čtyři obsahují BASIC a pouze jeden obsahuje BIOS; když je nainstalováno pouze 16 KiB RAM, ROM BASIC tvoří více než polovinu celkové systémové paměti [4/7, přesněji].)

Jak šel čas a BASIC již nebyl dodáván na všech počítačích, toto přerušení by jednoduše zobrazilo chybovou zprávu indikující, že nebyl nalezen žádný spouštěcí svazek (slavně „No ROM BASIC“ nebo více vysvětlujících zpráv v novějších verzích systému BIOS); v jiných verzích systému BIOS vyzve uživatele, aby vložil spouštěcí svazek a stiskl klávesu, a poté, co uživatel stiskl klávesu, přeskočí zpět do zavaděče bootstrapu (INT 19h) a pokusí se znovu spustit.

Digital's Rainbow 100 B INT 18hnazýval svůj BIOS, který nebyl kompatibilní s IBM BIOS. Turbo Pascal , Turbo C a Turbo C ++ přepracovaly INT 18 pro přidělování paměti a stránkování. Jiné programy také znovu použily tento vektor pro své vlastní účely.

BIOS háčky

DOS

V systémech DOS IO.SYS nebo IBMBIO.COM zavěsí INT 13 pro detekci změny diskety, sledování volání formátování, opravu chyb hranic DMA a řešení problémů v ROM BIOSu IBM „01/10/84“ s kódem modelu 0xFC před první hovor.

Vynechání systému BIOS

Mnoho moderních operačních systémů (například Linux a Windows NT ) po spuštění obchází volání přerušení systému BIOS, jádro operačního systému při spuštění přepne procesor do chráněného režimu nebo dlouhého režimu , přičemž k ovládání upřednostňuje použití vlastních programů (například ovladačů jádra ) připojený hardware přímo. Důvodem bylo především to, že tyto operační systémy provozují procesor v chráněném nebo dlouhém režimu, zatímco volání volání přerušení systému BIOS vyžaduje přepnutí do reálného režimu nebo do neskutečného režimu nebo pomocí režimu Virtual 8086 . Skutečný režim, neskutečný režim a virtuální režim 8086 jsou pomalé. Existují však také vážné bezpečnostní důvody, proč nepřepnout do skutečného režimu, a kód BIOS reálného režimu má omezení funkčnosti i rychlosti, které motivují návrháře operačních systémů, aby za něj našli náhradu. Omezení rychlosti systému BIOS ve skutečnosti dělalo běžné i v éře DOS, že jej programy obcházely, aby se vyhnuly omezením výkonu, zejména pro zobrazení grafické grafiky a rychlou sériovou komunikaci. Problémy s funkčností systému BIOS zahrnují omezení v rozsahu definovaných funkcí, nekonzistenci v podmnožinách těchto funkcí podporovaných na různých počítačích a rozdíly v kvalitě BIOSů (tj. Některé BIOSy jsou úplné a spolehlivé, jiné jsou zkrácené a chybné). Převzetím věcí do vlastních rukou a vyhýbáním se spoléhání na BIOS mohou vývojáři operačních systémů eliminovat některá rizika a komplikace, se kterými se potýkají při psaní a podpoře systémového softwaru. Na druhou stranu se tím vývojáři stanou zodpovědnými za poskytování „holého“ ovladače softwaru pro každý jiný systém nebo periferní zařízení, s nimiž zamýšlejí pracovat pro svůj operační systém (nebo za navádění výrobců hardwaru k poskytování těchto ovladačů). Mělo by tedy být zřejmé, že kompaktní operační systémy vyvinuté s nízkými rozpočty budou mít tendenci používat BIOS ve velké míře, zatímco velké operační systémy postavené obrovskými skupinami softwarových inženýrů s velkými rozpočty by se častěji rozhodly psát své vlastní ovladače místo použití BIOSu - tj. , a to i bez ohledu na problémy s kompatibilitou systému BIOS a chráněného režimu.

Viz také

Reference