La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

UNIVERSIDAD CENTROCCIDENTAL “LISANDRO ALVARADO” DECANATO DE CIENCIAS Y TECNOLOGÍA DEPARTAMENTO DE SISTEMAS Unidad III: “PROGRAMACIÓN CONCURRENTE Y CONTROL.

Presentaciones similares


Presentación del tema: "UNIVERSIDAD CENTROCCIDENTAL “LISANDRO ALVARADO” DECANATO DE CIENCIAS Y TECNOLOGÍA DEPARTAMENTO DE SISTEMAS Unidad III: “PROGRAMACIÓN CONCURRENTE Y CONTROL."— Transcripción de la presentación:

1 UNIVERSIDAD CENTROCCIDENTAL “LISANDRO ALVARADO” DECANATO DE CIENCIAS Y TECNOLOGÍA DEPARTAMENTO DE SISTEMAS Unidad III: “PROGRAMACIÓN CONCURRENTE Y CONTROL DE PROCESOS” I PARTE Elaborado por: Prof. (a) Aimará Vargas Revisión y aportes de los profesores: Robiro Azuaje Yvan Gutierrez Euvis Piña Salvatore González 1Sistemas Operativos Unidad III - Abril 2015

2 Programación concurrente y control de Procesos Contenido (I Parte) 1. Concurrencia 2. Procesos concurrentes: Definición Tipos 3. Mecanismos de comunicación y sincronización entre procesos 4. Problemas de Concurrencia Condiciones de Carrera Interbloqueos ( II Parte) 5. Solución a problemas de condiciones de carrera Exclusión mutua Secciones críticas 6. Implementaciones de secciones críticas 7. Problemas Clásicos para el estudio de comunicación y sincronización de procesos Productor - Consumidor Lectores y Escritores Barbero Dormido Cena de filósofos 8. Estructura de sincronización de procesos de alto nivel: Monitores 2Sistemas Operativos Unidad II - Marzo 2015

3 Capacidad del sistema de realizar actividades simultáneas, debido al aporte que realiza el sistema operativo. Dos o más procesos son CONCURRENTES si existen simultáneamente 3Sistemas Operativos Unidad III - Abril 2015 Concurrencia

4 Procesos concurrentes Existencia simultánea Ejecución simultánea Procesamiento paralelo lógico Procesamiento paralelo físico 4Sistemas Operativos Unidad III - Abril 2015 Procesos Concurrentes

5 Modelos:  Multiprogramación en un único procesador  Multiprocesador  Multicomputador (Redes, proceso distribuido) Razones para permitir la concurrencia:  Compartir recursos físicos (impresoras, dispositivos, memoria, ciclos de CPU).  Compartir recursos lógicos (variables,archivos, semáforos)  Acelerar los cálculos y tiempos de respuestas.  Modularidad. 5Sistemas Operativos Unidad III - Abril 2015 Procesos Concurrentes

6 Tipos de procesos  Independientes  Cooperativos Interacción entre procesos  Compiten y/ó comparten recursos  Se comunican y/ó sincronizan entre sí. 6Sistemas Operativos Unidad III - Abril 2015 Persiguen un objetivo común Ejecutan sin requerir ayuda de otros procesos Procesos Concurrentes

7 Mecanismos de comunicación  Archivos  Tuberías (pipes, FIFOS)  Variables en memoria compartida  Paso de mensajes Las operaciones de comunicación deben ser atómicas 7Sistemas Operativos Unidad III - Abril 2015 Mecanismos de Comunicación y Sincronización

8 Prof. Euvis Piña DuinDecanato de Cs. y Tecnología - UCLA Archivos P Q read(F1, A) A 5 F1 write(F1, M) 5 F Ventajas: F Comunica a un número ilimitado de procesos F Se ofrecen servicios sencillos y fáciles de utilizar F Desventajas: F Poco eficiente F Se necesita de un mecanismo alterno para la sincronización entre los procesos M 5 Mecanismos de Comunicación

