Está en la página 1de 5

UNIVERSIDAD TECNICA PARTICULAR DE LOJA.

SISTEMAS OPERATIVOS.

Nombre: José Luis Urdiales Cuenca.

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:

3. Sincronización en pase de mensajes.


Cuando se quieren comunicar y sincronizar procesos que ejecutan en máquinas distintas, es
necesario recurrir al pase de mensajes. En este tipo de comunicación, los procesos intercambian
mensajes entre ellos.
Es obvio que este esquema también puede emplearse para comunicar y sincronizar procesos
que ejecutan en la misma máquina, en este caso los mensajes son locales a la maquina donde
ejecutan los procesos. La máquina puede tener un único procesador o varios (SMP).
Cuando dos procesos, locales o remotos, se comunican intercambiando mensajes, suele ocurrir
que uno de ellos sea más lento que el otro, ya sea en la transmisión como en la recepción. Este
es un problema clásico del modelo de productor y consumidor, que se nos presenta
frecuentemente en Ciencias de la Computación y que los resolvemos mediante la utilización
de una memoria de almacenamiento intermedio o buffer.
3.1. Memoria intermedia o buffer.
Los mensajes pueden transmitirse desde un proceso a otro copiando el cuerpo del mensaje
desde el espacio de direcciones del proceso transmisor al espacio de direcciones del
proceso receptor (posiblemente a través del espacio de direcciones del núcleo; la
computadora transmisora y receptora puede ser la misma o no). En algunos casos, el
proceso receptor puede no estar listo para recibir un mensaje que se le está transmitiendo,
pero quiere que el sistema operativo guarde ese mensaje hasta que pueda leerlo. En estos
casos, el sistema operativo confiara en que el receptor tenga un buffer en el cual los
mensajes puedan almacenarse antes que el proceso receptor ejecute un código específico
para recibir el mensaje. Los tipos de Buffer son los siguientes:
• Buffer nulo.
• Buffer de mensaje único.
• Buffer de capacidad ilimitada.
• Buffer de capacidad limitada.
3.2. Sincronización en tuberías.
Una tubería es un mecanismo de comunicación y sincronización. Desde el punto de vista
de su utilización, es como un pseudoarchivo mantenido por el sistema operativo.
Conceptualmente, cada proceso ve la tubería como un conducto con dos extremos, uno de
los cuales se utiliza para escribir o insertar datos y el otro para extraer o leerlos, es decir
que la comunicación es unidireccional, La escritura se realiza mediante el servicio que se
utiliza para escribir datos en un archivo. De igual forma, la lectura se lleva a cabo mediante
el servicio que se emplea para leer de un archivo.

3.3. Sincronización mediante señales.


Utilizando la norma POSIX, por ejemplo, un proceso (o hilo) puede bloquearse en el
servicio pause () esperando la recepción de una señal que, o bien haga finalizar el proceso,
o provoque la invocación de otra función. Esta señal esperada puede ser enviada por otro
proceso o hilo mediante kil1() o sigusr1(). Con este mecanismo, se consigue que unos
procesos esperen a que se cumpla una determinada condición y que otros los despierten
cuando se cumple la que les permite continuar su ejecución.
4. Bloqueo mutuo.
En un entorno de multiprogramación, varios procesos podrían competir por un número finito
de recursos. Un proceso solicita recursos, si éstos no están disponibles, el proceso pasa a un
estado de espera. Puede suceder que los procesos en espera nunca vuelvan a cambiar de estado,
porque los recursos que solicitaron estén en manos de otros procesos que también estén
esperando. Esta situación se llama bloqueo mutuo, interbloqueo o deadlock. Tal vez la mejor
ilustración de un bloqueo mutuo sea la que ofrece una ley aprobada por la legislatura de Kansas
a principios de siglo. Esta ley, en parte, decía: Si dos trenes se aproximan uno al otro en un
cruce, ambos harán alto total y ninguno arrancará de nuevo hasta que el otro se haya ido.
4.1. Condiciones para que se cumpla el interbloqueo.
4.1.1. Exclusión mutua.
Al menos un recurso debe adquirirse de modo que no pueda compartirse.
4.1.2. Retención y espera.
Debe existir un proceso que haya adquirido al menos un recurso y esté esperando
para adquirir recursos adicionales que ya han sido asignados a otros procesos
4.1.3. No expropiación.
Los recursos no se pueden arrebatar.
4.1.4. Espera circular.
Debe existir un conjunto {P0, P1, …, Pn} de procesos en espera tal que P0 está
esperando un recurso que fue admitido por P1, P1 está esperando un recurso que
fue adquirido por P2, …, Pn-1 está esperando un recurso que fue adquirido por Pn,
y Pn está esperando un recurso que fue adquirido por P0. Es decir, existe una cadena
de dos o más procesos de manera tal que cada proceso en la cadena tiene un recurso
solicitado por el próximo proceso en la misma.

También podría gustarte