Semáforos y Comunicación entre Procesos

Slides:



Advertisements
Presentaciones similares
GESTION DE PROCESOS.
Advertisements

Concurrencia Exclusión mutua y sincronización
Tabla de Contenido Concurrencia.
Mecanismo de semáforos
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Daniel Morillo Jorge Boscán Gregory Carrasco
Comunicación y sincronización entre procesos
Sincronización de procesos
PROBLEMAS DE SINCRONISMO DISTRIBUIDO
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Concurrencia: Exclusión Mútua y Sincronización
Capítulo 3 Concurrencia: exclusión mutua y sincronización. Comunicación entre procesos.
Sincronización de Procesos Semáforos Emely Arráiz Ene-Mar 08.
Semáforos Cecilia Hernández
Unidad III Administración de procesos
Sincronización de procesos Mariano Gómez Plaza.  Mariano Gómez Plaza Sincronización de procesos 2 Tipos de procesos IndependientesCooperantes.
IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 1.
 El acceso concurrente a datos compartidos puede dar pie a inconsistencia de datos  Mantener la consistencia de los datos requiere mecanismos para asegurar.
PROCESOS SISTEMAS OPERATIVOS. CONTENIDO Procesos Comunicación entre procesos Problemas clásicos Planificación de un proceso Organización de procesos en.
Sincronización de Procesos
Programación Avanzada.  Del tema seleccionado por cada equipo, realizar un programa que realice la simulación de dicho tema, usando hilos y Visual Studio.
Sincronización de Procesos
Tema 9.6: Sincronización de Procesos
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Integrantes: Ma Carmen Zaragoza Santiago Leticia González Hernández Abraham Obispo Antonio Alexis González Ramírez Eduardo Hernández Tolentino.
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
Teoría de Sistemas Operativos Sincronización Procesos
Applications Development I 6.1 Foro Tomas Anzalotta Alvarado.
En la literatura de sistemas operativos abundan problemas interesantes que han sido estudiados ampliamente. A continuación vamos a examinar uno de los.
Resumen de Sistemas Operativos I Msc./Ing. Antonio Mena.
1 Tema 7: Concurrencia y Sincronización Sistemas Operativos.
MUTEX. QUE ES CONCURRENCIA - MUTEX  Son el mecanismo que nos ayuda en la sincronización para proteger una sección crítica en nuestro código.  Estas.
Generalidades. Introducción a los procesos
Proceso: Una instancia de un programa en ejecución
Estructuras de Control en Visual Basic.net
Procesadores superescalares
Antonio Reynoso Lobato 2002 A
SISTEMAS OPERATIVOS Sección Crítica.
Mecanismos de Comunicación usando Paso de Mensajes
Procesos Concurrentes
Comunicación, Sincronización y Concurrencia de procesos
Paul Leger Procesos (capitulo 2) Paul Leger
Planificación de Procesos
Paul Leger Procesos (capitulo 2) Paul Leger
Estructuras de Control en Visual Basic.net
ADMINISTRACíON DE LA MEMORIA EN SISTEMAS RECIENTES
Exclusión mutua de secciones
Tema 8: Sincronización y Comunicación
Sistemas Distribuidos
Monitores Mecanismo sincronización de nivel más alto que semáforos Construcción a nivel de lenguaje de programación que controla el acceso a datos compartidos.
L.I. Gerardo Ortiz Rivera
Ayudantía 3: Procesos y threads
Exclusión mutua Un Algoritmo Centralizado Algoritmo Descentralizado
PROCESOS COMENZAR.
Sincronización de Procesos
Sincronización de procesos
SINCRONIZACIÓN DE PROCESOS
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
Sistemas Operativos Semáforos II.
HERRAMIENTAS DE PROGRAMACIÓN
COORDINACIÓN Y SINCRONIZACIÓN DE PROCESOS: 1.1. Concurrencia 1.2. Semáforos 1.3. Sección Critica 1.4. Bloqueos.
ARQUITECTURA DEL COMPUTADOR Ing. Diana E. López.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS.
CICLOS EN JAVA FOR, WHILE, DO WHILE Un ciclo en Java o bucle en Java (como prefieras llamarlo) permite repetir una o varias instrucciones cuantas veces.
Concurrencia: exclusión mutua y sincronización Capítulo 5.
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
CARRERA DE INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN SISTEMAS OPERATIVOSMONITORES INTEGRANTES: BIT SOLARIS KALI Sangolquí, Mayo del 2019.
SISTEMAS OPERATIVOS En el mundo de la informática se denomina sistema operativo al programa, o conjunto de ellos, que gestiona los recursos físicos de.
Hilos de Procesamiento. Hilos Concepto Beneficios Hilos a nivel kérnel y a nivel usuario Modelos multihilos Hilos de Solaris 2 Hilos de Java.
VARIABLE Y TIPO DE DATOS. ¡Que Es Variable? Un lugar para almacenar información en un espacio de memoria de la computadora.
Transcripción de la presentación:

