1 Tema 8: Sincronización y Comunicación Sistemas Operativos.

Slides:



Advertisements
Presentaciones similares
Tabla de Contenido Concurrencia.
Advertisements

Lenguaje de programación Java
SCJP Sun Certified Programmer for Java 6
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Servicios de red e Internet
Tipo de Dato Abstracto Tipos de datos:
1.3 Programación modular. Subprogramas.
RMI Remote Method Invocation
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Modificadores.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
SCJP Sun Certified Programmer for Java 6
PAGINACIÓN Y SEGMENTACIÓN
Unidad III Administración de procesos
Sistemas Concurrentes: Paso de mensajes
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.
Correo electrónico Internet
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Asignación de Espacio No Contiguo
Arquitectura NFS El servidor NFS exporta uno o más directorios
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
 El acceso concurrente a datos compartidos puede dar pie a inconsistencia de datos  Mantener la consistencia de los datos requiere mecanismos para asegurar.
Introducción a los Sistemas Operativos
Programación secuencial vs programación concurrente
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.
Sincronización de Procesos
Tema 9.6: Sincronización de Procesos
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS
Monitores Cabudare, noviembre de 2010 Universidad Fermín Toro
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Javier Rodríguez Granados
Integrantes: Ma Carmen Zaragoza Santiago Leticia González Hernández Abraham Obispo Antonio Alexis González Ramírez Eduardo Hernández Tolentino.
Administrador de procesos
Introducción a los SOs.
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Unidad 2 – Gestión de Procesos
UTFSM - Sistemas Operativos
Introducción a los TADs
INTRODUCCIONHISTORIAQUE ES UN PLCELEMENTOS VENTAJAS TIPOSCONCLUSIONESREFERENCIAS.
TEMA 2: HARDWARE Y SISTEMAS OPERATIVOS
Arquitectura y Sistemas Operativos Gestión de Memoria Parte 1 1 Gestión de Memoria – Parte 1 Agenda Parte 1 –RequisitosRequisitos –EvoluciónEvolución –Carga.
Arquitectura de Computadores Clase 21 Memoria Virtual IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería.
DCE: Entorno de Computación Distribuida Profesor: Daniel Acuña Expositores: Francisco Almarza Gustavo Espinoza.
SISTEMAS OPERATIVOS Contenido: Descripción del proceso proceso nulo estado del procesador imagen del proceso información del BCP Miguel Ángel Martínez.
Tema 11: Segmentación y Paginación de la Memoria
Diagrama de clases Silvia Herzovich Rodrigo Aronas Matias Silversteyn.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
1 Introducción a la Programación Estructurada Introducción a la Informática Departamento de Sistemas Universidad del Cauca 2006.
Procesos Un proceso es un programa en ejecución. Modelo de procesos secuenciales. Abstracción del SO.
Desventajas Poco eficiente: lectura y escritura en disco es lenta Necesita otro mecanismo de sincronización para acceder a los datos Son los procesos.
METODOS DE PROGRAMACION I Ing. Vania Flores Pinto.
Yaritza Ortega Astrid Zúñiga Vishal Patel
Dr. Marcelo Julio Marinelli.  Establecer las Políticas de Seguridad de la Información es una de las acciones proactivas que ayudan a disminuir los riesgos.
D IRECCIONAMIENTO IP ( PARTE 2) Juan Carlos Rodriguez Gamboa.
1 Tema 13: Lectura y Escritura Sistemas Operativos (Tema 10 en apuntes prof. Rovayo)
Tema 1: Concurrencia con Java
Universidad de Panamá Facultad de Informática Programación V Tema: Monitores Profesor: Daniel Serrano Integrantes: Avelino Machuca Meybelin Rojas Jorge.
Optimización de Consultas Distribuidas. ÍNDICE Definiciones básicas Modelo de costo Estadísticas de la base de datos Optimización centralizada de consultas.
Asignaturas: Informática/Electiva I. Definición de Sistema operativo Conceptos Básicos Funciones de los Sistemas Operativos Clasificación Componentes.
G ESTIÓN DE LA MEMORIA Paginación y segmentación.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
GRUPO N°1 – SISTEMAS OPERATIVOS DISTRIBUIDOS LLAMADA A PROCEDIMIENTO REMOTO.
1.- Tecnologías LAN 2.- Protocolo de Interconexión de redes 3.- Protocolo de Internet IP 4.- Protocolo de mensaje de control (ICMP)
Tema 8: Sincronización y Comunicación
Transcripción de la presentación:

