Está en la página 1de 3

Tema 7 - Acciones Atómicas

Distinguir entre acción atómica y transacción atómica


Una acción atómica es aquella acción llevada a cabo por un conjunto de tareas que no son
conscientes de la existencia de otras tareas activas, y ninguna otra tarea activa es consciente de las
actividades de las primeras, durante el tiempo en el que lleva a cabo la acción atómica.

Los requisitos para considerar una acción como atómica, son que:

1. No se detecten cambios de estado externos.

2. Los cambios de estado internos no se comuniquen hasta finalizar, de tal forma que, desde
fuera la acción, la acción atómica se perciba como indivisible e instantánea.

3. No haya comunicación con otras tareas y, si la hay, no viole las dos condiciones anteriores.

Una transacción atómica es una acción atómica que puede fallar o tener éxito. Es importante tener
en cuenta que, puesto que las acciones atómicas han de percibirse como indivisibles, no puede
ejecutarse de forma parcial, por lo que las transacciones atómicas deben asegurar que se recuperan
de los errores antes de terminar, devolviendo a los componentes involucrados a su estado original.

Diferencia entre acción atómica estricta y acción atómica no estricta

▪ Acción Atómica Estricta: es cuando las tareas que la conforman no pueden comunicarse con
otras tareas externas mientras se está llevando a cabo la acción.
▪ Acción Atómica NO estricta: es cuando las tareas que la conforman SÍ pueden comunicarse
con otras tareas externas.
¿Qué quiere decir que una acción atómica es de dos fases?
Que se puede comunicar con el exterior, en concreto, con un gestor de recursos, mediante el cual
pueda llevarse a cabo un manejo eficiente de los recursos, a la vez que se evita la consistencia y los
problemas de acceso a los datos (siendo la alternativa ineficiente que todos los procesos
involucrados en una acción atómica conserven todos sus recursos hasta el final de la acción).

Se habla de dos fases porque la comunicación se realiza en dos fases:

▪ Fase Creciente: durante esta fase los procesos efectúan las peticiones de los recursos que
necesitan para realizar la acción atómica.

▪ Fase Decreciente: los procesos van liberando sus recursos.

Una vez que la fase decreciente está en marcha, no pueden realizarse nuevas peticiones de recursos.

Hay que tener en cuenta que, si bien esto permite una gestión más eficiente de los recursos, dificulta
la recuperación de errores en el futuro, ya que un proceso puede que no disponga de los recursos
necesarios para realizar la recuperación.
Requisitos para que una acción se pueda considerar atómica

▪ Límites bien definidos: La acción atómica debe tener un inicio, un final y una demarcación.
El comienzo es el lugar de cada tarea involucrada en la acción en el que comienza dicha
acción. Análogamente se describe el final. La demarcación separa las tareas involucradas en
la acción atómica del resto de procesos.

▪ Indivisibilidad: Expresa que no hay intercambio de información entre las tareas internas de
la acción atómica y las tareas externas a ésta.

▪ Anidamiento: Las acciones atómicas pueden estar anidadas siempre y cuando no se solapen
con otras acciones atómicas.

▪ Concurrencia: Distintas acciones atómicas pueden ejecutarse de forma concurrente. Sin


embargo, dado que deben ser independientes, el resultado debe ser el mismo si son
ejecutadas de forma secuencial.

Modelos que se pueden considerar cuando se habla de notificación asíncrona y qué caracteriza a
cada uno
La notificación asíncrona es un mecanismo para conseguir que un proceso responda rápidamente a
una condición que ha sido detectada por otro proceso. Tiene utilidad en aquellas circunstancias en
las que el sondeo no es adecuado (Ejemplo: si se produce un error durante una operación atómica,
es posible que el proceso que ha sufrido el error nunca llegue al punto de sondeo; o cuando se
producen cambios, de modo que, pueden ser esperados, pero no estar planificados).

Al igual que con las excepciones, existen dos modelos básicos de notificación, y además reciben el
mismo nombre asíncrona: reanudación y terminación.

▪ Modelo de reanudación del manejo asíncrono de notificaciones o manejo de eventos


Se comporta como una interrupción software, donde cada proceso indica los eventos que está
dispuesto a manejar y, al señalizarse el evento, el proceso se interrumpe, ejecutándose el
manejador del evento que responde al evento asíncrono, continuando entonces su ejecución
desde donde fue interrumpido. Es similar al modelo de reanudación del manejo de excepciones,
pero el evento ocurre asíncronamente (no es notificado por el proceso afectado).

▪ Modelo de terminación de notificaciones asíncronas o transferencia asíncrona de control (ATC)

Consiste en que cada proceso especifica un dominio de ejecución en el que está preparado
para recibir una notificación asíncrona, que hará que el dominio sea finalizado.

Las peticiones que ocurran fuera de este dominio pueden ignorarse o encolarse. Tras manejar
la petición, el control se devuelve al proceso interrumpido en una posición distinta a aquella
en la que la ATC fue enviada (similar al manejo de excepciones por interrupción).

¿Qué debe crearse para implementar la interfaz de una acción atómica en Java?
Ha de crease una clase controlador, que implementa la interfaz de una acción atómica en la que
participan N tareas.
Las tareas han de comunicarse con el controlador, indicando cuando van a empezar su ejecución
(cada tarea ha de invocar a su método de inicio propio, la tarea i invocará a un método llamado, por
ejemplo, comenzar_tarea_i()) y cuándo la han terminado (todas las tareas invocan al mismo método
de terminación, llamado, por ejemplo, terminar_tarea()).

La labor del controlador es coordinar la acción de las tareas potencialmente concurrentes, de tal
forma que se cree una “barrera” que impida que una tarea de la acción atómica continúe hasta que
el resto no hayan acabado (es decir, hasta que no se pueda considerar por acabada la tarea atómica).

¿Qué especificación debe utilizarse para hacer uso de la notificación asíncrona en Java?
La notificación asíncrona no pertenece a la especificación estándar de Java, por lo que hay que
utilizar Java Real Time (RTSJ), que incluye tanto el modelo de reanudación como el de terminación.

En el contexto de notificación asíncrona en Java, ¿qué excepciones lanzará un método que es


interrumpido?
Java Real Time (RTSJ) incluye la excepción AsynchronouslyInterruptedException para estos casos. Es
importante no confundirla con InterruptedException, de la especificación estándar de Java, puesto
que ésta no cumple los requisitos necesarios para la notificación asíncrona.

También podría gustarte