La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tabla de Contenido Concurrencia.

Presentaciones similares


Presentación del tema: "Tabla de Contenido Concurrencia."— Transcripción de la presentación:

0 Comunicación entre procesos
SISTEMAS OPERATIVOS Comunicación entre procesos Mg. Samuel Oporto Díaz Lima, 11 de junio 2005

1 Tabla de Contenido Concurrencia.
Problemas clásicos de comunicación y sincronización. Mecanismos de comunicación.

2 CONCURRENCIA

3 Procesos concurrentes
Modelos Multiprogramación en un único procesador Multiprocesador Multicomputador (proceso distribuido) Razones Compartir recursos físicos Compartir recursos lógicos Acelerar los cálculos Modularidad Comodidad

4 Sistema multiprogramado con una CPU

5 Sistema con multiprocesador

6 Tipos de procesos concurrentes
Independientes Cooperantes Interacción entre procesos Compiten por recursos Comparten recursos

7 PROBLEMAS CLASICOS DE COMUNICACION

8 Prob. comunicación y sincronización
El problema de la sección crítica El problema del productor-consumidor El problema de los lectores-escritores Comunicación cliente-servidor 1 2 3 4

9 Problema de la sección crítica
1 Sistema compuesto por n procesos Cada uno tiene un fragmento de código: sección crítica Sólo uno de los procesos en cada instante puede ejecutar en la sección crítica. Cuando un proceso está ejecutando en la sección crítica, ningún otro puede hacerlo

10 Solución al problema de la sección crítica
Estructura general de cualquier mecanismo utilizado para resolver el problema de la 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

11 Problema del productor-consumidor
2 Existe una fuente de datos que se coloca en una cola para que sea consumido por otro proceso El productor puede generar sus datos en cualquier momento El consumidor puede coger un dato solamente cuando hay alguno No se puede consumir un dato hasta que se termine su producción. producer: consumer: forever forever produce(item) take(item) place(item) consume(item)

12 Problema del productor-consumidor

13 El problema de los lectores-escritores
3 Varios procesos comparten datos. Los procesos lectores sólo leen los datos. Los procesos escritores leen y escriben. Varios lectores pueden acceder simultáneamente a los datos compartidos. Se debe evitar que accedan simultáneamente un proceso escritor y cualquier otro proceso.

14 Comunicación cliente-servidor
4 Comunicación cliente-servidor

15 MECANISMOS DE COMUNICACION

16 Mecanismos de comunicación
Tuberías (pipes, FIFOS) Variables compartidas Paso de mensajes. POSIX es el acrónimo de Portable operating system interface, Unix based (Sistema operativo portable basado en UNIX). Una familia de estándares de llamadas al sistema definidos por el IEEE y especificados formalmente en el IEEE 1003, intenta estandarizar las interfaces de los sistemas operativos para que las aplicaciones se ejecuten en distintas plataformas.

17 Tuberías (POSIX) Mecanismo de comunicación y sincronización
1 Mecanismo de comunicación y sincronización Sin nombre: pipes Con nombre: FIFOS Sólo puede utilizarse entre los procesos hijos del proceso que creó el pipe int pipe(int fildes[2]); Identificación: dos descriptores de archivo Para lectura Para escritura Flujo de datos: unidireccional Mecanismo con capacidad de almacenamiento

18 Comunicación unidireccional con tuberías

19 Comunicación bidireccional con tuberías

20 Tuberías read(fildes[0], buffer, n) Pipe vacío se bloquea el lector
Pipe con p bytes Si p ³ n devuelve n Si p < n devuelve p Si pipe vacío y no hay escritores devuelve 0 write(fildes[1], buffer, n) Pipe lleno se bloquea el escritor Si no hay lectores se recibe la señal SIGPIPE Lecturas y escrituras atómicas (cuidado con tamaños grandes)

21 Tuberías con nombre en POSIX (FIFOS)
Igual que los pipes Mecanismo de comunicación y sincronización con nombre Misma máquina Servicios int mkfifo(char *name, mode_t mode); Crea un FIFO con nombre name int open(char *name, int flag); Abre un FIFO (para lectura, escritura o ambas) Bloquea hasta que haya algún proceso en el otro extremo Lectura y escritura mediante read() y write() Igual semántica que los pipes Cierre de un FIFO mediante close() Borrado de un FIFO mediante unlink()

22 Memoria compartida 2 Declaración independiente de variables

23 Paso de mensajes Permite resolver: Primitivas básicas: Exclusión mutua
3 Permite resolver: Exclusión mutua Sincronizar un proceso que recibe un mensaje y otro que lo envía Comunicación de datos entre espacios de memoria diferentes (mismo computador, diferentes computadores) Primitivas básicas: send(destino, mensaje) envía un mensaje al proceso destino receive(destino, mensaje) recibe un mensaje del proceso destino

24 Paso de mensajes Múltiples soluciones Aspectos de diseño
Tamaño del mensaje Flujo de datos (unidireccional, bidireccional) Nombrado  Directo  Indirecto (puertos, colas) Sincronización (síncrono, asíncrono) Almacenamiento

25 Uso de colas y puertos

26 Bibliografía


Descargar ppt "Tabla de Contenido Concurrencia."

Presentaciones similares


Anuncios Google