Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEMAS OPERATIVOS.
Fecha: 01/12/2022.
SINCRONIZACIÓN.
Sincronización se refiere a las relaciones entre fenómenos o eventos, cualquier número de eventos
y cualquier clase de relación, tal como antes, durante o después.
1. Alternativas De Sincronización.
Nos hemos referido a distintos modelos de ejecución en las computadoras. En el más simple,
la computadora ejecuta una instrucción luego de otra en clara secuencia. Así, la sincronización
es muy sencilla ya que podemos observar que el orden de los eventos viene dado por el orden
de las instrucciones de este.
Básicamente, hay dos formas de complicar a este modelo. Una manera es que la computadora
sea paralela, es decir, que tenga varios procesadores ejecutando hilos (o procesos) a la vez. La
otra forma es considerar un modelo con un único procesador, pero ejecutando varios hilos a la
vez, conmutando en fracciones de segundo de uno a otro, dándonos así la ilusión de
simultaneidad. Estas decisiones de conmutación no las toman las aplicaciones como ya vimos
sino el planificador del sistema operativo. Por lo tanto, el programador no puede saber cuándo
serán ejecutadas las instrucciones de los diferentes hilos. Pero si han de compartir recursos, lo
que si puede hacer el programador es diseñar cuidadosamente su aplicación teniendo en cuenta
las distintas alternativas de sincronización que veremos.
1.1. Sección Critica.
Denominaremos sección critica al segmento de código en el cual un hilo está accediendo
en exclusividad a un recurso compartido (una variable, una estructura de datos, un
dispositivo) y que no debe ser accedido concurrentemente por otro.
1.2. Exclusión Mutua.
Para prevenir que varios hilos accedan a los mismos datos en forma simultánea
(concurrente), es suficiente con asegurar que, cuando un hilo esté ejecutando en una sección
critica, a ningún otro hilo se le permita ejecutar en una sección critica en la que se acceden
a los mismos recursos. Es decir, las ejecuciones de secciones críticas en las cuales los
mismos recursos son accedidos por hilos, deben ser mutuamente excluyentes en el tiempo,
una luego de la otra, pero en un orden arbitrario. Cuando un hilo se está ejecutando en su
sección critica ningún otro hilo puede ejecutarse en esa sección critica al mismo tiempo,
para evitar las condiciones de carrera.
1.3. Soluciones Hardware.
1.3.1. Inhabilitación de las interrupciones.
1.3.2. Instrucciones especiales de máquina.
1.3.2.1. TSL
1.3.2.2. CAS.
1.3.2.3. Fetch and Add.
1.3.2.4. Read, modify, write.
1.3.2.5. Load-Link.
1.3.2.6. Soluciones libres de espera.
1.4. Soluciones Sofware.
1.4.1. El problema de la sección critica.
1.4.1.1. Algoritmo de Dekker.
1.4.1.2. Algoritmo de Peterson.
1.4.1.3. Requisitos de una solución.
1.4.1.3.1. Exclusión Mutua.
1.4.1.3.2. Progreso.
1.4.1.3.3. Espera Limitada.
1.4.2. Variables Mutex.
1.4.3. Variables de Condición.
1.4.4. Spinlock.
2. Semáforos.
El principio fundamental es el siguiente: dos o más procesos pueden cooperar por medio de
simples sefiales, de forma que se pueda obligar a detener a un proceso en una posición
determinada hasta que reciba una señal especifica. Cualquier requisito complicado de
coordinación puede satisfacerse por medio de la estructura de señales adecuada.
Para la señalización y sincronización, se usa una entidad física para representar al recurso, a
estas variables especiales se las llama semáforos. Para transmitir una señal por el semáforo s
los procesos ejecutan la operación signal (s) mientras que para recibir una señal del semáforo
s, los procesos ejecutan la operación wait (s); si la señal correspondiente aún no se ha
transmitido, el proceso se suspende hasta que tenga lugar la transmisión. Los semáforos fueron
inventados por Dijkstra (1968b) para el sistema operativo THE.
2.1. Sintaxis de un monitor.
Por ejemplo, consideremos un monitor simple para proteger una variable entera como se
muestra a continuación, El monitor contiene una variable única (privada) llamada
count.que puede accederse sólo por medio de tres procedimientos (públicos) para leer su
valor actual, incrementarlo, o decrementarlo en uno, respectivamente, La construcción
monitor garantiza que cualquier proceso que lame uno de estos procedimientos puede
acceder en forma atómica a los datos privados que se contienen en el monitor: