Quina diferència hi ha entre BIOS, DOS i el temps real que s’interromp amb la perspectiva d’un llenguatge de muntatge?


Resposta 1:

Aquesta és una gran pregunta, que ningú no pensa gaire en aquests dies. La resposta senzilla és que una "interrupció en temps real" és aquella que no s'executa explícitament per codi. Es va activar com a gestor d'excepcions o com a dispositiu extern que va establir la línia d'interrupció del processador. Una BIOS i una interrupció del sistema operatiu són bàsicament una convenció de trucada de drecera que podeu utilitzar en l’assemblador.

Quan s'invoca o es desencadena una interrupció, tots els segments de codi, el punter d’instrucció i el registre de banderes s’empenyen a la pila. El número d'interrupció s'obté del bus, i la CPU busca la nova adreça d'execució a la taula d'interrupció vectorial. I l'execució de codi comença a aquesta adreça. És com una crida llunyana.

Per a interrupcions impulsades externament, Google APIC o PIC, que és un controlador d’interrupció programable avançat. La versió original del PC va comptar amb una versió del controlador Intel 8259. Des d'una perspectiva de llenguatge de muntatge, el vostre codi funciona perfectament i, de sobte, sense saber-ho (ni cap codi que vàreu executar immediatament) es produeix una interrupció. Quan es fa la interrupció, tots els registres, banderes i part significativa de la pila es restauren, i el vostre codi ni tan sols sap que succeeix i segueix executant-se. Les interrupcions externes també es poden "emmascarar", és a dir, si es desactiva el senyal d'Interrupció del processador amb la instrucció CLI, aquestes interrupcions externes no es produiran a menys que siguin una "Interrupció no emmascaradora" (NMI). De vegades és important quan escriviu bloquejos de memòria i voleu assegurar-vos que cap altre codi o fil no interromp el que feu.

Jo encara cridaria el tractament d’excepcions, una interrupció en temps real. De la mateixa manera que interromp el controlat externament, el temps és essencial. Però això també s’anomena TRAP. Tècnicament, la interrupció prové de l'interior del processador, per algun estat que vau activar a través del programari. Penseu en coses com dividir per zero o una fallada de pàgina. Això no va passar directament pel codi que heu escrit, sinó indirectament. I de la mateixa manera s’han de manejar immediatament. La interrupció en aquest cas MAI pot ajustar algun valor, o canviar algun indicador, però normalment amb la intenció de solucionar l’error, per continuar amb l’execució o notificar al programa que l’execució no pot continuar i és possible que el programa acabi immediatament. Aquestes excepcions tornen a la instrucció que va causar la falla. No podeu emmascarar aquestes interrupcions.

Les interrupcions del BIOS o del sistema operatiu també s’anomenen TRAP, però s’anomenen explícitament. No són temps real. És possible que no tornin immediatament. Poden seguir executant fins que acabin la seva tasca. Just al vostre codi, poseu per exemple un INT 3 (Trigger Debugger) i és possible que el vostre codi no s’executi durant uns minuts més tard. Les interrupcions del Bios es troben clarament a Bios i les interrupcions del SO substitueixen sovint les interrupcions del Bios per les seves. I sovint (però menys en el sistema operatiu protegit), fins i tot una aplicació configura les seves interrupcions. Des de la perspectiva de la programació, només teniu codi de trucada i espereu plenament que es puguin modificar els registres i passar una mica de temps. I sovint el valor de devolució es transmet als registres.

I a diferència d’una trucada, quan s’acaba una interrupció finalment, s’ha de netejar per si mateixa i la instrucció IRET obtindrà el segment de codi, el punter d’instrucció i els indicadors, de la pila d’aplicacions i es reprendrà a executar en aquell moment.


Resposta 2:

Totes les interrupcions tenen una cosa en comú: com es manegen. Quan ocorrin, la CPU trencarà la seqüència actual d’instruccions, guardarà el seu estat a la pila de màquines i realitzarà la rutina d’interrupció establerta pel sistema operatiu. Aleshores, es pot restaurar l'estat de la pila i continuar amb el codi que s'ha interromput, o bé es pot avortar el programa, etc. Quina de les 256 rutines d'interrupció possibles que s'invoca, depèn de l'esdeveniment que va provocar la interrupció: la interrupció en temps real (asíncrona) s'activa. per un esdeveniment extern: es va prémer el teclat, es va moure el ratolí, es va marcar el rellotge. El dispositiu de maquinari envia una sol·licitud d’interrupció al xip APIC que s’espera fins que la CPU hagi acabat la instrucció actual i, a continuació, l’APIC mana la CPU per desar el seu estat i realitzar l’acció necessària: emmagatzemar el caràcter prement al buffer del teclat, moure el cursor del ratolí a la pantalla, actualitzar l’ordinador. La interrupció sincrònica (excepció) és la més sovint causada per un error dels programadors, com ara la divisió per zero, la lectura de la memòria des de l’adreça que no existeix, intentant executar instruccions no vàlides. La interrupció de rutina reporta el missatge d’error en aquest cas. La programació de muntatge (o compilador) l’invoca l’interrupció (sol·licitud del servei del sistema operatiu) amb instrucció de màquina INT. Les seves rutines estan connectades a BIOS o s’estableixen quan es carrega el sistema operatiu. Aquest és l’únic tipus d’interrupció que concerneix al programador de muntatge (tret que estiguin escrivint el sistema operatiu o el firmware del BIOS). Aquí es documenten les 256 interrupcions: Taula de salt d'interrupció


Resposta 3:

Totes les interrupcions tenen una cosa en comú: com es manegen. Quan ocorrin, la CPU trencarà la seqüència actual d’instruccions, guardarà el seu estat a la pila de màquines i realitzarà la rutina d’interrupció establerta pel sistema operatiu. Aleshores, es pot restaurar l'estat de la pila i continuar amb el codi que s'ha interromput, o bé es pot avortar el programa, etc. Quina de les 256 rutines d'interrupció possibles que s'invoca, depèn de l'esdeveniment que va provocar la interrupció: la interrupció en temps real (asíncrona) s'activa. per un esdeveniment extern: es va prémer el teclat, es va moure el ratolí, es va marcar el rellotge. El dispositiu de maquinari envia una sol·licitud d’interrupció al xip APIC que s’espera fins que la CPU hagi acabat la instrucció actual i, a continuació, l’APIC mana la CPU per desar el seu estat i realitzar l’acció necessària: emmagatzemar el caràcter prement al buffer del teclat, moure el cursor del ratolí a la pantalla, actualitzar l’ordinador. La interrupció sincrònica (excepció) és la més sovint causada per un error dels programadors, com ara la divisió per zero, la lectura de la memòria des de l’adreça que no existeix, intentant executar instruccions no vàlides. La interrupció de rutina reporta el missatge d’error en aquest cas. La programació de muntatge (o compilador) l’invoca l’interrupció (sol·licitud del servei del sistema operatiu) amb instrucció de màquina INT. Les seves rutines estan connectades a BIOS o s’estableixen quan es carrega el sistema operatiu. Aquest és l’únic tipus d’interrupció que concerneix al programador de muntatge (tret que estiguin escrivint el sistema operatiu o el firmware del BIOS). Aquí es documenten les 256 interrupcions: Taula de salt d'interrupció