9 Prof. Euvis Piña DuinDecanato de Cs. y Tecnología - UCLA Mecanismo de comunicación y sincronización Es visto como un seudoarchivo mantenido por el SO, sobre el cual se emplean las operaciones read y write comunes para el manejo de archivos. Proceso de Usuario Proceso de Usuario pipe SO write read Flujo de datos Unidireccional  Si el Pipe está vacío, se bloquea el lector.  Lectura de n bytes y Pipe con p bytes: Ø Si p n, devuelve n Ø Si p < n, devuelve p Ø La lectura elimina los datos de la tubería. Si el Pipe está lleno, se bloquea el escritor Tuberías Mecanismos de Comunicación

10 PIPES No tiene nombre, y por tanto, sólo puede ser utilizado entre los procesos que lo hereden. Tiene asociado dos descriptores de archivos: Uno se utiliza para leer y el otro para escribir. FIFOS Tuberías con nombre Sólo tiene asociado un descriptor de archivos que se puede utilizar para leer o escribir, ya que el flujo es bidireccional. 10Sistemas Operativos Unidad III - Abril 2015 Lecturas y escrituras atómicas Tuberías Mecanismos de Comunicación

11 ¿ Cómo se usa un pipe en un programa? Usar pipes es simplemente llamar a la función pipe y pedirle los dos descriptores de archivo que serán los extremos del "tubo" que se habrá construido. Algo así: int p[2]; pipe(p); Después de la invocación a pipe el arreglo de enteros p contiene en p[0] un descriptor de archivo para leer y, en p[1] un descriptor de archivo para escribir. Esto quiere decir que los pipes funcionan en una sola dirección. 11Sistemas Operativos Unidad III - Abril 2015 Tuberías Mecanismos de Comunicación

12 Sistemas Operativos. Unidad III - Abril 2015 SO P Q A: = M M: = 5 A 5 M F El sistema operativo crea la memoria compartida a petición del proceso de usuario. F El programador tiene la responsabilidad de proveer comunicación F Requiere de un mecanismo alterno para la sincronización. Crear M 5 Solo permite la comunicación entre procesos que ejecutan en la misma máquina Memoria Compartida Mecanismos de Comunicación

13 - El sistema operativo tiene la responsabilidad de proveer comunicación, inclusive si los procesos se encuentran en máquinas distintas. - Operaciones: * SEND (enviar) * RECEIVE (recibir) Tamaño del mensaje: Fijo ó Variable Flujo de Datos: Unidireccional ó Bidireccional 13Sistemas Operativos Unidad III - Abril 2015 Sistema de mensajes Mecanismos de Comunicación

14 Sistemas Operativos. Unidad III - Abril 2015 Tipos de comunicación: Según el nombrado: Directa: El enviador pasa directamente el mensaje M al destinatario indicado en la operación SEND. Si el receptor indica desde quien espera el mensaje la comunicación se llama: simétrica. Si no lo indica, se llama: asimétrica. P receive(?, A) send(P, m) 5 A 5 R m 5 Sistema de mensajes Mecanismos de Comunicación

15 Sistemas Operativos. Unidad III- Abril 2015 Indirecta: Los mensajes son enviados y recibidos a través de buzones Cada buzón tiene su propia identificación Operaciones: send receive Propietario = P -> P sólo lee de A. Usuario = Q -> Q sólo escribe en A Buzón P Q RECEIVE(A, n) SEND(A, m) A n 5 5 m 5 Sistema de mensajes Mecanismos de Comunicación

16 Sistemas Operativos. Unidad III - Abril 2015 Tipos de Comunicación Según el flujo: Unidireccional Bidireccional Según la sincronización: Bloqueante o síncrona No bloqueante o asíncrona Según la capacidad de almacenamiento de los mensajes por parte del SO: Con capacidad limitada Con capacidad ilimitada Sistema de mensajes Mecanismos de Comunicación

17 Sistemas Operativos - Unidad III - Abril 2015 El SO utiliza colas de mensajes asociadas a los enlaces de comunicación los cuales pueden mantener temporalmente los mensajes (“buffering”) hasta ser entregados a su destino. i) Capacidad cero: El link no puede tener ningún mensaje esperando en él.  Comunicación Sincrónica ii) Capacidad Limitada: A lo sumo “n“ mensajes pueden residir en la cola del link.  Comunicación Asincrónica iii) Capacidad Ilimitada: La cola tiene potencialmente longitud infinita.  Comunicación Asincrónica Sistema de mensajes Mecanismos de Comunicación

