Saltar al contenido principal

# 4.2: Mecanismos de interrupción- reconocimiento de vector, y prioridad de interrupción

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\id}{\mathrm{id}}$$ $$\newcommand{\Span}{\mathrm{span}}$$

( \newcommand{\kernel}{\mathrm{null}\,}\) $$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$ $$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$ $$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\id}{\mathrm{id}}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\kernel}{\mathrm{null}\,}$$

$$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$

$$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$

$$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$ $$\newcommand{\AA}{\unicode[.8,0]{x212B}}$$

$$\newcommand{\vectorA}[1]{\vec{#1}} % arrow$$

$$\newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow$$

$$\newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vectorC}[1]{\textbf{#1}}$$

$$\newcommand{\vectorD}[1]{\overrightarrow{#1}}$$

$$\newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}}$$

$$\newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}}$$

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\avec}{\mathbf a}$$ $$\newcommand{\bvec}{\mathbf b}$$ $$\newcommand{\cvec}{\mathbf c}$$ $$\newcommand{\dvec}{\mathbf d}$$ $$\newcommand{\dtil}{\widetilde{\mathbf d}}$$ $$\newcommand{\evec}{\mathbf e}$$ $$\newcommand{\fvec}{\mathbf f}$$ $$\newcommand{\nvec}{\mathbf n}$$ $$\newcommand{\pvec}{\mathbf p}$$ $$\newcommand{\qvec}{\mathbf q}$$ $$\newcommand{\svec}{\mathbf s}$$ $$\newcommand{\tvec}{\mathbf t}$$ $$\newcommand{\uvec}{\mathbf u}$$ $$\newcommand{\vvec}{\mathbf v}$$ $$\newcommand{\wvec}{\mathbf w}$$ $$\newcommand{\xvec}{\mathbf x}$$ $$\newcommand{\yvec}{\mathbf y}$$ $$\newcommand{\zvec}{\mathbf z}$$ $$\newcommand{\rvec}{\mathbf r}$$ $$\newcommand{\mvec}{\mathbf m}$$ $$\newcommand{\zerovec}{\mathbf 0}$$ $$\newcommand{\onevec}{\mathbf 1}$$ $$\newcommand{\real}{\mathbb R}$$ $$\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}$$ $$\newcommand{\laspan}[1]{\text{Span}\{#1\}}$$ $$\newcommand{\bcal}{\cal B}$$ $$\newcommand{\ccal}{\cal C}$$ $$\newcommand{\scal}{\cal S}$$ $$\newcommand{\wcal}{\cal W}$$ $$\newcommand{\ecal}{\cal E}$$ $$\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}$$ $$\newcommand{\gray}[1]{\color{gray}{#1}}$$ $$\newcommand{\lgray}[1]{\color{lightgray}{#1}}$$ $$\newcommand{\rank}{\operatorname{rank}}$$ $$\newcommand{\row}{\text{Row}}$$ $$\newcommand{\col}{\text{Col}}$$ $$\renewcommand{\row}{\text{Row}}$$ $$\newcommand{\nul}{\text{Nul}}$$ $$\newcommand{\var}{\text{Var}}$$ $$\newcommand{\corr}{\text{corr}}$$ $$\newcommand{\len}[1]{\left|#1\right|}$$ $$\newcommand{\bbar}{\overline{\bvec}}$$ $$\newcommand{\bhat}{\widehat{\bvec}}$$ $$\newcommand{\bperp}{\bvec^\perp}$$ $$\newcommand{\xhat}{\widehat{\xvec}}$$ $$\newcommand{\vhat}{\widehat{\vvec}}$$ $$\newcommand{\uhat}{\widehat{\uvec}}$$ $$\newcommand{\what}{\widehat{\wvec}}$$ $$\newcommand{\Sighat}{\widehat{\Sigma}}$$ $$\newcommand{\lt}{<}$$ $$\newcommand{\gt}{>}$$ $$\newcommand{\amp}{&}$$ $$\definecolor{fillinmathshade}{gray}{0.9}$$

### Introducción

En la siguiente sección se presenta al alumno las interrupciones que ocurren en E/S programadas

### Interrupciones de hardware

Las interrupciones de hardware son utilizadas por los dispositivos para comunicar que requieren atención del sistema operativo. Internamente, las interrupciones de hardware se implementan mediante señales de alerta electrónicas que se envían al procesador desde un dispositivo externo, que es una parte de la propia computadora, como un controlador de disco, o un periférico externo.

Por ejemplo, al presionar una tecla en el teclado o mover el mouse, se activan interrupciones de hardware que hacen que el procesador lea la pulsación de tecla o la posición del mouse. A diferencia del tipo de software (descrito a continuación), las interrupciones de hardware son asíncronas y pueden ocurrir en medio de la ejecución de instrucciones, requiriendo cuidados adicionales en la programación. El acto de iniciar una interrupción de hardware se denomina interrupción (IRQ).

### Interrupción de software

Una interrupción de software es causada por una condición excepcional en el propio procesador, o una instrucción especial en la instrucción que causa una interrupción cuando se ejecuta. El primero se suele llamar trampa o excepción y se utiliza para errores o eventos que ocurren durante las ejecuciones del programa que son lo suficientemente excepcionales como para que no puedan manejarse dentro del programa mismo.

Por ejemplo, si se ordena a la unidad lógica aritmética del procesador dividir un número por cero, esta demanda imposible provocará una excepción de división por cero, quizás haciendo que la computadora abandone el cálculo o muestre un mensaje de error. Las instrucciones de interrupción de software funcionan de manera similar a las llamadas de subrutina y se utilizan para una variedad de propósitos, como solicitar servicios de software de sistema de bajo nivel, como controladores de dispositivos. Por ejemplo, las computadoras suelen utilizar instrucciones de interrupción de software para comunicarse con el controlador de disco para solicitar que los datos sean leídos o escritos en el disco.

Cada interrupción tiene su propio controlador de interrupciones. El número de interrupciones de hardware está limitado por el número de líneas de solicitud de interrupción (IRQ) al procesador, pero puede haber cientos de interrupciones de software diferentes. Las interrupciones son una técnica de uso común para la multitarea por computadora, especialmente en computación en tiempo real. Se dice que un sistema de este tipo es impulsado por interrupciones

Las interrupciones se pueden clasificar en estos diferentes tipos:

• Interrupción enmascarable (IRQ): una interrupción de hardware que puede ignorarse estableciendo un bit en una máscara de bits del registro de máscara de interrupción (IMR).
• Interrupción no enmascarable (NMI): una interrupción de hardware que carece de una máscara de bit asociada, para que nunca pueda ser ignorada. Los NMI se utilizan para las tareas de mayor prioridad, como los temporizadores, especialmente los temporizadores de vigilancia.
• Interrupción de software: una interrupción generada dentro de un procesador mediante la ejecución de una instrucción. Las interrupciones de software se utilizan a menudo para implementar llamadas al sistema porque resultan en una llamada de subrutina con un cambio de nivel de anillo de CPU.
• Interrupción espuria: una interrupción de hardware que no es deseada. Por lo general, se generan por condiciones del sistema, como interferencias eléctricas en una línea de interrupción o a través de hardware diseñado incorrectamente.

## Conclusión

Esta sección ha introducido a los alumnos a las diferentes categorías de interrupciones de E/S, es decir, las interrupciones de hardware y software

### Evaluación

Describa brevemente las interrupciones de hardware y software

### Interrupciones de hardware

Las interrupciones de hardware son generadas por ciertos eventos que surgen durante la ejecución de un programa. Este tipo de interrupciones es manejado en su totalidad por el hardware y no es posible modificarlas.

Un claro ejemplo de este tipo de interrupciones es la que realiza la actualización del contador del reloj interno de la computadora, el hardware realiza la llamada a esta interrupción varias veces durante un segundo con el fin de mantener el tiempo actualizado.

### Interrupciones de Hardware

Las interrupciones externas son generadas por dispositivos periféricos, como teclados, impresoras, tarjetas de comunicación, etc. También son generadas por coprocesadores. No es posible desactivar las interrupciones externas.

Estas interrupciones no se envían directamente a la CPU sino que se envían a un circuito integrado cuya función es manejar exclusivamente este tipo de interrupciones

### Interrupciones de software

Las interrupciones del software pueden ser activadas directamente por el ensamblador invocando el número de la interrupción deseada con la Instrucción INT.

El uso de interrupciones nos ayuda en la creación de programas y al usarlos nuestros programas se acortan. Es más fácil entenderlos y suelen tener un mejor rendimiento principalmente debido a su menor tamaño. Este tipo de interrupciones se pueden separar en dos categorías: las interrupciones DOS del sistema operativo y las interrupciones del BIOS.

This page titled 4.2: Mecanismos de interrupción- reconocimiento de vector, y prioridad de interrupción is shared under a CC BY-SA license and was authored, remixed, and/or curated by Harrison Njoroge (African Virtual University) .