SICRONIZACION DE PROCESOS

15
Sincronización de procesos Sincronización de procesos 5.1. Antecedentes: 5.2. El problema de la sección crítica 5.3. Hardware de sincronización 5.4. Semáforos 5.7. Sincronización en Java 5.6. Monitores 5.5. Problemas clásicos de sincronización

Transcript of SICRONIZACION DE PROCESOS

Sincronización de procesosSincronización de procesos

5.1. Antecedentes:

5.2. El problema de la sección crítica

5.3. Hardware de sincronización

5.4. Semáforos

5.7. Sincronización en Java

5.6. Monitores

5.5. Problemas clásicos de sincronización

Productor: repeat ........ producir un elemento en sigp ………….. while entra +1 mod n=sale do nada; buffer[ entra]:=sigp; entra:=entra+1 mod n;until false ;

Consumidor:repeat while contador =n do nada; sigc:=buffer[sale]; sale:=sale+1 mod n; ………..Consumir el elemento que esta en sigc…….until false ;

Sincronización de Procesos5.1. Antecedentes:

Un proceso es cooperativo si puede afectar o ser afectado por los otros procesos que se están ejecutando en el sistema

• La cooperación entre procesos requiere: la ejecución concurrente de los mismos, mecanismos de comunicación y mecanismos de sincronización• Un problema clásico de procesos cooperativos es el problema del productor-consumidor

Productor: repeat ........ producir un elemento en sigp…………..while contador =n do nada; buffer[ entra]:=sigp;entra:=entra+1 mod n;contador:=contador +1;until false ;

Consumidor:repeatwhile contador =n do nada; sigc:=buffer[sale];sale:=sale+1 mod n;contador:=contador -1;………..Consumir el elemento que esta en sigc…….until false ;

• Los códigos pueden ser modificados como sigue:

• Cada rutina es correcta pero pueden no funcionar correctamente correcta, cuando son ejecutadas concurrentemente

• La situación en la que varios procesos acceden y manipulan el mismo dato concurrentemente, y el resultado de la ejecución depende del particular orden en que los accesos tienen lugar, es llamada condición de competencia• Se requiere alguna forma de sincronización para garantizar que solo un proceso a la vez puede estar manipulando el dato.

5.2. El problema de la sección críticaDado un conjunto n de procesos, cada proceso tiene un segmento de código, llamado sección crítica, en la cual los procesos pueden cambiar variables comunes, actualizar una tabla, grabar un archivo, etc.

La característica importante del sistema es que, cuando un proceso se esta ejecutando en su sección crítica; ningún otro proceso puede ejecutarse en su sección crítica.

En un sistema, la ejecución de las secciones críticas de los procesos debe ser mutuamente excluyentes en el tiempo.El problema de la sección crítica consiste en diseñar un protocolo que los procesos puedan usar para cooperar.

Cada proceso debe solicitar permiso para ingresar a su sección crítica.

La sección de código que implementa esta solicitud es la sección de ingreso.La sección crítica puede ir seguida de una sección de egreso.

El código que queda es la sección restante.

Una solución al problema de la sección crítica debe satisfacer los tres requisitos siguientes:•Mutua exclusión.•Progreso•Espera limitada.Estructura general de un proceso

Sección de ingreso

Sección de egreso

repeat

Sección crítica

Sección restanteuntil false;

5.3. Hardware de sincronizaciónEn sistemas de un procesador, el problema de las secciones críticas podría ser resuelto simplemente si pudiéramos deshabilitar las interrupciones mientras una variable compartida está siendo actualizada.• Esta solución no es factible para un sistema con varios procesadores debido a la demora que implica el pasaje de mensajes.• En muchos sistemas existen instrucciones de hardware que pueden ser usadas para resolver el problema de las secciones críticas.• Estas instrucciones permiten ejecutar atómicamente las operaciones de:– chequear y modificar el contenido de una palabra, o– intercambiar el contenido de dos palabras

