TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
SICRONIZACION DE PROCESOS
1. 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.5. Problemas clásicos de sincronización
5.6. Monitores
5.7. Sincronización en Java
2. Sincronización de Procesos
5.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: Consumidor:
repeat repeat
........ while contador =n do nada;
producir un elemento en sigp sigc:=buffer[sale];
sale:=sale+1 mod n;
…………..
………..
while entra +1 mod n=sale do nada;
Consumir el elemento que esta en
buffer[ entra]:=sigp;
sigc
entra:=entra+1 mod n;
…….
until false ;
until false ;
3. • Los códigos pueden ser modificados como sigue:
Productor: Consumidor:
repeat repeat
........ while contador =n do nada;
producir un elemento en sigp sigc:=buffer[sale];
………….. sale:=sale+1 mod n;
while contador =n do nada; contador:=contador -1;
buffer[ entra]:=sigp; ………..
entra:=entra+1 mod n; Consumir el elemento que esta en sigc
contador:=contador +1; …….
until false ; until false ;
• 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.
4. 5.2. El problema de la sección crítica
Dado 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.
5. Una solución al problema de la sección crítica debe satisfacer los tres requisitos si
•Mutua exclusión.
•Progreso
•Espera limitada.
Estructura general de un proceso
repeat
Sección de ingreso
Sección crítica
Sección de egreso
Sección restante
until false;
6. 5.3. Hardware de sincronización
En 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
7. 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
Implementación de la mutua exclusión con Evaluar-y-Asignar
repeat
while Evaluar-y-Asignar(cerradura) do nada
Sección crítica
Cerradura:= false
Sección restante
until false;
8. 5.4. Semáforos
Las 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.
9. Implementación de la mutua exclusión con SEMÁFOROS
repeat
espera(mutex)
Sección crítica
Señal(mutex);
Sección restante
until false;
10. 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.
11. - 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.
13. 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.
14. 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.
15. •BIBLIOGRAFIA
•Bibliografía Básica
Silberschatz, Galvín y Gagne, SISTEMAS OPERATIVOS, 5ta edición, Limusa Wiley,
México, 1999
•Bibliografía Complementaria
MilenKovic Milan, Sistemas Operativos, 2da Edición, McGraw-Hill Interamericana,
1994
- ENLACES WEB
•SISTEMAS OPERATIVOS
http://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
•PLANIFICACION DE PROCESOS
http://www.gabriel-arellano.com.ar/so/
• SINCRONIZACION DE PROCESOS
http://arcos.inf.uc3m.es/~ii_ssoo/dokuwiki/doku.php
•SINCRONIZACION PROCESOS
http://www.dirinfo.unsl.edu.ar/~sonet/teorias/SO-clase4-pagina.pdf
•SINCRONIZACION PROCESOS
http://web.frm.utn.edu.ar/soperativos/Archivos/sincro.pdf