18 Sistemas Operativos. Unidad III - Abril 2015 TCP/IP: Pila de protocolos usada en Internet TCPUDP IP ( Incluyendo ICMP ) ARPRARP Interface de Red y Hardware CMOT SMTP FTP TELNET DNS SNMP TFTP BOOTP RPC XDR NFS Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

19 Sistemas Operativos. Unidad III - Abril 2015 Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación Capas conceptualesFronteras en Internet AplicaciónSoftware fuera del Sistema Operativo TransporteSoftware dentro del Sistema Operativo InternetSolo se utilizan direcciones IP Interfaz de RedSe utilizan direcciones físicas Hardware

20 Sistemas Operativos. Unidad III - Abril 2015 Direcciones IP: Cada computador tiene una dirección única, de 32 bits, que se utiliza en toda comunicación con ese computador. Estas direcciones corresponden a números decimales separados por puntos Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación 32-bit Numero BinarioEquivalente Decimal 10000001001101000000011000000000129.52.6.0 11000000000001010110000000000011192.5.48.3 0000101000000010000000000010010110.2.0.37 10000000000010100000001000000011128.10.2.3 10000000 1111111100000000128.128.255.0

21 Sistemas Operativos. Unidad III - Abril 2015 Clases de direcciones IP según el valor del primer octeto ClaseRango de valores A0 hasta 127 B128 hasta 191 C192 hasta 223 D224 hasta 239 E240 hasta 255 Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

22 Sistemas Operativos. Unidad III - Abril 2015 Las direcciones se dividen en dos partes: la primera identifica a la red y la segunda al nodo dentro de esa red. 18162432 Clase A0NetHost Clase B10NetHost Clase C110NetHost Clase D1110Multicast Clase E11110Reserved Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

23 Prof. Euvis Piña DuinDecanato de Cs. y Tecnología - UCLA Programación: Socket Abstracción que representa un extremo de la comunicación bidireccional entre dos procesos. Ofrece una interfaz para acceder a los servicios de red en el nivel transporte de los protocolos TCP/IP. Tipos: Stream (sock_stream): comunicación orientada a la conexión, confiable y garantiza la entrega ordenada de los mensajes. Utilizado para acceder al protocolo TCP. Datagrama (sock_dgram): comunicación no orientada a la conexión, no confiable y no garantiza la entrega ordenada de los mensajes. Utilizado para acceder al protocolo UDP. Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

24 Sistemas Operativos. Unidad III - Abril 2015 Puerto Número entero de 16 bits que es asociado a una determinada aplicación (bien sea servidora o cliente). Permite hacer la entrega de mensajes a la aplicación correcta. Puerto 1 Puerto n Puerto m UDP Mux Nivel IP Datagrama UDP Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

25 Sistemas Operativos. Unidad III - Abril 2015 Estructura General de Clientes y Servidores que usan Sockets tipo “Stream”. Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

26 Sistemas Operativos. Unidad III - Abril 2015 Operaciones más importantes sobre los sockets: socket(protocol_family,tipo,protocolo) Crea un socket para la aplicación Devuelve un número entero pequeño (descriptor del socket). bind(socket,localaddr,addrlen) Relaciona la dirección local IP al socket listen(socket,qlength) Permite que los servidores preparen un socket para las conexiones que vienen. El software a nivel de transporte coloca en cola de espera a las peticiones que lleguen mientras se está atendiendo a la petición actual. Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

27 Sistemas Operativos. Unidad III - Abril 2015 accept(socket,addr,addrlen) Permite que el servidor espere una conexión. Devuelve un nuevo socket al servidor dejando al socket original libre para aceptar otra conexión. connect(socket, destaddr,addrlen) Relaciona una dirección destino IP en forma permanente al socket. Una vez realizada la conexión no es necesario especificar el destino cada vez que se envía un mensaje. close (socket) Disminuye la cuenta de referencia para un socket ( ya que puede estar compartido). Destruye el socket cuando la cuenta llega a 0. Sistema de mensajes usando Sockets sobre TCP/IP Mecanismos de Comunicación

28 Mecanismos de Sincronización  Construcciones de los lenguajes concurrentes (procesos ligeros)  Servicios del sistema operativo:  Señales (asincronismo)  Tuberías (pipes, FIFOS)  Semáforos  Mutex y variables condicionales  Paso de mensajes Las operaciones de sincronización deben ser atómicas 28Sistemas Operativos Unidad III - Abril 2015 Mecanismos de Comunicación y Sincronización

29 29Sistemas Operativos Unidad III - Abril 2015 La sincronización es el mecanismo que controla el orden en que se ejecutan las tareas Tipos de Sincronización: Por Cooperación: La tarea A debe esperar que la tarea B finalice alguna actividad para poder continuar con su ejecución. Por Competición: La tarea A necesita acceder a un recurso X mientras la tarea B está accediendo al mismo. La tarea A debe esperar a que la tarea B termine de utilizar el recurso X para poder continuar y tener acceso al mismo Sincronización de tareas Mecanismos de Sincronización

30 30Sistemas Operativos Unidad III - Abril 2015 Ideados por Dijkstra en 1965 El semáforo es una estructura de datos que conformado por: Un valor entero Una cola de tareas Brinda protección a los datos de acceso limitado, garantizando que las operaciones sobre los mismos sean atómicas ( sólo una tarea puede manipular el dato en un instante de tiempo) Semáforos Mecanismos de Sincronización

31 Sólo sincronizan procesos dentro de un mismo equipo Es una variable numérica entera de tipo protegida (sólo la maneja el sistema operativo) que se manipula a través de operaciones atómicas bien definidas: * WAIT = DOWN = P(S) * SIGNAL = UP = V(S) 31Sistemas Operativos Unidad III - Abril 2015 Semáforos Mecanismos de Sincronización

32 Implementaciones de operaciones sobre semáforos wait(s) begin s = s - 1; if (s < 0) then end signal(s) begin s = s + 1; if (s <= 0) then end 32Sistemas Operativos Unidad III - Abril 2015 Semáforos Mecanismos de Sincronización

33 Usos: Implementación y control de las secciones críticas Manejo de la dependencia entre procesos TIPOS: - Binarios: Toman solamente los valores 0 ó 1. - Contadores: Su contenido puede ser mayor de 1. 33Sistemas Operativos Unidad III - Abril 2015 Semáforos Mecanismos de Sincronización

34 Prof. Euvis Piña DuinDecanato de Cs. y Tecnología - UCLA Sincronización usando semáforos Punto de Sincronización: Punto en el cual un proceso no puede progresar hasta que otro haya completado algún tipo de actividad. Ejemplo: - var flag :semaphore // inicialmente: flag = 0 - Código: Proceso i Proceso j... A := 7 * Y wait( flag) signal( flag)B := A + 5 Semáforos Mecanismos de Sincronización

35  Condiciones de carrera.  Interbloqueos. Condiciones de Carrera: El acceso concurrente a datos compartidos puede resultar en inconsistencia de datos. Ejemplos:  Asignar un valor a un dato compartido.  Problema del Productor y Consumidor 35Sistemas Operativos Unidad III - Abril 2015 Problemas de Concurrencia

36 36Sistemas Operativos Unidad III - Abril 2015 Registro o Posición de memoria Lee PID PID = 500 PID = 501 Escribe PID Lee PID PID = 500 PID = 501 Escribe PID Incrementa y Asigna PID Incrementa y Asigna PID Procesador 1Procesador 2 PID = 500 PID = 501 Generación de PID en un sistema multiprocesador Condiciones de carrera: Ejemplo. 1. Asignar un valor a un dato compartido