Semáforos y Comunicación entre Procesos SISTEMAS OPERATIVOS Semáforos y Comunicación entre Procesos

espera ocupada: si no tiene permiso de entrada queda Algoritmo de Peterson REPETIR interesado[Pi] =TRUE; /* Sección entrada */ turno = Pj; WHILE (turno= Pj AND interesado [Pj]); sección_crítica(); interesado[Pi] = FALSE; /* Sección salida */ sección_restante(); FIN espera ocupada: si no tiene permiso de entrada queda esperando

Una alternativa de solución a espera ocupada: bloqueo void productor () { REPETIR producir un elemento (item) IF counter=N THEN sleep(); almacenar (item) incrementar counter IF counter = 1 THEN wake_up (consumidor) FIN } void consumidor () { REPETIR IF counter=0 THEN sleep(); retirar (item) decrementar counter IF counter = N-1 THEN wake_up (productor) consumir (item) FIN } Si con counter=0 se le retira la CPU al consumidor antes de

Una dificultad en la solución anterior void productor () { REPETIR producir un elemento (item) IF counter=N THEN sleep(); almacenar (item) incrementar counter IF counter = 1 THEN wake_up (consumidor) FIN } void consumidor () { REPETIR IF counter=0 THEN sleep(); retirar (item) decrementar counter IF counter = N-1 THEN wake_up (productor) consumir (item) FIN } CPU

Conclusión Si: El almacén está vacío (counter=0). Antes de ejecutarse el sleep, el planificador del SO le retira la CPU al consumidor para asignarlo al productor. Entonces: El productor puede ejecutar al menos una iteración completa de su ciclo antes de perder el CPU. Se duerme el consumidor y más tarde se duerme el productor. Ocurre un abrazo fatal (bloqueo mutuo). Un despertar enviado a un proceso que todavía no esté durmiendo se pierde.

Contenido Exclusión mutua con bloqueo. Semáforos. Problemas clásicos de sincronización de procesos. Comunicación entre procesos Bibliografía: S. Tanenbaum, Sistemas Operativos Modernos, Ed. Prentice-Hall Hispanoamericana, 1996, pp.. 47—70. A. S. Tanembaum, Operating Systems Design and Implementation, Third Edition, Prentice Hall, 2006. pp. 78-81, Sección 2.2.5.

Bloqueo de procesos con semáforos Un semáforo S (Dijkstra, 1965) es un tipo de variable no negativa que sólo puede ser accedida por 2 primitivas denominadas aquí DOWN y UP. Las primitivas DOWN y UP son tales que: Ejecutan sus operaciones de manera indivisible (acción atómica). Cuando un proceso ejecuta DOWN y encuentra que S = 0, entonces el proceso se bloquea. Un proceso bloqueado en un semáforo será restablecido por la ejecución de UP realizada por otro proceso.

