La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "1 Tema 8: Sincronización y Comunicación Sistemas Operativos."— Transcripción de la presentación:

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

2 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 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 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 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 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 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 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 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 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 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 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 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 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 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

16 16 2.1 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

17 17 2.1 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 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

19 19 2.2 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)

20 20 2.1 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 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

22 22 2.1 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 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

24 24 2.1 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 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

26 26 2.3 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

27 27 2.3 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

28 28 2.3 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 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

30 30 2.4 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 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

32 32 2.5 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

33 33 2.5 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 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 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 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 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 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 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 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 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?  nombrebuzon@nombremaquina ¡Procesos dependen de ubicación física del buzón!  Autoridad central que asocia nombre lógico a nombre físico: mibuzon ↔ buzon1@maquina1

42 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 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 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 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 46 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

47 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 48 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

49 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 50 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

51 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 52 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

53 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 54 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

55 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 56 5. Equivalencias entre primitivas Tema 8: Sincronización y Comunicación = = =

57 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


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

Presentaciones similares


Anuncios Google