37 Prof. Euvis Piña DuinDecanato de Cs. y Tecnología - UCLA program Productor_Consumidor var N, count: integer; Procedure Productor begin while (count<N) do begin calcular_datos; Introducir_dato_Buffer; count := count+1; end Procedure Consumidor begin while (count>0) do begin Tomar_dato_buffer; count := count-1; utilizar_datos; end Begin N:=100; count:=0; parbegin Productor; Consumidor; parend; End. Condiciones de carrera: Ejemplo. 2. Problema del buffer limitado

38 Segmento de código (instrucciones) que operan sobre datos y recursos compartidos en cada proceso. Cuando un proceso opere sobre datos compartidos debe excluirse a los demás procesos de operar sobre esos datos Sección Crítica Exclusión Mutua 38Sistemas Operativos Unidad III - Abril 2015 Condiciones de carrera: Solucion.

39  Estructura general de cualquier mecanismo utilizado para resolver un problema basado en sección crítica: Entrada en la sección crítica Código de la sección crítica Salida de la sección crítica  Requisitos que debe ofrecer cualquier solución para resolver el problema de la sección crítica: Exclusión mutua Progreso Espera limitada 39Sistemas Operativos Unidad III - Abril 2015 Secciones críticas

40 Exclusión Mutua: Mecanismo que asegura la ejecución ordenada de los procesos cooperantes Cuando un proceso ejecuta su sección crítica, ningún otro proceso puede ejecutar su sección crítica. 40Sistemas Operativos Unidad III - Abril 2015 Secciones críticas: Requisitos

41 Progreso: Si ningún proceso está ejecutando su sección crítica y existen procesos que desean entrar a sus secciones críticas, entonces ÉSTOS PROCESOS pueden participar en la decisión de cuál será el siguiente en entrar en la sección crítica y esta selección no puede postergarse indefinidamente. 41Sistemas Operativos Unidad III - Abril 2015 Secciones críticas: Requisitos

42 Espera Limitada: Debe existir un límite sobre el número de veces que se permite que los demás procesos entren en su sección crítica, después de que un proceso haya efectuado una solicitud de entrar a su sección crítica y antes que la solicitud sea concedida. NO SE PUEDE POSPONER A UN PROCESO EN ESPERA INDEFINIDA PARA ENTRAR A SU SECCIÓN CRÍTICA. 42Sistemas Operativos Unidad III - Abril 2015 Secciones críticas: Requisitos

43 43Sistemas Operativos Unidad III - Abril 2015 A. Soluciones basadas en el hardware A.1) Desactivación de las interrupciones  El procesos no podría interrumpirse durante su ejecución  Sólo funciona en sistemas monoprocesador A.2) Instrucciones de Máquina  Test and Set  Implican Espera Activa  Puede ocurrir inanición e interbloqueo B. Soluciones basadas en Software: B.1) Algoritmos de programación B.2) Herramientas del sistema operativo  Mecanismos de sincronización entre procesos Secciones críticas: Alternativas de implementación

44 Soluciones basadas en software  Algoritmo de Dekker (implementado por Edsger Dijkstra)  Algoritmo de Peterson: simplificación del algoritmo de Dekker para dos procesos. 44Sistemas Operativos Unidad III - Abril 2015 Secciones críticas: Implementciones

45 45Sistemas Operativos Unidad III - Abril 2015 wait(s); /* entrada en la sección critica */ signal(s); /* salida de la sección critica */ Uso de semáforos para controlar secciones críticas

46 El hecho de que las operaciones de lectura y escritura sobre una tubería sean atómicas y que la operación de lectura bloquee a un proceso cuando se encuentra vacía la tubería, permite que este mecanismo sea utilizado para sincronizar procesos. Entonces: Leer dato de la tubería Código correspondiente a la sección crítica Escribir el dato en la tubería 46Sistemas Operativos Unidad III - Abril 2015 Secciones críticas con tuberias

47 program Tuberías: var int fildes[2]; char c; procedure Proceso_Uno; begin read(fildes[0], &c, 1); Seccion_critica write(fildes[1], &c, 1); end procedure Proceso_Dos; begin read(fildes[0], &c, 1); Seccion_critica write(fildes[1], &c, 1); end Begin pipe(fildes); write(fildes[1], &c, 1); parbegin Proceso_Uno; Proceso_Dos; parend End. 47Sistemas Operativos Unidad III - Abril 2015 Secciones críticas con tuberias

