Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los requisitos para considerar una acción como atómica, son que:
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.
▪ 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).
▪ Fase Creciente: durante esta fase los procesos efectúan las peticiones de los recursos que
necesitan para realizar la acción atómica.
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.
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.
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.