logo

Diferència entre ISR i Function Call

En aquest article, coneixeràs la diferència entre ISR i crida de funció , però abans de discutir les diferències, heu de conèixer breument l'ISR i la trucada de funció.

Java no

Què és l'ISR?

Una rutina de servei d'interrupció (ISR) és una rutina de programari que el maquinari invoca en resposta a una interrupció. ISR examina una interrupció, determina com gestionar-la, l'executa i retorna un valor d'interrupció lògic. Si no cal més tractament, l'ISR notifica al nucli amb un valor de retorn. Un ISR ha de funcionar molt ràpidament per evitar alentir el funcionament del dispositiu i el funcionament de tots els ISR de menor prioritat.

Tot i que un ISR pot moure dades d'un registre de la CPU o un port de maquinari a un buffer de memòria, en general, es basa en un fil d'interrupció (o tasca) dedicat, anomenat fil de servei d'interrupció (IST), per fer la major part del processament necessari. Si cal un processament addicional, l'ISR retorna un valor d'interrupció lògic al nucli. A continuació, assigna un número d'interrupció física a un valor d'interrupció lògic.

Mecanisme de gestió d'interrupcions

A continuació es mostra el mecanisme de gestió d'interrupcions en els passos següents, com ara:

  • Una interrupció és una condició que fa que la CPU suspengui el programa actual i executi un ISR. Un ISR és un programa escrit especialment per atendre la condició que va provocar la interrupció.
  • Després d'un servei d'interrupció, la CPU torna al programa principal, exactament a la següent instrucció on havia deixat.
  • En la transferència de dades impulsada per interrupcions, sempre que el dispositiu d'E/S estigui preparat per a la transferència de dades, interromprà la CPU. A l'ISR, la CPU realitzarà la transferència de dades.
  • Aquest mètode és millor que l'enquesta perquè la CPU no ha de perdre temps en comprovar l'estat del dispositiu d'E/S. Un teclat és un bon exemple d'accés d'E/S impulsat per interrupcions.
  • En lloc de comprovar la CPU, el teclat hauria d'interrompre la CPU quan es prem una tecla. Així, no es perdrà temps en comprovar repetidament el teclat quan l'usuari no està escrivint.
  • El dispositiu d'E/S sol·licita una interrupció enviant el fitxer $overline{INTR}$ senyal a la CPU.
  • Sempre que la CPU rep $overline{INTR}$ senyal, completa l'execució de la instrucció actual i després executa l'ISR. Quan la CPU estigui preparada, envia un senyal de reconeixement a través del MENTRE línia.
  • ISR s'executa i la CPU torna al programa principal.
  • Els dispositius d'E/S apaguen $overline{INTR}$ senyal després de l'execució.
Diferència entre ISR i Function Call

Per exemple: A l'exemple següent, transferència d'E/S per E/S impulsada per interrupcions.

  • Si un dispositiu d'E/S que vol realitzar una transferència de dades amb el processador ha d'interrompre el processador.
  • Una interrupció és una condició que fa que el processador executi una rutina de servei d'interrupció.
  • A l'ISR, el processador realitzarà la transferència de dades amb el dispositiu d'E/S.

En aquest exemple, interrompeu la sol·licitud prement la tecla del teclat,

  • En lloc que el processador comprove si es prem una tecla, el teclat interromp el processador quan prem una tecla.
  • A l'ISR del teclat, que forma part del programari del controlador del teclat, el processador llegirà les dades del teclat.
Diferència entre ISR i Function Call

Avantatges de l'ISR

A continuació es mostren els següents avantatges de l'ISR, com ara:

  • Els esdeveniments asíncrons ISR es poden produir en qualsevol moment durant l'execució del programa.
  • L'ISR desa l'ordinador, les banderes i els registres a la pila, desactiva totes les interrupcions i carrega l'adreça de l'ISR.
  • ISR no pot tenir arguments que se li puguin passar.
  • ISR no pot retornar valors.
  • ISR activa les interrupcions.
  • En general, l'ISR és petit, ja que necessita temps d'un altre procés.
  • Alguns dels ISR tenen la seva pròpia pila.

Què és Function Call?