48 Establecer los procesos concurrentes cooperativos. Identificar los recursos que serán utilizados, particularmente los recursos compartidos. Definir las secciones críticas. Identificar las relaciones de dependencia entre los procesos concurrentes. Establecer el tipo de mecanismo necesario para relacionar los procesos: Mecanismo de Comunicación Mecanismo de sincronización 48Sistemas Operativos Unidad III - Abril 2015 Recomendaciones para trabajar con concurrencia

49 49Sistemas Operativos Unidad III - Abril 2015 Problemas clasicos Productor-Consumidor

50 Mecanismo de sincronización 50Sistemas Operativos Unidad III - Abril 2015 Problemas clasicos Lectores-Escritores

51 vaciosllenos 51Sistemas Operativos Unidad III - Abril 2015 Problema Productor – Consumidor ( usando semáforos ) Interpretación gráfica

52 Sistemas Operativos Unidad III - Abril 2015 program Productor_Consumidor; var critica, vacios, llenos: semaphore; procedure Productor begin while ejecucion do begin obtener_dato; P(vacios); P(critica); Introducir_dato_Buffer; V(critica); V(llenos); end procedure Consumidor begin while ejecucion do begin obtener_dato; P(llenos); P(critica); Tomar_dato_Buffer; V(critica); V(vacios); utilizar_datos; end Begin Iniciar_Semaforo(critica,1); Iniciar_Semaforo(vacios,1); Iniciar_Semaforo(llenos,0); parbegin Productor; Consumidor; parend; End. Productor – Consumidor ( usando semáforos )

53 Supóngase una base de datos, con muchos procesos que compiten por leer y escribir en ella. Se puede permitir que varios procesos lean de la base de datos al mismo tiempo, pero si uno de los procesos está escribiendo (es decir, modificando) la base de datos, ninguno de los demás debería tener acceso a ésta, ni siquiera los lectores. Los lectores no deben esperar a que terminen otros lectores porque haya un escritor esperando ( prioridad a lectores) 53Sistemas Operativos Unidad III - Abril 2015 Problema Lectores –Escritores

54 program Lectores_Escritores; Var dato, n_lectores: integer; sem_lec, mutex : semaphore; 54Sistemas Operativos Unidad III - Abril 2015 Una solución al problema de Lectores- Escritores con semáforos procedure Lector begin Wait(sem_lec); n_lectores := n_lectores +1; if(n_lectores=1) then begin Wait(mutex); end Signal(sem_lec); Escribir(“dato leído: ”, dato); Wait(sem_lec); n_lectores=n_lectores-1; if(n_lectores=0) then begin Signal(mutex); end Signal(sem_lec); end procedure Escritor begin Wait(mutex); dato := dato+2; Signal(mutex); end Begin dato:=5; n_lectores:=0; Iniciar_Semaforo(mutex,1); Iniciar_Semaforo(sem_lec, 1); parbegin Lector; Escritor; parend; End.

55 El problema consiste en una barbería en la que trabaja un barbero que tiene un único sillón de barbero y varias sillas para esperar. Cuando no hay clientes, el barbero se sienta en una silla y se duerme. Cuando llega un nuevo cliente, éste o bien despierta al barbero o — si el barbero está afeitando a otro cliente — se sienta en una silla (o se va si todas las sillas están ocupadas por clientes esperando). El problema consiste en realizar la actividad del barbero sin que ocurran condiciones de carrera. 55Sistemas Operativos Unidad III - Abril 2015 Problema del Barbero Dormilón

