BIOS interrupt opkald

BIOS afbryder opkald er et anlæg, operativsystemer og programmer bruger til at påberåbe faciliteterne i Basic Input / Output System på IBM PC-kompatible computere. Traditionelt er BIOS opkald hovedsagelig bruges af MS-DOS-programmer og nogle andre software som opstartsindlæsere BIOS kun kører i den virkelige adresse tilstand af x86 CPU, så programmer, der kalder BIOS enten skal også køre i real mode eller skal skifte fra beskyttede tilstand til real mode, før du ringer BIOS og derefter skifte tilbage igen. Af denne grund, moderne operativsystemer, der bruger CPU'en i beskyttet tilstand generelt ikke bruger BIOS til at understøtte systemet fungerer, selv om nogle af dem bruger BIOS til at undersøge og initialisere hardware ressourcer i løbet af deres tidlige stadier af opstart.

I alle computere, software instruktioner styrer den fysiske hardware fra det øjeblik, strømmen er tændt. I en PC, BIOS, præinstalleret i ROM på bundkortet, tager kontrol umiddelbart efter processoren er nulstillet, herunder under opstart, eller når der trykkes på en hardware reset-knap. BIOS initialiserer hardware, fastslår, belastninger og kører boot-programmet, og giver grundlæggende hardware kontrol til operativsystemet kører på den maskine, som normalt er et styresystem, men kan være en direkte-opstart enkelt softwareprogram.

Mange moderne operativsystemer omgå den indbyggede BIOS afbryder kommunikationssystem helt, men foretrækker at bruge deres egen software til at styre vedhæftede hardware direkte. Den oprindelige årsag til dette var primært, at disse operativsystemer kører processoren i beskyttet tilstand, mens kalde BIOS kræver skifte til real mode og tilbage igen, og skifte til reelle tilstand er langsom. Men der er også alvorlige sikkerhedsmæssige årsager til ikke at skifte til real mode, og BIOS-koden har begrænsninger i både funktionalitet og hastighed, der motiverer operativsystemet designere til at finde en erstatning for det. Faktisk de hastighedsbegrænsninger i BIOS gjort det almindeligt, selv i MS-DOS æra for programmer at omgå det for at undgå dens virkningsfulde, især for video display grafik og hurtigt seriel kommunikation. Problemerne med BIOS-funktionalitet omfatter begrænsninger i udvalget af funktioner defineret, inkonsistens i delmængder af disse funktioner understøttes på forskellige computere, og variationer i kvaliteten af ​​bios'er. Ved at tage sagen i egen hånd og undgå afhængighed af BIOS, kan drifts- systemudviklere eliminere nogle af de risici og komplikationer, de står skriftligt og støtte systemsoftware. På den anden side, ved at gøre det de udviklere, bliver ansvarlig for at give "bare-metal" driversoftware for hver andet system eller perifer enhed de agter for deres operativsystem til at arbejde med. Det bør således være klart, at kompakte operativsystemer udviklet på små budgetter ville have tendens til at bruge BIOS tungt, mens de store operativsystemer bygget af enorme grupper af software ingeniører med store budgetter ville oftere vælger at skrive deres egne chauffører i stedet for at bruge BIOS, der er, selv uden at overveje kompatibilitetsproblemer af BIOS og beskyttet tilstand.

For IBMs vedkommende de givet alle de nødvendige oplysninger til at bruge deres BIOS helt eller til direkte at udnytte den hardware og undgå BIOS helt, når programmering de tidlige IBM PC modeller. Fra begyndelsen, programmører havde valget mellem at bruge BIOS eller ej, på en per-hardware-perifer basis. I dag BIOS i en ny pc understøtter stadig de fleste, hvis ikke alle, af BIOS interrupt funktionskald defineret af IBM til IBM AT, sammen med mange flere nyere, plus udvidelser til nogle af originalerne. Dette, kombineret med en tilsvarende grad af hardware-kompatibilitet, betyder, at de fleste programmer skrevet til en IBM AT stadig kan køre korrekt på en ny pc i dag, under forudsætning af, at den hurtigere hastighed i udførelsen er acceptabel. På trods af de betydelige begrænsninger af de tjenester, adgang til via BIOS interrupts, har de vist særdeles nyttige og holdbare til den teknologiske udvikling.

Formål med BIOS opkald