1 Tema 8: Sincronización y Comunicación Sistemas Operativos

2 Índice: 1.Monitores 2.Mensajes 3.Cooperación Mediante Mensajes 4.Mensajes en Red 5.Equivalencias entre primitivas 2 Tema 8: Sincronización y Comunicación

3 Índice: 1.Monitores 2.Mensajes 3.Cooperación Mediante Mensajes 4.Mensajes en Red 5.Equivalencias entre primitivas 3 Tema 8: Sincronización y Comunicación

4 1. Monitores Tema 8: Sincronización y Comunicación  Semáforos:  Artefactos del SO que se emplean como mecanismos de sincronización  ¡Pero no contienen la lógica de coordinación!  Monitores (Hoare, 1.974):  Estructura del lenguaje de programación  Encapsulan la lógica de coordinación junto con los mecanismos

5 1. Monitores Tema 8: Sincronización y Comunicación Definición:  Estructura del lenguaje compuesta por:  Datos locales a la estructura  Subprogramas (métodos) que pueden acceder a dichos datos  Cumplen:  Interfaz pública viene dada por los métodos (los datos privados)  Se garantiza que en cada momento sólo puede haber un proceso activo en algún método del monitor.  Permiten organizar procesos en espera mediante variables de condición + primitivas de suspensión y reanudación.

6 1. Monitores Tema 8: Sincronización y Comunicación monitor mimonitor { private: public: } void metodo1 () { } void metodo2 () { } Datos y métodos locales, variables de condición Métodos públicos

7 1. Monitores Tema 8: Sincronización y Comunicación monitor mimonitor { private: public: } void metodo1 () { } void metodo2 () { } Datos y métodos locales, variables de condición Métodos públicos condition C; if (tengo_que_esperar()) wait(C); signal(C);

8 1. Monitores Tema 8: Sincronización y Comunicación Reanudación mediante signal():  signal() actúa como return() (Brinch Hansen, 1975)  Simple, pero irritante para los programadores  Prioridad a proceso reanudado (Hoare, 1974)  Proceso que hace signal() se detiene hasta que proceso reactivado deja libre monitor.  Si proceso reactivado hace otro signal(): lista de procesos pendientes de reactivación.  Prioridad a proceso que hace signal() (Lampson y Redell, 1980)  Proceso puede hacer varios signal(): lista de procesos pendientes de reactivación  Puede haber vuelto a cambiar la condición de espera: if (condicion) wait(C); → while(condicion) wait(C);

9 1. Monitores Tema 8: Sincronización y Comunicación Productor/Consumidor con monitores: monitor prodCons { private: condition lleno, vacio; int cont= 0; tipo tabla[N]; int ins, ext= 0; void almacenar_dato (tipo dato) { tabla[ins]= dato; if (++ins == N) ins=0; } tipo extraer_dato () { tipo resultado= tabla[ext]; if (++ext==N) ext= 0; return resultado; } … … public: void Almacenar (tipo dato) { if (cont==N) wait (lleno); almacenar_dato (dato); cont++; if (cont==1) signal (vacio); } tipo Extraer () { if (cont==0) wait (vacio); tipo resultado= extraer_dato (); cont--; if (cont==N-1) signal (lleno); return resultado; } } void productor () { while(true) { tipo dato= producir_elemento(); ProdCons.Almacenar(dato); } } void consumidor() { while(true) { tipo dato= ProdCons.Extraer(); consumir(dato); } }

