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

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

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

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

Mg. Samuel Oporto Díaz Lima, 11 de junio 2005

Comunicación entre procesos

SISTEMAS OPERATIVOS

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

22 /72/72

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

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

33 /72/72

CONCURRENCIA

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

44 /72/72

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

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

55 /72/72

Sistema multiprogramado con una CPU

T ie m p o

P ro c e so A

P ro c e so B

P ro c e so C

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

66 /72/72

Sistema con multiprocesador

T ie m p o

P ro c e so B

P ro c e so A

P ro c e so C

P ro c e so D

C P U 1

C P U 2

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

77 /72/72

Tipos de procesos concurrentes• Tipos de procesos

– Independientes – Cooperantes

• Interacción entre procesos – Compiten por recursos – Comparten recursos

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

88 /72/72

PROBLEMAS CLASICOS DE COMUNICACION

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

99 /72/72

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

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

1010 /72/72

Problema de la sección crítica• 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

1

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

1111 /72/72

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

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

1212 /72/72

Problema del productor-consumidor• Existe una fuente de datos que se coloca en una cola

para que sea consumido por otro proceso

1. El productor puede generar sus datos en cualquier momento

2. El consumidor puede coger un dato solamente cuando hay alguno

3. 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)

2

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

1313 /72/72

Problema del productor-consumidor

ProcesoProductor

ProcesoConsum idor

M ecanism o de com unicación

Flu jo de datos

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

1414 /72/72

El problema de los lectores-escritores

EscritorLector Lector Escritor Lector

Recurso

1. Varios procesos comparten datos.

2. Los procesos lectores sólo leen los datos.

3. Los procesos escritores leen y escriben.

4. Varios lectores pueden acceder simultáneamente a los datos compartidos.

5. Se debe evitar que accedan simultáneamente un proceso escritor y cualquier otro proceso.

3

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

1515 /72/72

Comunicación cliente-servidor

Computador Computador

Procesocliente

S.O.

P etic ión

R espuesta

Procesoservidor

4

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

1616 /72/72

MECANISMOS DE COMUNICACION

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

1717 /72/72

Mecanismos de comunicación1. Tuberías (pipes, FIFOS)

2. Variables compartidas

3. 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.

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

1818 /72/72

Tuberías (POSIX)• 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

1

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

1919 /72/72

Comunicación unidireccional con tuberías

P rocesode U suario

P rocesode U suario

p ipe

S O

w rite read

F lu jo de da tos

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

2020 /72/72

Comunicación bidireccional con tuberías

P rocesode U suario

P rocesode U suario

SO

w rite w rite readread

F lu jo de datos

F lu jo de datos

p ipe

p ipe

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

2121 /72/72

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)

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

2222 /72/72

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()

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

2323 /72/72

Memoria compartida

Declaración independiente de variables

D atos

Texto

Proceso A Proceso B

P ila

TextoD atos

P ilaSegm ento de m em oriacom partida

var1

2

var2

2

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

2424 /72/72

Paso de mensajes• 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

3

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

2525 /72/72

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

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

2626 /72/72

Uso de colas y puertos

Com unicación con puertosCom unicación con colas de m ensajes

Proceso c lien te Proceso c lien tesend

m ensaje

receive

Cola de m ensajes

Proceso c lien te Proceso c lien te

m ensaje

Puertosend

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

2727 /72/72

Bibliografía• http://es.wikipedia.org/wiki/POSIX