Interrupciones y operaciones atómicas: definición, uso y ejemplos

Rodrigo Ricardo Publicado el 24 enero, 2024 5 minutos y 41 segundos de lectura

Introducción

Imagina que mientras mantienes una conversación muy importante con un amigo, suena tu teléfono. En este punto, puede realizar una de las siguientes acciones:

  • Responda la llamada telefónica de inmediato
  • Ignora la llamada telefónica
  • Mire su teléfono y decida si está tomando la llamada o ignorándola dependiendo de quién está llamando o, en otras palabras, dependiendo de si la llamada telefónica es menos o más importante que la conversación con su amigo.

Así es como funcionan las interrupciones en los sistemas informáticos. En la analogía anterior, puedes considerar tu conversación con tu amigo como un proceso que transcurre durante un cierto lapso de tiempo. La llamada telefónica que está recibiendo es una interrupción que, dependiendo de su importancia relativa para la conversación, puede o no tomarla. Si la conversación es realmente muy importante, es posible que incluso no mires tu teléfono y simplemente ignores la llamada.

¿Qué es una interrupción?

Una interrupción en un sistema informático es un evento que requiere detener temporalmente el progreso de un proceso/subproceso (P1) para ejecutar un proceso/subproceso diferente (P2) y, por lo general, reanudar P1 una vez que se completa P2.

Un proceso/subproceso que atiende un evento de interrupción podría interrumpirse, lo que crearía una cascada de interrupciones que, al final de cada una, regresarían al proceso/subproceso interrumpido, como se muestra en la Figura 1.

interrupciones en cascada

Un ejemplo muy básico de interrupciones son las pulsaciones de teclas del teclado o el movimiento del ratón. Si su cursor se enfoca en un campo de texto, idealmente, cada vez que presione una tecla en su teclado, la computadora interrumpiría lo que está haciendo y mostraría en el campo de texto el carácter correspondiente.

En informática, las interrupciones son muy importantes. Si las interrupciones no están habilitadas o no son posibles, una computadora seguirá ejecutando un proceso sin forma de hacerle saber que hay tareas de mayor prioridad que necesitan llamar la atención del procesador o del sistema operativo. Para entender esto, consideremos el ejemplo de un sistema informático que ejecuta un reloj. Sin interrupciones, este sistema nunca podría hacer nada más ya que está ejecutando un proceso, incrementando su tiempo en uno cada segundo. Para resolver este problema, usaríamos un sistema habilitado para interrupciones que ejecutaría un proceso largo y cada segundo lo interrumpiría, de modo que el tiempo se incrementaría en uno.

Operaciones Atómicas

En algunos casos, la desactivación de interrupciones puede estar relacionada con una tarea. Consideremos el siguiente ejemplo. Cada semana, tiene una breve reunión con su supervisor. Debido a que se trata de una reunión muy importante, definiría la tarea, que es la reunión semanal en este caso, como ininterrumpida o, utilizando términos informáticos, atómica . Es decir, no estás deshabilitando la interrupción en un momento determinado, sino que la estás deshabilitando cada vez que se está realizando la tarea. Llamamos a una operación ininterrumpida una operación atómica.

A menudo, en los programas informáticos, incluidos los sistemas operativos, varios procesos/subprocesos pueden compartir la misma variable u objeto. La modificación del valor de una variable compartida o de un atributo de un objeto compartido debe ser atómica. Para entender esto, consideremos un ejemplo muy simple. Dos hilos A y B comparten una variable x=5. Consideremos el siguiente avance en el tiempo:

HoraP1P2notas
1Leer x (x=5)  
2 Interrumpa P1 y escriba un nuevo valor para x (por ejemplo, x=x+5=10) 
3Escriba un nuevo valor para x (por ejemplo, x=x+1=6) El valor de x, como valor compartido, debería ser 10+1=11, pero debido a que P1 tiene un valor local obsoleto de x, seguirá siendo 6, que no es el valor correcto

En el ejemplo anterior, si modificar x fuera una operación atómica, P2 no habría podido modificarlo, hasta que P1 haya terminado con su modificación de x.

Los usuarios de Windows y Android deben estar familiarizados con la actualización del sistema operativo que se requiere de vez en cuando. Cuando el sistema operativo esté realizando la actualización, verá un mensaje que le indicará que no puede apagar la computadora hasta que finalice la actualización. Además, el sistema operativo se bloqueará y no podrá hacer nada con su dispositivo. De esta manera, el sistema operativo le impide cualquier interrupción que pueda afectar las variables del sistema. La operación de actualización es una operación atómica.

Envío y cambio de contexto

En la vida real, cuando una actividad es interrumpida por otra de mayor prioridad, desea volver a la actividad original, cuando haya terminado con la interrupción. En las computadoras, necesitamos lo mismo. Veamos un ejemplo (mientras que este ejemplo usa procesos, el mismo ejemplo se aplica a hilos). P1 es un proceso en ejecución interrumpido por un evento que ejecuta P2. Cuando P2 termine, no queremos que P1 se «reinicie», pero queremos que se reanude. Para poder reanudar P1, el sistema debe haber almacenado el estado de P1 antes de cambiar a P2. Por el estado de un proceso nos referimos al contenido de los registros de la CPU, los valores de las variables y cualquier resultado parcial, si corresponde. Esto también se llama el contexto del proceso.

Despachar significa primero almacenar el estado del proceso/subproceso interrumpido y luego cargar el estado del proceso/subproceso que atiende la señal de interrupción y ejecutarlo. Reemplazar un estado de proceso/subproceso por otro en la CPU y la memoria se denomina cambio de contexto . En el ejemplo mencionado anteriormente, esto significa que el estado de P1 justo antes de iniciar P2 se restaurará en los registros de la CPU y en la memoria para que, cuando se reanude, P1 no «se dé cuenta» de que su ejecución fue interrumpida.

Resumen de la lección

Las interrupciones son un aspecto muy importante de la informática. Permiten detener un proceso en ejecución porque otro de mayor prioridad necesita ejecutarse en la CPU. En esta lección, aprendió sobre las interrupciones, cuándo se usan y cuándo no se deben usar. También aprendiste sobre las operaciones atómicas , que son operaciones que no se pueden interrumpir y entendiste cuándo se deben usar. Finalmente, aprendió qué es el envío y el cambio de contexto , que se puede considerar como un mecanismo para reanudar un proceso/subproceso en lugar de reiniciarlo, cuando su prioridad se vuelve más alta que la interrupción.

Explora más sobre este tema

Selecciona un tema y sigue aprendiendo...

Rodrigo Ricardo
Rodrigo Ricardo Editor y fundador