mg. samuel oporto díaz lima, 11 de junio 2005 comunicación entre procesos sistemas operativos

Post on 21-Feb-2015

15 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

33 /72/72

CONCURRENCIA

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

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

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

77 /72/72

Tipos de procesos concurrentes• Tipos de procesos

– Independientes – Cooperantes

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

88 /72/72

PROBLEMAS CLASICOS DE COMUNICACION

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

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

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

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

1313 /72/72

Problema del productor-consumidor

ProcesoProductor

ProcesoConsum idor

M ecanism o de com unicación

Flu jo de datos

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

1515 /72/72

Comunicación cliente-servidor

Computador Computador

Procesocliente

S.O.

P etic ión

R espuesta

Procesoservidor

4

1616 /72/72

MECANISMOS DE COMUNICACION

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.

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

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

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

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)

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

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

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

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

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

2727 /72/72

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

top related