56 56Sistemas Operativos Unidad III - Abril 2015 Solución Barbero Dormilón con semáforos program Barbero_Dormilon; var barber, cliente, critica: semaphore; esperando: integer; ejecucion: boolean; procedure Barbero begin while(ejecucion) do begin P(clientes); P(critica); esperando:= esperando-1; V(barber); V(critica); cortar_el_pelo; end procedure Cliente begin P(critica); if (esperando < cantidad_sillas then begin esperando:=esperando+1; V(clientes); V(critica); P(barber); obtener_corte_de_pelo; end else v(critica); end

57 Program Prod_Cons var int fildes[2]; int dato_p[4]; int dato_c; Procedure Productor begin while ejecucion do begin write(fildes[1], dato_p, 4*sizeof(int)); end procedure Consumidor begin while ejecucion do begin read(fildes[0], &dato_c, sizeof(int)); end Begin pipe(fildes); parbegin Productor; Consumidor; parend End. 57Sistemas Operativos Unidad III - Abril 2015 Otra solución al problema Productor-Cosumidor con tuberías.

58 procedure Productor var msjp: mensaje; begin while (true) do begin receive(puede-producir, token1); msjp:= Producir(); send(puede-consumir, msjp); end procedure Consumidor var msjc: mensaje; begin while(true) do begin receive(puede-consumir, msjp); consumir(msjc); send(puede-producir, token2); end 58Sistemas Operativos Unidad III - Abril 2015 con buzones de mensajes Begin crear_mailbox (puede-producir); crear_mailbox (puede-consumir); parbegin Productor; Consumidor: parend; End Otra solución al problema Productor-Consumidor

59 59Sistemas Operativos Unidad III - Abril 2015 Monitores ¿Qué es un monitor? Componente pasivo -Frente a un proceso, que es activo. Constituye un modulo de un programa concurrente -Proporcionan un mecanismo de abstracción. -Encapsulan la representación de recursos abstractos junto a sus operaciones. Con las ventajas inherentes a la encapsulación -Las operaciones de un monitor se ejecutan, por definición en exclusión mutua. -Dispone de mecanismos específicos para la sincronización: variables “condición”

60 60Sistemas Operativos Unidad III - Abril 2015 Monitores Características de un monitor Variables permanentes -”Permanentes” porque existen y mantienen su valor mientras existe el monitor. -Describen el estado del monitor. -Han de ser inicializadas antes de usarse. Las acciones -Son parte de la interfaz, por lo que pueden ser usadas por los procesos para cambiar su estado. -Solo pueden acceder a las variables permanentes y sus parámetros y variables locales. -Son la única manera posible de cambiar el estado del monitor, Invocación por un proceso: nombreMonitor.operacion(lista_parametros).

61 61Sistemas Operativos Unidad III - Abril 2015 Monitores Funcionamiento de un monitor Respecto a la sincronización -La exclusión mutua se asegura por definición. a) Por lo tanto, solo un proceso puede estar ejecutando acciones de un monitor en un momento dado. b) Aunque varios procesos pueden en ese momento ejecutar acciones que nada tengan que ver con el monitor. -La sincronización condicionada Con frecuencia es necesaria una sincronización explicita entre procesos. Para ello, se usaran las variables “condición” - Se usan para hacer esperar a un proceso hasta que determinada condición sobre el estado del monitor se “anuncie”. -También para despertar a un proceso que estaba esperando por su causa.

62 62Sistemas Operativos Unidad III - Abril 2015 Monitores Sobre las variables “condición” Representan una condición de interés para los procesos que se sincronizan por medio del monitor -Cada variable tiene asociada una cola FIFO para los procesos que se están bloqueados. Ofrece dos operaciones atómicas básicas: -waitC(variable_condicion) el proceso es bloqueado en la cola de la variable “condición” - signalC(variable_condicion) “El primer proceso de la cola es desbloqueado” No confundirlas con las operaciones del semáforo

63 63Sistemas Operativos Unidad III - Abril 2015 Monitores Sobre las variables “condición” Instrucción waitC(c): -El proceso invocador queda “bloqueado” y pasa a la cola FIFO asociada a la variable c, en espera de ser despertado. - El cerrojo que garantiza la exclusión mutua del monitor queda libre. Instrucción signalC(c): -Si la cola de la señal esta vacia: no pasa nada y la operación sigue con su ejecución. Al terminar, el monitor está disponible para otro proceso. -Si la cola no esta vacia: Se saca el primer proceso de la cola y se “desbloquea” Políticas de reanudación determinan que proceso continua su ejecución

