Sincronización de Procesos

INFORMATICA UNIVERSIDAD

PROCESO

Información base sobre lo que es Sicronización de Procesos 

 

¿Qué es un proceso?

Un proceso es básicamente un entorno formado por todos los recursos necesarios para ejecutar programas. Desde el punto de vista del SO, un proceso es un objeto más que hay que gestionar y al cual hay que dar servicio.       

Que un programa es una entidad pasiva, en tanto en cuanto es un conjunto de instrucciones de código máquina y datos almacenados en un ejecutable. Mientras que un proceso sería la ejecución de ese programa, es decir, el programa en acción. Esto indica que los procesos son dinámicos, están en constante cambio debido a estos recursos necesarios, ya que al intentar realizar algún tipo de acción puede ser que tenga que permanecer a la espera de que dicho recurso esté disponible, por ejemplo una petición de lectura del disco duro, y que el brazo lector del disco duro lo esté utilizando otro proceso (Castaño,2016,p.17).

 

 

Sincronización de Procesos

Es conjunto de protocolos y mecanismos, utilizados para preservar la integridad y consistencia del sistema cuando varios procesos concurrentes comparten recursos que son reutilizables en serie. La sincronización entre procesos puede definirse en si como la necesidad que tienen algunos procesos de bloquearse en determinadas circunstancias y ser despertados cuando ocurren ciertos eventos.   

                                                                                                                                                                                              

Una explicación según Tanenbaum los procesos con frecuencia necesitan comunicarse con otros procesos. Por ejemplo, en un conducto de shell, la salida del primer proceso debe pasarse al segundo proceso, y así sucesiva mente. Por tanto, es necesaria la comunicación entre procesos, de preferencia en una forma bien estructurada que no utilice interrupciones. En las siguientes secciones examinaremos algunos de los problemas relacionados con esta comunicación entre procesos o IPC (Tanenbaum,2010, p.57).

 

 

 

Secciones Criticas

Es una secuencia de instrucciones con un comienzo y un final claramente marcados, que generalmente delimita la actualización de una o más variables compartidas. (Carrasco, 2016) afirma. Sólo el proceso que ejecuta la sección crítica tiene permitido el acceso a la variable compartida; los restantes procesos deberían tenerlo prohibido hasta la terminación de la Sección Crítica (p.7).

 

¿Cómo evitamos las condiciones de competencia? La clave para evitar problemas en ésta y muchas otras situaciones en las que se comparte memoria, archivos o cualquier otra cosa es encontrar una forma de prohibir que más de un proceso lea y escriba los datos compartidos al mismo tiempo. Dicho de otro modo, lo que necesitamos es exclusión mutua: alguna forma de asegurar que, si un proceso está usando una variable o archivo compartido, los otros procesos quedarán excluidos de hacer lo mismo.

 

 

 

Exclusión Mutua

Se usan en programación concurrente para evitar que entre más de un proceso a la vez en la sección crítica. La sección crítica es el fragmento de código donde puede modificarse un recurso compartido.

 

Solución al Problema de Exclusión Mutua. 1) Acceder al Recurso compartido Protegido. 2) No hacer suposiciones con respecto a las velocidades. 3)Garantizar el aborto o terminación de cualquier proceso fuera de su S.C. No afecte la capacidad de los restantes 4) Cuando más de un proceso desee entrar a la S.C. Concederle la entrada a uno de ellos en tiempo finito (Galvin, 2007, pag.72).

 

 

Semáforos

Mecanismo para exclusión mutua entre un número arbitrario de procesos. Una vez iniciado un proceso ninguno otro podrá acezar hasta que se complete la operación. Wait(s): Decrementa el valor de su argumento semáforo. Signal (s): Incrementa el valor de su argumento semáforo. Herramienta de sincronización que no requiere espera activa’ del proceso.

El aspecto crítico es que los semáforos sean ejecutados atómicamente dos procesos no deben ejecutar signal o wait sobre el mismo semáforo al w mismo tiempo (Martinez,2015, p.1).

 

 

Cada semáforo tiene un valor (value) entero y una lista de procesos list. Cuando un proceso tiene que esperar en un semáforo, se añade a la lista de procesos. Una operación signa1 () elimina un proceso de la lista de procesos en espera y lo despierta.

 La operación de semáforo wait () ahora se puede definir del siguiente modo:

wait(semaphore *S) {
S->value--;
if (S->value < 0) {
anadir este proceso a S->list;
block();
}
}

 La operación de semáforo signal () ahora puede definirse así:

signal(semaphore *S) {
S->value++;}
if (S->value <= 0) {
eliminar un proceso P de S->list;
wakeup(P);
}
}

 

Problema productor / Consumidor

Surgen problemas cuando el productor quiere colocar un nuevo elemento en el buffer, pero éste ya está lleno. La solución es que el productor se duerma y sea despertado cuando el consumidor haya retirado uno o más elementos. De forma similar, si el consumidor desea sacar un elemento del buffer y ve que está vacío, se duerme hasta que el productor pone algo en el buffer y lo despierta (Garcia, 2018, p.9).

 

 

Caso de la cena de los Filósofos

Cinco filósofos están sentados alrededor de una mesa circular. Cada filósofo tiene ante sí un plato de espagueti. El espagueti es tan resbaloso que un filósofo necesita dos tenedores para comerlo. Entre cada par de platos hay un tenedor.

 

 

Interbloqueo

Bloqueo permanente de un conjunto de procesos que para terminar necesitan o bien los recursos del sistema, o bien comunicar los unos con los otros. Involucra conflicto de necesidades por recursos de uno o varios procesos

 

Recursos Reutilizables

• Los procesos obtienen recursos que luego liberan para que sean reutilizados por otros procesos – Tiempo del procesador, I/O channels, memoria secundaria, files, databases, y semáforos

• El interbloqueo se produce si cada proceso mantiene un recurso y requiere el otro.

 

 

 

 

 

 

(Puede quitar la publicidad ampliando la cuenta)