BIOS afbryder opkald udføre hardware kontrol eller I / O-funktioner, som et program anmodet, retursystem oplysninger til programmet, eller gøre begge dele. Et centralt element i formålet med BIOS opkald er abstraktion BIOS opkald udfører generelt definerede funktioner, og de specifikke detaljer i, hvordan disse funktioner udføres af den særlige hardware i systemet er indkapslet i BIOS og skjult fra programmet. Så for eksempel, et program, der ønsker at læse fra en harddisk behøver ikke at vide, om harddisken er et ATA, SCSI eller SATA-drev. Programmet behøver kun at identificere antallet af drevet den ønsker at få adgang til og adressen på sektoren den har brug for at læse eller skrive, og BIOS vil tage sig af at oversætte denne generelle anmodning i den specifikke række elementære operationer, der er nødvendige for at fuldføre opgave gennem den særlige disk controller hardware, der er tilsluttet til dette drev. Programmet er befriet fra at skulle vide, hvordan man styrer på et lavt niveau enhver form for harddisk, som det kan være nødvendigt at få adgang. Dette både gør programmering operativsystemer og applikationer lettere og gør programmerne mindre, reducere dobbeltarbejde programkode, som den funktionalitet, der er inkluderet i BIOS behøver ikke at indgå i hvert program, der har behov for det; relativt korte opkald til BIOS indgår der i stedet.

BIOS befrier også computer hardware designere bliver tvunget til at opretholde præcise hardware kompatibilitet med gamle systemer, når designe nye systemer, for at opretholde kompatibilitet med eksisterende software. For eksempel tastaturet hardware på IBM PCjr virker meget anderledes end tastaturet hardware på tidligere IBM PC modeller, men til programmer, der bruger tastaturet kun gennem BIOS, denne forskel er næsten usynlig.

Ud over at give adgang til hardware faciliteter, giver BIOS tilføjede faciliteter, der er implementeret i BIOS-software. For eksempel BIOS fastholder separate markøren positioner i op til otte tekst display sider og giver mulighed for TTY-lignende effekt med automatisk linje wrap og fortolkning af basale kontrol figurer som vognretur og linjeskift, mens CGA-kompatible tekstdisplay hardware har kun én global markøren og kan ikke automatisk rykke markøren eller fortolke kontrol tegn.

Calling BIOS: BIOS-software afbryder

Operativsystemer og anden software kommunikerer med BIOS software, med henblik på at kontrollere den installerede hardware, software via interrupts. En software interrupt er en specifik række det generelle begreb en interrupt. En afbryder er en mekanisme, hvorved CPU kan rettes til stoppe udførelsen af ​​main-line programmet og straks at udføre et særligt program, kaldet en Interrupt service rutine i stedet. Når ISR færdig, CPU'en fortsætter med hovedprogrammet. På x86 CPU'er, at ISR ringe til, når en interrupt opstår findes ved at slå det op i en tabel over deres adresser i hukommelsen. En interrupt påberåbes af dets type nummer, fra 0 til 255; typenummeret anvendes som et indeks ind i denne tabel; adressen i tabellen er adressen på ISR, der vil løbe som reaktion på interrupt. En software interrupt er simpelthen en interrupt, der er udløst af en software-kommando; derfor, software afbryder funktion som subrutiner, med den væsentligste forskel, at programmet, der gør en software interrupt opkald ikke behøver at kende adressen på ISR, kun dens interrupt nummer. Dette har fordele for modularitet, kompatibilitet og fleksibilitet i systemkonfigurationen.

BIOS afbryder opkald kan opfattes som en mekanisme til at føre meddelelser mellem BIOS og operativsystemet eller anden BIOS klientsoftware. Meddelelserne anmode data eller handling fra BIOS og returnere de ønskede data, status information og / eller produktet af den ønskede handling til den, der ringer. Meddelelserne er opdelt i kategorier, hver med sin egen interrupt nummer, og de fleste kategorier indeholder underkategorier, kaldet "Funktioner" og identificeret af "funktionen numre". En BIOS-klient passerer fleste oplysninger til BIOS i CPU registre, og modtager de fleste oplysninger tilbage på samme måde, men data er for stor til at passe i registre, såsom tabeller af kontrol parametre eller disk sektor data til disk overførsler, føres ved at afsætte en buffer i hukommelsen og passerer adressen på bufferen i registre. Det interrupt nummer er angivet som parameter af softwaren interrupt instruktion, og funktionen nummer er angivet i AH registeret; det vil sige, den, der ringer indstiller AH register til nummeret på den ønskede Generelt BIOS tjenester, der svarer til hver afbryder antallet fungere uafhængigt af hinanden, men de funktioner inden for et interrupt tjeneste håndteres af det samme BIOS programmet og er ikke uafhængige .