Una trucada de funció també s'anomena trucada de subrutina. Una subrutina és un conjunt d'instruccions necessàries repetidament pel programa. Forma part d'un programa més gran que s'encarrega de dur a terme una tasca concreta. El programa més gran pot executar una gran càrrega de treball i la subrutina pot estar realitzant només una tasca senzilla, que també és independent de la codificació del programa restant.

Una funció està codificada de tal manera que es pot cridar diverses vegades i des de diferents llocs (fins i tot des d'altres funcions). Quan es crida una funció, el processador pot anar al lloc on resideix el codi de la funció i executar les instruccions de la funció una per una. Després de completar les funcions, el processador tornarà exactament on ho havia deixat i continuarà l'execució a partir de la següent instrucció.

gimp guardant com a jpeg

Les funcions són una gran eina per a la reutilització del codi. Molts llenguatges de programació moderns admeten funcions. Una col·lecció de funcions s'anomena a biblioteca . Les biblioteques s'utilitzen sovint com a mitjans per compartir i comercialitzar programari. En alguns casos, tot el programa podria ser una seqüència de subrutines.

En el cas d'un processador 8086, una subrutina és invocada per a ANOMENADA instrucció, i retorns de control per a DRET instrucció. Redueix la mida del programa.

Diferència entre ISR i Function Call

Una funció s'ha de cridar explícitament i forma part del mateix context i fil d'execució que la persona que truca. Un ISR de maquinari no s'anomena explícitament, sinó que s'invoca per algun esdeveniment extern. El context del fil actual es conserva automàticament quan es crida una interrupció abans de canviar el context a l'ISR.

A canvi, es produeix el canvi de context invers, restaurant l'estat del processador abans de la interrupció de manera que l'execució continuï des del punt d'interrupció. A continuació es mostren algunes diferències més entre l'ISR i la trucada de funció.

ISR Crida de funció
La interrupció sol ser iniciada per un microprocessador de senyal intern o extern en lloc de l'execució d'instruccions. L'ISR s'executa després d'emmagatzemar l'estat actual del programa a la pila.
ISR realitza diferents tasques segons el dispositiu interromput o les instruccions escrites per un programador.
La crida a la funció s'invoca executant instruccions, que realitzen les tasques específiques i redueixen la mida del programa.
El maquinari determina l'adreça de l'ISR.
L'adreça ISR s'escriu dins de la taula de vectors d'interrupció i l'adreça ISR per a cada interrupció es fixa.
L'adreça de la subrutina s'escriu dins de la instrucció, que s'escriu dins del codi del programa principal.
ISR s'utilitza per a totes les tasques de propòsit general. Les trucades de funció es fan per a tasques específiques del programa.
Quan es produeix una interrupció durant l'execució d'un programa actual, per tant, després de l'execució de la instrucció actual, el processador executa ISR. Després de l'execució de l'ISR, el processador ha de reprendre el programa exactament com abans que es produís la interrupció.
Per a això, s'emmagatzemen el contingut del PC, els registres µP i algunes condicions d'estat. La col·lecció de totes les condicions de bits d'estat en un microprocessador s'anomena PSW (paraula d'estat del programa).
  • Durant el cicle d'interrupció, el contingut del PC i el PSW s'envien a la pila. L'adreça de la branca de la interrupció concreta es passa a l'ordinador i es carrega un nou PSW al registre d'estat.
  • L'última instrucció de l'ISR és el retorn d'una instrucció interrompuda. Quan s'executa aquesta instrucció, el PSW antic i l'adreça de retorn apareixen de la pila.
Aquí, només s'emmagatzema un ordinador a la pila per obtenir l'adreça de la següent instrucció al programa principal.
La subrutina ha de tenir accés a les dades de la subrutina de trucada i retornar els resultats a aquesta subrutina. Per tant, es fa un enllaç de dades i paràmetres de subrutina.
Això es pot fer mitjançant
  • El registre AC es pot utilitzar per a un sol paràmetre d'entrada i un sol paràmetre de sortida. En ordinadors amb diversos registres de processador, es poden passar més paràmetres d'aquesta manera.
  • Una altra manera de passar dades a una subrutina és mitjançant la memòria.