Vés al contingut

Crida interrupció BIOS

De la Viquipèdia, l'enciclopèdia lliure
Exemple de localització física de la BIOS

Les implementacions de la BIOS proporcionen interrupcions que poden ser invocades pels sistemes operatius i els programes d'aplicació per utilitzar les instal·lacions del microprogramari en ordinadors compatibles amb IBM PC. Tradicionalment, les crides de BIOS les fan servir principalment els programes DOS i algun altre programari, com ara els carregadors d'arrencada (incloent, sobretot històricament, programari d'aplicació relativament senzill que s'inicia directament i s'executa sense un sistema operatiu — especialment programari de jocs). La BIOS s'executa en el mode d'adreça real (mode real) de la CPU x86, de manera que els programes que criden a la BIOS també s'han d'executar en mode real o han de canviar del mode protegit al mode real abans de trucar a la BIOS i tornar-hi a tornar. Per aquest motiu, els sistemes operatius moderns que utilitzen la CPU en mode protegit o en mode llarg generalment no utilitzen les crides d'interrupció de la BIOS per suportar les funcions del sistema, tot i que utilitzen les crides d'interrupció de la BIOS per investigar i inicialitzar el maquinari durant l'arrencada.[1] El mode real té la limitació de memòria d'1 MB, carregadors d'arrencada moderns (per exemple GRUB2, Windows Boot Manager) utilitza el mode irreal o el mode protegit (i executa les crides d'interrupció de la BIOS en el mode Virtual 8086, però només per a l'arrencada del sistema operatiu) per accedir a una memòria de fins a 4 GB.[2]

En tots els ordinadors, les instruccions del programari controlen el maquinari físic (pantalla, disc, teclat, etc.) des del moment en què s'encén l'alimentació. En un ordinador, la BIOS, carregada prèviament a la ROM a la placa base, pren el control immediatament després que la CPU es restableixi, inclòs durant l'engegada, quan es prem un botó de restabliment de maquinari o quan es produeix una fallada crítica del programari (una falla triple). fa que els circuits de la placa base activen automàticament un restabliment de maquinari. La BIOS prova el maquinari i inicialitza el seu estat; cerca, carrega i executa el programa d'arrencada (normalment, un carregador d'arrencada del SO i la ROM BASIC històrica); i proporciona un control bàsic de maquinari al programari que s'executa a la màquina, que sol ser un sistema operatiu (amb programes d'aplicació), però pot ser una aplicació de programari única d'arrencada directa.[3]

Per part d'IBM, van proporcionar tota la informació necessària per utilitzar la seva BIOS completament o per utilitzar directament el maquinari i evitar la BIOS completament, en programar els primers models de PC IBM (abans del PS/2). Des del principi, els programadors tenien l'opció d'utilitzar la BIOS o no, per perifèric de maquinari. IBM va animar fermament l'autoria de programes "de bon comportament" que accedien al maquinari només mitjançant crides INT de BIOS (i crides de servei DOS), per donar suport a la compatibilitat del programari amb models de PC actuals i futurs amb maquinari perifèric diferent, però IBM va entendre que per alguns desenvolupadors de programari i clients de maquinari, era un requisit que el programari d'usuari controlés directament el maquinari. En part, això va ser perquè un subconjunt important de totes les característiques i funcions del maquinari no va ser exposat pels serveis de la BIOS. Per a dos exemples (entre molts), els adaptadors MDA i CGA són capaços de desplaçar-se per maquinari i l'adaptador sèrie de PC és capaç de transferir dades impulsades per interrupcions, però la BIOS d'IBM no admet cap d'aquestes característiques tècniques útils.

Avui en dia, la BIOS d'un ordinador nou encara admet la majoria, si no totes, de les crides a la funció d'interrupció de la BIOS definides per IBM per a l'IBM AT (introduïda el 1984), juntament amb moltes més noves, a més d'extensions a algunes de les originals (p. ex. intervals de paràmetres ampliats) promulgats per diverses altres organitzacions i grups industrials col·laboratius. Això, combinat amb un grau similar de compatibilitat de maquinari, significa que la majoria dels programes escrits per a un IBM AT encara es poden executar correctament en un ordinador nou avui en dia, suposant que la velocitat d'execució més ràpida és acceptable (que normalment és per a tots excepte els jocs que utilitzen temporització basada en CPU). Malgrat les limitacions considerables dels serveis als quals s'accedeix a través de les interrupcions de la BIOS, han demostrat ser extremadament útils i duradors davant el canvi tecnològic.[4]

Propòsit de les crides de la BIOS

[modifica]

Les crides d'interrupció de la BIOS realitzen el control de maquinari o les funcions d'E/S sol·licitades per un programa, retornen la informació del sistema al programa o fan totes dues coses. Un element clau del propòsit de les crides de la BIOS és l'abstracció: les crides de la BIOS realitzen funcions generalment definides i els detalls específics de com s'executen aquestes funcions al maquinari particular del sistema s'encapsulen a la BIOS i s'amaguen al programa. Així, per exemple, un programa que vol llegir des d'un disc dur no necessita saber si el disc dur és una unitat ATA, SCSI o SATA (o abans, una unitat ESDI o una unitat MFM o RLL amb potser un controlador Seagate ST-506, potser un dels diversos tipus de controlador Western Digital, o amb un controlador propietari diferent d'una altra marca). El programa només necessita identificar el número definit per la BIOS de la unitat a la qual vol accedir i l'adreça del sector que necessita llegir o escriure, i la BIOS s'encarregarà de traduir aquesta sol·licitud general a la seqüència específica d'operacions elementals requerides. per completar la tasca mitjançant el maquinari del controlador de disc concret connectat a aquesta unitat. El programa s'allibera de la necessitat de saber controlar a un nivell baix tot tipus de disc dur (o adaptador de pantalla, o interfície de port, o perifèric de rellotge en temps real) als quals pugui necessitar accedir. Això alhora facilita la programació de sistemes operatius i aplicacions i fa que els programes siguin més petits, reduint la duplicació del codi del programa, ja que la funcionalitat que s'inclou a la BIOS no cal que s'inclogui en tots els programes que ho necessitin; En canvi, s'inclouen crides relativament curtes a la BIOS als programes. (En els sistemes operatius on no s'utilitza la BIOS, les crides de servei proporcionades pel propi sistema operatiu generalment compleixen la mateixa funció i finalitat).

Taula d'interrupció

[modifica]

A continuació es pot trobar una llista de classes comunes d'interrupció de la BIOS. Tingueu en compte que algunes BIOS (especialment les antigues) no implementen totes aquestes classes d'interrupció.

La BIOS també utilitza algunes interrupcions per transmetre interrupcions d'esdeveniments de maquinari als programes que decideixen rebre-les o encaminar missatges per al seu propi ús. La taula següent inclou només aquelles interrupcions de la BIOS que estan pensades per ser cridades pels programes (utilitzant la instrucció d'interrupció de programari en llenguatge ensamblador "INT") per sol·licitar serveis o informació.