10 1. Monitores Tema 8: Sincronización y Comunicación “Inconvenientes”:  Espacio protegido para ser accedido sólo de la forma que está autorizado  Problema del compilador.  Riesgo de interbloqueo si desde un método de un monitor se llama a otro  El interbloqueo no depende de los mecanismos empleados, sino de la lógica.  Métodos diseñadados para unas aplicaciones, talvez no sean los más adecuados para otras  Si no sabes diseñar software reutilizable, estudia ISW x  No todos los lenguajes los soportan  Java, Modula3, Modula2, Pascal Concurrente…  Librería

11 1. Monitores Tema 8: Sincronización y Comunicación  Monitores en el lenguaje Java:  Cada objeto Java garantiza la exclusión mutua entre sus métodos declarados como synchronized.  No hay variables de condición   wait(C) → Método wait() heredado de clase Object.  signal(C) → Métodos notify()/notifyAll() heredados de clase Object: if (condicion) wait(C) → while(condicion) wait(); signal(C) → notifyAll();

12 Índice: 1.Monitores 2.Mensajes 3.Cooperación Mediante Mensajes 4.Mensajes en Red 5.Equivalencias entre primitivas 12 Tema 8: Sincronización y Comunicación

13 2. Mensajes Tema 8: Sincronización y Comunicación  Primitiva de sincronización y comunicación  Fácil implementación  Mecanismo empleado para coordinar componentes del sistema operativo en sistemas mincronúcleo  Fácil de portar a sistemas distribuidos  Primitivas: send(destino, mensaje) receive(destino, mensaje)sendrec(dest_fuent, mensaje)

14 2. Mensajes Tema 8: Sincronización y Comunicación 1.Destino y fuente 2.Formas de transmisión 3.Tipos de comunicación 4.Longitud de los mensajes 5.Aplazamiento indefinido

15 2. Mensajes Tema 8: Sincronización y Comunicación 1.Destino y fuente 2.Formas de transmisión 3.Tipos de comunicación 4.Longitud de los mensajes 5.Aplazamiento indefinido

Destino y fuente Tema 8: Sincronización y Comunicación  Denominación Directa:  destino y fuente son identificadores de procesos  Valores especiales: BROADCAST ANY  Denominación Indirecta:  Recurso compartido especial en el sistema: buzón  Los mensajes se leen y envían de/a buzones  Buzones tienen asociada algún tipo de nombre emisor receptor

Destino y fuente Tema 8: Sincronización y Comunicación  Denominación Directa:  Ventajas: simplicidad  Inconvenientes: Procesos deben conocerse entre sí Equivalente a un único “buzón” por proceso (menos flexible)  Denominación Indirecta:  Ventajas: Flexibilidad Emisor y receptor no necesitan conocerse Fácil de portar a ambientes distribuidos  Inconvenientes: Posibilidad de procesos intrusos P1 P2 P4 P3

18 2. Mensajes Tema 8: Sincronización y Comunicación 1.Destino y fuente 2.Formas de transmisión 3.Tipos de comunicación 4.Longitud de los mensajes 5.Aplazamiento indefinido

Formas de Transmisión Tema 8: Sincronización y Comunicación  Por copia  Directa  Indirecta  Por referencia  Directa  Global  Por copia en caso de escritura (COW)

Formas de Transmisión Tema 8: Sincronización y Comunicación  Transmisión por copia directa  Mensaje se copia de espacio de emisor a espacio de receptor emisorreceptor  Inconvenientes  tiempo empleado en copiar  ¿Y si receptor no está en memoria?

21 receptor Sistema Operativo 2.1 Formas de Transmisión Tema 8: Sincronización y Comunicación emisor  Inconvenientes:  tiempo empleado en copiar se multiplica por dos  ¿Y si espacio SO se llena?  Transmisión por copia indirecta  Mensaje se copia de espacio de emisor a espacio de SO, y de ahí a espacio de receptor

Formas de Transmisión Tema 8: Sincronización y Comunicación  Transmisión por referencia directa  Lo que se copia es un puntero al mensaje emisorreceptor  Inconvenientes:  Un puntero fuera de su espacio de memoria puede… No tener sentido Constituir un intento de violación del sistema de protección  Mensaje se convierte en recurso compartido

23 receptor Sistema Operativo 2.1 Formas de Transmisión Tema 8: Sincronización y Comunicación emisor  Inconvenientes:  ¿y si espacio compartido se llena?  ¿y si receptor olvida liberar mensaje?  Transmisión por referencia global  Emisor crea mensaje en espacio de SO, y se copia a espacio de receptor un puntero al mismo  Receptor asume responsabilidad de liberar mensaje

Formas de Transmisión Tema 8: Sincronización y Comunicación  Transmisión por copia en caso de escritura  El mensaje sólo se copia si se modifica por emisor o receptor  Necesitamos colaboración del hardware: mecanismos de protección de memoria. emisorreceptor

25 2. Mensajes Tema 8: Sincronización y Comunicación 1.Destino y fuente 2.Formas de transmisión 3.Tipos de comunicación 4.Longitud de los mensajes 5.Aplazamiento indefinido

Tipos de Comunicación Tema 8: Sincronización y Comunicación  Tanto emisión como recepción pueden ser:  Síncrona  Asíncrona  Emisión síncrona:  Emisor se bloquea hasta que receptor recibe mensaje  Recepción síncrona:  Receptor se bloquea hasta recibir mensaje  Emisión o recepción asíncrona:  No hay bloqueos  ¡No confundir asíncrona con no bloqueante!  Lo más habitual:  Recepción síncrona  Emisión asíncrona

Tipos de Comunicación Tema 8: Sincronización y Comunicación  Consecuencia de emisión asíncrona con copia intermedia: emisorreceptor  Gestión del espacio de las colas:  En espacio de procesos  En espacio de Sistema Operativo  Para evitar llenar espacio:  Limitar espacio o número de mensajes por proceso

Tipos de Comunicación Tema 8: Sincronización y Comunicación  Utilidad de recepción no bloqueante:  Procesos que deben hacer algo mientras no reciban mensajes  Procesos que pueden recibir mensajes a través de varios buzones receptor

29 2. Mensajes Tema 8: Sincronización y Comunicación 1.Destino y fuente 2.Formas de transmisión 3.Tipos de comunicación 4.Longitud de los mensajes 5.Aplazamiento indefinido

Longitud de los mensajes Tema 8: Sincronización y Comunicación  Tipos de mensajes:  De longitud fija  De longitud variable Longitud Variable  Ventajas:  Mayor flexibilidad  Inconvenientes: complica implementación  Si transferencia por referencia: distintos tamaños de ventana  Si transferencia por copia: tiempo de transmisión variable  Si colas de mensajes: no se pueden implementar con tablas

31 2. Mensajes Tema 8: Sincronización y Comunicación 1.Destino y fuente 2.Formas de transmisión 3.Tipos de comunicación 4.Longitud de los mensajes 5.Aplazamiento indefinido

Aplazamiento indefinido Tema 8: Sincronización y Comunicación  Aplazamiento indefinido en el tiempo:  Procesos que esperan para siempre… Recibir un mensaje que nunca llegará Entregar un mensaje que nunca se recogerá  Aplazamiento indefinido de mensajes:  Mensajes que nunca serán recogidos  Causa: procesos que  Abortan  Terminan

Aplazamiento indefinido Tema 8: Sincronización y Comunicación Soluciones:  Denominación directa:  Es trivial determinar sin proceso compañero abortado o terminado  Denominación indirecta:  Si buzón tiene asociado permisos, se puede comprobar si hay procesos en el sistema que puedan leer o escribir en él  Comunicación asíncrona:  Siempre puede aplazar mensajes  Solución: protocolos de confirmación (equivale a síncrona)