Una versión de las primitivas DOWN y UP DOWN(S): IF (S = 0) { añadir proceso a la lista sleep() } decrementar S   UP(S): incrementar S IF (S > 0) { remover proceso P de la lista wake_up(P)

Cambio de espera ocupada a bloqueo Al ejecutar DOWN, un proceso será bloqueado, si el valor del semáforo es cero. Colocar al proceso en un estado de espera Transferir el control del CPU al planificador Al ejecutar UP, un proceso que se encuentra bloqueado en un semáforo será restablecido Se cambiará el estado de dicho proceso de bloqueado a listo y se pondrá en la cola correspondiente

Exclusión mutua con semáforos Los procesos concurrentes necesitan comunicarse entre sí para mantener una adecuada cooperación. Sea un semáforo (mutex) con las consideraciones siguientes: Toma solamente los valores 0 o 1. Su valor inicial es 1. Los procesos concurrentes comparten el semáforo mutex (comunicación a través de memoria) Esquema para exclusión mutua en sección crítica con semáforos REPETIR DOWN (mutex); /* sección entrada*/ sección_crítica(); UP (mutex); /* sección salida*/ sección_restante(); FIN

Problema del productor/consumidor con semáforos mutex full: cantidad de “buffers” llenos. Valor inicial = 0 empty: cantidad de “buffers” vacíos. Valor inicial = N void productor () { REPETIR producir (item) DOWN (empty) DOWN (mutex) almacenar (item) UP (mutex) UP (full) FIN } void consumidor () { REPETIR DOWN (full) DOWN (mutex) retirar (item) UP (mutex) UP (empty) consumir (item) FIN }

Otro problema clásico de sincronización de procesos: lectores/escritores BD sistema de reservaciones lectores escritores read write actualiza (escribe) consultan (leen)

Problema de lectores/escritores Sean : rc: cuenta la cantidad de lectores que están accediendo a BD. Compartida por los lectores. Valor inicial es 0.   mutex: semáforo que garantiza exclusión mutua en acceso a rc. Valor inicial es 1. wrt: semáforo que permite exclusión mutua en el acceso a la información de la BD. Valor inicial es 1.

Problema de lectores/escritores void lector ( ) { REPETIR DOWN (mutex) incrementar (rc) IF (readcount=1) DOWN(wrt); UP (mutex) leer_datos( ) decrementar (rc) IF (readcount=0) UP (wrt); UP(mutex) usar_datos( ) FIN } void escritor( ) { REPETIR elaborar_datos( ) DOWN (wrt) escribir_datos( ) UP (wrt) FIN } void main ( ) { parbegin lector ( ) . escritor ( ) parend }

Comunicación entre procesos. Formas de comunicación: Por medio de memoria compartida Responsabilidad de los programadores A través de sistemas de mensajes (intercambio de mensajes)‏ Responsabilidad del SO

Tipos de comunicación entre procesos por intercambio de mensajes Comunicación directa Cada proceso debe explícitamente indicar el nombre del receptor o emisor de la comunicación. send(P, mensaje)‏ Enviar un mensaje al proceso P receive(Q, mensaje)‏ Recibir un mensaje del proceso Q Comunicación indirecta Los mensajes se envían y reciben de buzones y no directamente de los procesos. send(A, mensaje)‏ Enviar un mensaje al buzón A receive(B, mensaje)‏ Recibir un mensaje del buzón B

Solución al problema productor/consumidor con mensajes Suposiciones: Una comunicación directa. Se utilizan N mensajes del mismo tamaño. El consumidor comienza enviando N mensajes vacíos al productor. Siempre que el productor tenga un elemento que enviar, toma un mensaje vacío y regresa uno ocupado. void productor( ) { REPETIR producir (item) receive (consumidor, mensaje) construir_mensaje (mensaje, item) send (consumidor, mensaje) FIN } void consumidor( ) { REPETIR N veces send (productor, mensaje) FIN REPETIR receive (productor, mensaje) extraer_elemento (mensaje, item) consumir (item) }

El problema de los filósofos comensales Breve descripción: Cinco filósofos que piensan y comen sentados alrededor de una mesa. Cuando un filósofo piensa, no interactúa, pero ocasionalmente trata de tomar los dos tenedores que están más cerca de él. Un filósofo podrá tomar primero un tenedor y después el otro. Cuando logra tener los dos tenedores, comerá. Cuando termina de comer pondrá los tenedores sobre la mesa. Consideraciones para la solución: Estado de cada filósofo: pensando, con hambre, comiendo. Autobloqueo por filósofo para cuando aún teniendo hambre, no puede comer porque sus vecinos tienen ocupados los tenedores. Garantizar la exclusión mutua.