Diferencia entre revisiones de «Interrupciones y excepciones»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Tratamiento de interrupciones y excepciones)
 
(No se muestran 22 ediciones intermedias de 8 usuarios)
Línea 1: Línea 1:
 
==Tipos de interrupciones y excepciones==
 
==Tipos de interrupciones y excepciones==
  
Se llama interrupción a una alteración en la secuencia de ejecución de instrucciones. Las interrupciones pueden estar causadas por hardware, por una excepción o por una petición de interrupción por parte de algún proceso (interrupción software).
+
* Una interrupción por hardware es un mecanismo de comunicación entre el procesador y los dispositivos de E/S. Sirve para indicar que un dispositivo de E/S tiene datos pendientes de ser tratados. Las interrupciones por hardware evitan que el sistema operativo tenga que muestrear periódicamente el estado de los dispositivos de E/S, de manera que son ellos mismos los que indican que hay datos a ser tratados.
Una excepción es una interrupción de la propia CPU cuando se intenta ejecutar una instrucción prohibida. La interrupción software, por otro lado, se produce cuando un proceso pide un recurso al SO mediante una llamada al sistema (open, write, read…).
 
  
==Tratamiento de interrupciones y excepciones==
+
* Una interrupción por software es un mecanismo de comunicación entre un proceso (que se ejecuta en modo usuario) y el sistema operativo (que se ejecuta en modo supervisor). El proceso emplea las interrupciones por software para notificar al sistema operativo que requiere de su intervención. En procesadores x86, para lanzar una interrupción por software un proceso ejecuta la instrucción '''int''' seguida de un número de 16 bits que indica el tipo de interrupción por software. Por ejemplo, las llamadas al sistema en x86 se implementan mediante interrupciones por software, por medio de la instrucción '''int 0x80''' (sin embargo, hoy día las arquitecturas de los procesadores modernos vienen con instrucciones especializadas para la invocación de llamadas al sistema como '''syscall''' en x86, por tanto, esta técnica ha caído en desuso).
 +
 
 +
Las excepciones son un tipo de interrupción que emplea el procesador para notificar al sistema operativo de un suceso excepcional, por ejemplo, cuando el proceso realiza la instrucción '''div''' para dividir un valor usando como denominador cero. El tratamiento que generalmente realiza el sistema operativo consiste en terminar con la ejecución del proceso.
  
Cuando una interrupción es causada por un componente hardware, su tratamiento es el siguiente:
+
El tratamiento de interrupciones es prioritario, por tanto, en caso de interrupción se deja de ejecutar el proceso para dar paso al manejador de las interrupciones.
  
1 La CPU termina la instrucción que esté ejecutando actualmente.
+
==Tratamiento de interrupciones y excepciones==
  
2 Almacena el estado de la CPU en la pila.
+
El tratamiento de interrupciones es prioritario. Cuando se produce una interrupción:
  
3 La CPU pasa a modo supervisor.
+
1. Almacena el estado de la ejecución del proceso en el Bloque de Control de procesos (PCB).
  
4 Se determina la dirección del Subprograma de Servicio de Interrupciones (SSI).
+
2. Se pasa la CPU a modo supervisor.
  
5 Se salta al SSI y se ejecuta.
+
3. Se ejecuta el código del sistema operativo que realiza el tratamiento de la interrupción. Este decide la acción correspondiente dependiendo del tipo de interrupción.
  
6 Se retorna del SSI restaurando el estado de la CPU desde la pila, así como el modo de ejecución.
+
4. Se devuelve el control de la ejecución al planificador del sistema operativo.
  
7 La CPU continúa con la ejecución del siguiente programa que corresponda.
 
  
Por otro lado, cuando la interrupción es causada por una instrucción de petición, el proceso es el mismo hasta el cuarto punto, a partir de ahí, difiere, ya que la CPU no siempre tiene por qué volver al mismo punto.
+
2.4.[[Conceptos_básicos| Conceptos básicos]]
Por último, en el caso de las excepciones, nunca se vuelve al mismo punto, ya que es donde se ha causado el error en cuestión. En éste caso se procede como antes, pero se llama al SSE (Subprograma de Servicio de Excepciones).
 
En los sistemas operativos, existe una tabla de vectores de interrupción, en la cual, cada vector apunta a la dirección de memoria del gestor, que se encargará de tratar la interrupción del tipo que corresponda. Ésta tabla está separada de otra, que contiene los vectores de excepciones.
 

Revisión actual del 20:10 5 mar 2019

Tipos de interrupciones y excepciones

  • Una interrupción por hardware es un mecanismo de comunicación entre el procesador y los dispositivos de E/S. Sirve para indicar que un dispositivo de E/S tiene datos pendientes de ser tratados. Las interrupciones por hardware evitan que el sistema operativo tenga que muestrear periódicamente el estado de los dispositivos de E/S, de manera que son ellos mismos los que indican que hay datos a ser tratados.
  • Una interrupción por software es un mecanismo de comunicación entre un proceso (que se ejecuta en modo usuario) y el sistema operativo (que se ejecuta en modo supervisor). El proceso emplea las interrupciones por software para notificar al sistema operativo que requiere de su intervención. En procesadores x86, para lanzar una interrupción por software un proceso ejecuta la instrucción int seguida de un número de 16 bits que indica el tipo de interrupción por software. Por ejemplo, las llamadas al sistema en x86 se implementan mediante interrupciones por software, por medio de la instrucción int 0x80 (sin embargo, hoy día las arquitecturas de los procesadores modernos vienen con instrucciones especializadas para la invocación de llamadas al sistema como syscall en x86, por tanto, esta técnica ha caído en desuso).

Las excepciones son un tipo de interrupción que emplea el procesador para notificar al sistema operativo de un suceso excepcional, por ejemplo, cuando el proceso realiza la instrucción div para dividir un valor usando como denominador cero. El tratamiento que generalmente realiza el sistema operativo consiste en terminar con la ejecución del proceso.

El tratamiento de interrupciones es prioritario, por tanto, en caso de interrupción se deja de ejecutar el proceso para dar paso al manejador de las interrupciones.

Tratamiento de interrupciones y excepciones

El tratamiento de interrupciones es prioritario. Cuando se produce una interrupción:

1. Almacena el estado de la ejecución del proceso en el Bloque de Control de procesos (PCB).

2. Se pasa la CPU a modo supervisor.

3. Se ejecuta el código del sistema operativo que realiza el tratamiento de la interrupción. Este decide la acción correspondiente dependiendo del tipo de interrupción.

4. Se devuelve el control de la ejecución al planificador del sistema operativo.


2.4. Conceptos básicos