34 Índice: 1.Monitores 2.Mensajes 3.Cooperación Mediante Mensajes 4.Mensajes en Red 5.Equivalencias entre primitivas 34 Tema 8: Sincronización y Comunicación

35 3. Cooperación Mediante Mensajes Tema 8: Sincronización y Comunicación  Usaremos:  Denominación Indirecta (buzones)  Emisión Asíncrona  Recepción Síncrona  Por cada recurso compartido, un buzón B con un mensaje inicialmente  Secciones críticas asociadas al recurso:  Protocolo de entrada: receive(B,msg)  Protocolo de salida: send(B, msg)  ¡Mensaje actúa como testigo!

36 2. Cooperación Mediante Mensajes Tema 8: Sincronización y Comunicación Productor/Consumidor con mensajes while(true) { msg= producir_elemento(); send (datos, msg); } productor while(true) { receive(datos, &msg); consumir_elemento(msg); } consumidor datos

37 sync 2. Cooperación Mediante Mensajes Tema 8: Sincronización y Comunicación Productor/Consumidor con mensajes while(true) { msg= producir_elemento(); receive (sync, &ms); send (datos, msg); } productor while(true) { receive(datos, &msg); send(sync, msg); consumir_elemento(msg); } consumidor datos

38 Índice: 1.Monitores 2.Mensajes 3.Cooperación Mediante Mensajes 4.Mensajes en Red 5.Equivalencias entre primitivas 38 Tema 8: Sincronización y Comunicación

39 Índice: 1.Monitores 2.Mensajes 3.Cooperación Mediante Mensajes 4.Mensajes en Red 5.Equivalencias entre primitivas 39 Tema 8: Sincronización y Comunicación

40 4. Mensajes en Red Tema 8: Sincronización y Comunicación  Se pueden coordinar mediante mensajes procesos en diferentes máquinas  Hay que replantear algunos problemas, y tratar otros que aparecen:  Identificación destino/remitente  Fiabilidad transmisión  Interpretación de los datos

41 4. Mensajes en Red Tema 8: Sincronización y Comunicación Identificación destino/remitente  Denominación directa: no es viable  ¿Qué PID tiene el proceso destino en la otra máquina?  ¿Es único ese PID?  ¿De qué tipo es el PID? (depende de SO)  Denominación indirecta: ¿en qué máquina reside el buzón?  ¡Procesos dependen de ubicación física del buzón!  Autoridad central que asocia nombre lógico a nombre físico: mibuzon ↔

42 4. Mensajes en Red Tema 8: Sincronización y Comunicación Fiabilidad de la transmisión  Al enviar información a través de una red…  Puede no llegar  Puede llegar alterada  Puede llegar replicada  Puede llegar en orden distinto al que se envió  Los mensajes deben enviarse a través de una pila de protocolos  Esta pila debe garantizar una calidad de servicio mínima: Los mensajes llegan sin alterar y en el orden en que se envían De lo contrario, al menos se nos informa de ello  Si la calidad del servicio no es suficiente → será responsabilidad del servicio de mensajería implementar los protocolos que garanticen

43 4. Mensajes en Red Tema 8: Sincronización y Comunicación Interpretación de los datos  Determinados datos pueden codificarse de distinta manera, según plataforma software o incluso procesador:  Datos de más de un byte: Big endian (motorola, SPARC): byte más significativo en dirección más baja Little endian (intel): byte más significativo en dirección más alta  Caracteres: distintas coficaciones: ANSI, ASCII, EBCDIC, UTF-8, UNICODE…  Coma flotante: IEEE 754: precisión doble o simple

44 4. Mensajes en Red Tema 8: Sincronización y Comunicación Interpretación de los datos  Solución 1: enviar junto a cada dato un identificador de tipo de dato  Todo proceso debe conocer todo tipo de dato!  Hay que enviar más información (identificadores de tipos)  Solución 2: formatos estándar de red  Cada proceso sólo conoce sus formatos y los de red  Al enviar: convierte de formato nativo a formato de red  Al recibir: se convierte de formato de red a formato nativo  Doble conversión: ¡posiblemente innecesaria!  No obstante, coste computacional muy pequeño.