Definición de la instrucción Evaluar-y-Asignar.repeat function Evaluar-y-Asignar(var objetivo: boolean):boolean;begin Evaluar-y-Asignar:=objetivo; Objetivo:=true;End

while Evaluar-y-Asignar(cerradura) do nada

Cerradura:= false

Implementación de la mutua exclusión con Evaluar-y-Asignar

repeat

Sección crítica

Sección restanteuntil false;

5.4. SemáforosLas soluciones por hardware presentadas no son fáciles de generalizar a problemas más complejos.• Esta dificultad se puede superar usando una herramienta de sincronización llamada semáforo.• Un semáforo S es una variable entera que solo es accedida a través de dos operaciones atómicas: esperar(wait) y señal(signal)Las definiciones de estas operaciones son: espera(S): while S<= 0 do nada; S:=S-1; señal(S): S:= S+1;

-Podemos usar semáforos para resolver el problema de la sección crítica con n procesos.- Todos los procesos comparten un semáforo, mutex (de mutual exclusión, mutua exclusión ) que recibe el valor inicial a 1.- También podemos usar semáforos para resolver problemas de sincronización.

espera(mutex)

Señal(mutex);

Implementación de la mutua exclusión con SEMÁFOROS

repeat

Sección crítica

Sección restanteuntil false;

5.5. Problemas clásicos de sincronización- El problema de buffer limitadoºSe le utiliza con frecuencia para ilustrar la potencia de las primitivas de sincronización.ºSupondremos que la reserva consiste en n buffers, cada uno de los cuales puede contener un elemento.ºEl semáforo mutex asegura la mutua exclusión de los accesos a la reserva de buffers e inicialmente tiene el valor 1.º los semáforos vacios y llenos cuentan el numero de buffers vacios y llenos, respectivamente.ºEl semáfor vacios asume el valor inical n; llenos de inicia con el valor 0.

- El problema de los lectores y escritores-Un objeto de datos(como un archivo o registro) se va a compartir entre varios procesos concurrentes.-Algunos de esos procesos quizá sólo deseen leer el contenido del objeto compartido, pero otros podrían querer actualizarlo.- Distinguimos entre estos dos tipos de procesos llamados lectores(solo están interesados en leer) y escritores a los demás.

- El problema de los filósofos comensales

5.6. Monitores

- Un monitor se caracteriza por un conjunto de operaciones definidos por el Programador.-La representación de un monitor consiste en declaraciones de variables , procedimientos y funciones que implementan operaciones con el tipo.

Representación esquemática de un monitor.

5.7. Sincronización en Java

-Uno de los principales usos de sincronización lo tiene JAVA a través de la consistencia de datos que debe garantizar en el manejo de hilos, debido al trabajo paralelo que estos realizan.

-La sincronización en java se proporciona a nivel de lenguaje y constituye un Ejemplo de un mecanismo de sincronización a alto nivel.

•PLANIFICACION DE PROCESOShttp://www.gabriel-arellano.com.ar/so/• SINCRONIZACION DE PROCESOShttp://arcos.inf.uc3m.es/~ii_ssoo/dokuwiki/doku.php•SINCRONIZACION PROCESOShttp://www.dirinfo.unsl.edu.ar/~sonet/teorias/SO-clase4-pagina.pdf•SINCRONIZACION PROCESOShttp://web.frm.utn.edu.ar/soperativos/Archivos/sincro.pdf

•BIBLIOGRAFIA•Bibliografía BásicaSilberschatz, Galvín y Gagne, SISTEMAS OPERATIVOS, 5ta edición, Limusa Wiley, México, 1999•Bibliografía ComplementariaMilenKovic Milan, Sistemas Operativos, 2da Edición, McGraw-Hill Interamericana, 1994- ENLACES WEB•SISTEMAS OPERATIVOShttp://www.sindominio.net/metabolik/alephandria/txt/SSOO-0_5_0.pdf•ADMINISTRACIÓN DE S.O.http://ditec.um.es/aso/•SISTEMAS OPERATIVOS http://www.pdf-search-engine.com/tanenbaum-sistemas-operativos-pdf.html