Vector d'Interrupció Descripció
05h S'executa quan es prem la pantalla Shift-Print, així com quan la instrucció BOUND detecta una fallada d'enllaç.
08h Aquesta és la interrupció del rellotge en temps real. Es dispara 18,2 vegades/segon. La BIOS augmenta el comptador de l'hora del dia durant aquesta interrupció.
09h Aquesta és la interrupció del teclat. Això s'activa generalment quan es prem una tecla d'un teclat.
10h Serveis de video
11h Llista d'equips de retorn
12h Retorna la mida de memòria convencional
13h Serveis de disc de baix nivell
14h Serveis de port sèrie
15h Serveis diversos del sistema
16h Serveis de teclat
17h Serveis d'impressora
18h Executar casset BASIC: a les màquines IBM fins a la primera línia PS/2, aquesta interrupció iniciaria el casset ROM BASIC.
19h Després de la POST, la BIOS utilitza aquesta interrupció per carregar el sistema operatiu.
1Ah Serveis de rellotge en temps real
1Bh Serveis PCI: implementats per BIOS compatibles amb PCI 2.0 o posterior
1Ch Controlador de tick del temporitzador: cridat per INT 08

Invocant una interrupció

[modifica]

La invocació d'una interrupció es pot fer mitjançant la instrucció del llenguatge ensamblador INT x86. Per exemple, per imprimir un caràcter a la pantalla mitjançant la interrupció de la BIOS 0x10, es podrien executar les instruccions del llenguatge ensamblador x86 següents:

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

Referències

[modifica]
  1. «Booting · Linux Inside» (en anglès). 0xax.gitbooks.io. [Consulta: 10 novembre 2020].
  2. «Grub2 Booting Process» (en anglès), 21-06-2016.
  3. «BIOS Interruptions, how to trace and how to manipulate it on Windows?» (en anglès). [Consulta: 10 setembre 2023].
  4. «What does "BIOS Interrupt call" mean» (en anglès). [Consulta: 10 setembre 2023].