45 Índice: 1.Monitores 2.Mensajes 3.Cooperación Mediante Mensajes 4.Mensajes en Red 5.Equivalencias entre primitivas 45 Tema 8: Sincronización y Comunicación

46 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

47 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación Monitores con semáforos monitor mimonitor { private: condition C; public: void metodo1 () { … if (tengo_que_esperar()) wait(C); … } void metodo2 () { … signal(C); … } } semaforo excmut=CrearSemaforo(1); down(excmut ); up(excmut) ; struct condition { int bloqueados; semaforo esp; /* = 0 */ }; struct condition C; void wait(condition *varcond) { varcond->bloqueados++; up(excmut); down(varcond->esp); } ; #define signal( /* condition* */ varcond) { if (c->bloqueados > 0) { c->bloqueados--; up(c->esp); } else up(excmut); return; }

48 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

49 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación Buzones con semáforos struct buzon { semaforo excmut; /* = 1 */ int nummensajes; listasem esp_send; listasem esp_rec; int ins, ext; mensaje[] tabla; } semaforo esp; /* = 1 */ void send(buzon *b, mensaje *m) { down(b->excmut); if (b->num_mensajes == MSG_MAX)) { añadir(&b->esp_send,&esp); up(b->excmut); down(esp); } b->tabla[b->ins]=m; incrementar(&b->ins); b->nummensajes++; if (!lista_vacia(b->esp_rec)) { semaforo s=sacar_de_lista(&b->esp_rec); up(s); } else up(b->excmut); } semaforo esp; /* = 0 */ void receive(buzon *b, mensaje *m) { down(b->excmut); if (b->num_mensajes == 0) { añadir(&b->esp_receive,&esp); up(b->excmut); down(esp); } *m= b->tabla[b->ext]; incrementar(&b->ext); b->nummensajes--; if (!lista_vacia(b->esp_send)) { semaforo s=sacar_de_lista(&b->esp_send); up(s); } else up(b->excmut); }

50 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

51 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación Semáforos con monitores monitor arr_semáforos { private: struct { int cont; condition esp; } S[N]; public: void down (int i) /* Down sobre el semáforo i-ésimo */ { if (--S[i].contador < 0) wait(S[i].esp); } void up (int i) /* Up sobre el semáforo i-ésimo */ { if(++S[i].contador <=0) signal(S[i].esp); } }

52 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

53 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación Buzones con monitores monitor buzon { private: int nummensajes; varcond lleno, vacio; int ins, ext; mensaje[] tabla; public: void receive (mensaje *m) { if (num_mensajes == 0) wait (vacio); *m= tabla[ext]; incrementar(&ext); nummensajes--; signal (lleno); } void send(mensaje *m) { if (num_mensajes == MSG_MAX)) wait (lleno); tabla[ins]=*m; incrementar(&ins); nummensajes++; signal (vacio); } }

54 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

55 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación Semáforos con buzones cliente 1 servidor de semáforos cliente 2 identificación del semáforo referencia a buzón de proceso código de operación: CrearSemáforo destruirSemáforo Down Up valor inicial del contador, si operación es CrearSemáforo identificación del semáforo contador del semáforo lista de los buzones de los procesos bloqueados

56 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

57 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación Monitores con buzones monitor nombre { private: condition C1, C2; public: void metodo1() { … if (me_espero()) wait(C1); … } void metodo1() { … signal(C1); … } } servidor de monitores nombre del monitor referencia a buzón de respuesta código de operación: Entrar en Monitor Salir de monitor signal wait nombre de variable de condición, si signal o wait. nombre del monitor estado (libre u ocupado) lista de los buzones de procesos en espera de entrar por cada variable de condición: Nombre: C1 Lista de los buzones de los procesos bloqueados Nombre:C2 Lista de los buzones de los procesos bloqueados