BIOS software normalt vender tilbage til den, der ringer med en fejlkode, hvis ikke lykkes, eller med en statuskode og / eller ønskede data hvis det lykkes. Selve dataene kan være så lille som én bit eller så stor som 65.536 bytes af hele rå disk sektorer. BIOS er blevet udvidet og forbedret gennem årene mange gange af mange forskellige selskaber, og desværre er resultatet af denne udvikling er, at ikke alle BIOS-funktionerne, der kan kaldes brug konsekvente konventioner til formatering og kommunikere data, eller for at rapportere resultater. Nogle BIOS-funktionerne indberette detaljerede oplysninger status, mens andre måske ikke engang rapportere succes eller fiasko, men bare vende stille, forlader den, der ringer til at påtage succes. Nogle gange kan det også være svært at afgøre, hvorvidt en bestemt BIOS funktionskald understøttes af BIOS på en bestemt computer, eller hvad grænserne for en call parametre er på den pågældende computer.

Fordi BIOS afbryder opkald bruger CPU-register-baserede parameter forbifarten, er de opkald orienteret til at være lavet af assembler og kan ikke direkte lavet fra de fleste højt niveau sprog. Dog kan et højt niveau sprog giver et bibliotek af wrapper rutiner, som oversætter parametre fra formularen bruges af højniveausprog til registret baserede form, der kræves af BIOS, derefter tilbage til HLL kalder konvention efter BIOS afkast. I nogle varianter af C, kan BIOS opkald foretages ved hjælp af inline forsamling sprog inden for en C-modul.

Påberåbe en interrupt

Påberåbe en afbryder kan gøres ved hjælp af INT x86 assembler instruktion. For eksempel, for at udskrive et tegn på skærmen ved hjælp af BIOS afbryder 0x10, kan følgende x86 forsamling sprog instruktioner udføres:

Interrupt bord

En liste over almindelige BIOS interrupt klasser kan findes nedenfor. Bemærk, at nogle BIOS'er ikke gennemføre alle disse interrupt klasser.

BIOS bruger også nogle interrupts til relæ hardware begivenhed afbryder til programmer, der vælger at modtage dem, eller at route beskeder til eget brug. Nedenstående tabel omfatter kun de BIOS interrupts, som er beregnet til at blive kaldt af programmer til at anmode om tjenester eller oplysninger.

DOS kroge

På MS-DOS-systemer, Io.sys kroge INT 13 for diskette forandring afsløring, sporing formatering opkald, korrigere DMA grænse fejl, og arbejde omkring problemer i IBMs ROM BIOS "01/10/84" med modelkode 0xFC før det første opkald .

: Udføre BASIC

 traditionelt sprang til en implementering af BASIC lagret i ROM. Denne indkaldelse vil typisk påberåbes, hvis BIOS ikke var i stand til at identificere eventuelle startdisk mængder ved opstart.

På det tidspunkt den oprindelige IBM PC blev udgivet i 1981, BASIC i ROM var et centralt element. Moderne populære personlige computere, såsom Commodore 64 og Apple II linjen havde også Microsoft Cassette BASIC i ROM, så i en væsentlig del af dens tilsigtede marked, IBM PC behov BASIC at konkurrere. Som på de andre systemer, IBM PC ROM BASIC tjente som en primitiv diskløs operativsystem, så brugeren kan indlæse, gemme og køre programmer, samt at skrive og forfine dem.

Som tiden gik, og BASIC ikke længere blev leveret på alle pc'er, ville dette interrupt blot vise en fejlmeddelelse om, at der ikke kan startes fra volumen blev fundet; i andre BIOS-versioner ville bede brugeren om at indsætte en bootbar volumen og trykker på en tast, og derefter efter at brugeren trykker på en tast det ville sløjfe tilbage til bootstrap loader til at prøve at starte op igen.

Digitals Rainbow 100B plejede at kalde sin BIOS, som var uforenelig med IBM BIOS. Turbo Pascal, Turbo C og Turbo C ++ repurposed INT 18 for tildeling og personsøgning hukommelse. Andre programmer også genbrugt denne vektor til deres egne formål.

  0   0
Forrige artikel 514. Air Mobility Wing
Næste artikel Chiverton Cross

Kommentarer - 0

Ingen kommentar

Tilføj en kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tegn tilbage: 3000
captcha