64 64Sistemas Operativos Unidad III - Abril 2015 Monitores Sobre las variables “condición” Diferencias entre las instrucciones de un monitor y las de un semáforo. SemáforosMonitores wait puede bloquearse.waitC siempre se bloquea. signal siempre tiene un efecto.signalC no tiene efecto si la cola está vacía. Signal desbloquea a un proceso bloqueado cualquiera. signalC siempre desbloquea al primer proceso en la cola. Un proceso desbloqueado por la instrucción signal puede continuar su ejecucion inmediatamente. Dependerá de la política de reanudación.

65 65Sistemas Operativos Unidad III - Abril 2015 Monitores: Estructura General program nombre_programa(Concurrent); Declaraciones de las variables globales; Nombre_Monitor: monitor; Declaraciones de las variables del monitor; procedure entry nombre_del_entry(opcionales) Declaraciones locales del entry begin Instrucciones de la entrada end nombre_del_entry Otros… procedure entry nombre_del_entry(); begin Inicialización de las variables monitor loop Controlar_entrys; end loop end nombre_del_monitor procedure process Nombre_Proceso(opcional) Declaraciones locales del proceso begin Instrucciones del proceso end nombre_del_proceso Otros… procedure process Nombre_Proceso(); Begin Inicialización de las variables globales Inicie Nombre_Monitor; parbegin nombre_de_Cada_proceso; parend End.

66 66Sistemas Operativos Unidad III - Abril 2015 Monitores: Asignación de recursos monitor asignador_de_recursos; Var recurso_en_uso: boolean; recurso_libre: condition; procedure entry Obtener_Recurso begin if (recurso_en_uso) then begin esperar(recurso_libre); end recurso_en_uso:=true; end Obtener_Recurso procedure entry Devolver_Recurso begin recurso_en_uso:=false; señalar(recurso_libre); end Devolver_Recurso Begin recurso_en_uso:=false; loop Controlar_entrys; end loop End asignador_de_recursos;

67 monitor controlaLyE; Var n_lect, n_escr: integer; okLeer: condition; //señala n_escr=0 okEscr: condition; //señala n_escr=0 AND n_lect=0 procedure entry Pide_Leer() begin while(n_escr>0) do waitC(okLeer); n_lect:= n_lect +1; end procedure entry Deja_De_Leer() begin n_lect:= n_lect -1; if (n_lect=0) then signalC(okEscr); //signalC(okEscr); end 67Sistemas Operativos Unidad III - Abril 2015 Monitores: Lectores-Escritores procedure operation Pide_Escribir() begin while(n_lect>0) OR (n_escr>0) do waitC(okEscr); n_escr:= n_escr +1; end procedure operation Deja_De_Escribir() begin n_escr:= n_escr-1; signalC(okEscr); signalC_all(okLeer); end

68 68Sistemas Operativos Unidad III - Abril 2015 Lectores-Escritores ¿Utilizando el monitor anterior?

69 69Sistemas Operativos Unidad III - Abril 2015 Productor-Consumidor ( ¿Utilizando Monitores?) program relacion_productor_consumidor; Var buffer_numero: integer; numero_depositado: semáforo; numero_recuperado: semáforo; procedure entry Productor var siguiente_resultado: integer; begin while true do begin calcular(siguiente_resultado); P(numero_recuperado); buffer_numero:=siguiente_resultado; V(numero_depositado); end procedure entry Consumidor var siguiente_resultado: integer; begin while true do begin P(numero_depositado); siguiente_resultado:=buffer_numero; V(numero_recuperado); escribir(siguiente_resultado); end Begin inicia_semaforo(numero_depositado,0); inicia_semaforo(numero_recuperado,1); parbegein Productor; Consumidor; parend End.


Descargar ppt "UNIVERSIDAD CENTROCCIDENTAL “LISANDRO ALVARADO” DECANATO DE CIENCIAS Y TECNOLOGÍA DEPARTAMENTO DE SISTEMAS Unidad III: “PROGRAMACIÓN CONCURRENTE Y CONTROL."

Presentaciones similares


Anuncios Google