como se comunican los procesos

Upload: enmanuel-martinez-olivares

Post on 07-Jul-2015

277 views

Category:

Documents


0 download

TRANSCRIPT

SISTEMAS OPERATIVOS Comunicacin entre procesos

Enmanuel Martnez Olivares

Tabla de Contenido Concurrencia. Problemas clsicos de comunicacin y sincronizacin. Mecanismos de comunicacin.

1 /72

CONCURRENCIA

2 /72

Procesos concurrentes Modelos Multiprogramacin en un nico procesador Multiprocesador Multicomputador (proceso distribuido) Razones Compartir recursos fsicos Compartir recursos lgicos Acelerar los clculos Modularidad Comodidad3 /72

Sistema multiprogramado con una CPUProceso A Proceso B Proceso C

Tiempo

4 /72

Sistema con multiprocesadorroceso roceso roceso roceso D

U1 U2

Tiempo

5 /72

Tipos de procesos concurrentes Tipos de procesos Independientes Cooperantes Interaccin entre procesos Compiten por recursos Comparten recursos

6 /72

PROBLEMAS CLASICOS DE COMUNICACION

7 /72

Prob. comunicacin y sincronizacin1

El problema de la seccin crtica El problema del productor-consumidor El problema de los lectores-escritores Comunicacin cliente-servidor

2

3

4

8 /72

1

Problema de la seccin crtica

Sistema compuesto por n procesos Cada uno tiene un fragmento de cdigo: seccin crtica Slo uno de los procesos en cada instante puede ejecutar en la seccin crtica. Cuando un proceso est ejecutando en la seccin crtica, ningn otro puede hacerlo

9 /72

Solucin al problema de la seccin crtica Estructura general de cualquier mecanismo utilizado para resolver el problema de la seccin crtica: Entrada en la seccin crtica Cdigo de la seccin crtica Salida de la seccin crtica Requisitos que debe ofrecer cualquier solucin para resolver el problema de la seccin crtica: Exclusin mutua Progreso Espera limitada

10 /72

2

Problema del productor-consumidorExiste una fuente de datos que se coloca en una cola para que sea consumido por otro procesoproducer: forever produce(item) place(item) consumer: forever take(item) consume(item)

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 produccin.11 /72

Problema del productor-consumidorProceso ProductorFlu o de datos

Proceso onsumidor

ecanismo de comunicaci n

12 /72

3

El problema de los lectores-escritoresLector Lector Escritor Lector Escritor

1. Varios procesos comparten datos. 2. Los procesos lectores slo leen los datos. 3. Los procesos escritores leen y escriben.

ec rso

4. Varios lectores p eden acceder sim ltneamente a los datos compartidos. 5. Se debe evitar q e accedan sim ltneamente n proceso escritor y c alq ier otro proceso.

13 /72

4

Comunicacin cliente-servidorComputadorPeticin

Computador

Proceso cliente S.O.Respuesta

Proceso servidor

14 /72

MECANISMOS DE COMUNICACION

15 /72

Mecanismos de comunicacin1. Tuberas (pipes, I OS) 2. Variables compartidas 3. Paso de mensajes.

POSIX es el acrnimo de Portable operating system interface, Unix based (Sistema operativo portable basado en UNIX). Una familia de estndares 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.16 /72

1

Tuberas (POSIX)

Mecanismo de comunicacin y sincronizacin Sin nombre: pipes Con nombre: I OS Slo puede utilizarse entre los procesos hijos del proceso que cre el pipe int pipe(int fildes[2]); Identificacin: dos descriptores de archivo Para lectura Para escritura lujo de datos: unidireccional Mecanismo con capacidad de almacenamiento17 /72

Comunicacin unidireccional con tuberaswrite roceso de suario roceso de suario read

i e Flu o de datos

18 /72

Comunicacin bidireccional con tuberaswrite roceso de suario read write roceso de suario read

i eFlu o de datos

i eFlu o de datos

19 /72

Tuberas read(fildes[0], buffer, n) Pipe vaco se bloquea el lector Pipe con p bytes Si p u n devuelve n Si p < n devuelve p

Si pipe vaco y no hay escritores devuelve 0 write(fildes[1], buffer, n) Pipe lleno se bloquea el escritor Si no hay lectores se recibe la seal SIGPIPE ecturas y escrituras atmicas (cuidado con tamaos grandes)20 /72

Tuberas con nombre en POSIX ( I OS) Igual que los pipes Mecanismo de comunicacin y sincronizacin con nombre Misma mquina Servicios int mkfifo(char *name, mode_t mode); Crea un I O con nombre name int open(char *name, int flag); Abre un I O (para lectura, escritura o ambas) Bloquea hasta que haya algn proceso en el otro extremo

ectura y escritura mediante read() y write()

Igual semntica que los pipes Cierre de un I O mediante close() Borrado de un I O mediante unlink()21 /72

2

Memoria compartidaProceso A Texto Datosvar1

Declaracin independiente de variablesProceso B Texto Datosvar2

2

Pila

Segmento de memoria compartida

Pila

22 /72

3

Paso de mensajes Exclusin mutua Sincronizar un proceso que recibe un mensaje y otro que lo enva Comunicacin de datos entre espacios de memoria diferentes (mismo computador, diferentes computadores)

Permite resolver:

Primitivas bsicas: send(destino, mensaje) enva un mensaje al proceso destino receive(destino, mensaje) recibe un mensaje del proceso destino

23 /72

Paso de mensajes Mltiples soluciones Aspectos de diseo Tamao del mensaje lujo de datos (unidireccional, bidireccional) Nombrado DirectoIndirecto (puertos, colas)

Sincronizacin (sncrono, asncrono) Almacenamiento

24 /72

Uso de colas y puertos

Proceso cliente

send

Proceso cliente Proceso clientereceive send Puerto

Proceso cliente

mensaje Cola de mensajes

mensaje

Comunicacin con colas de mensajes

Comunicacin con puertos

25 /72

Bibliografa http://es. ikipedia.org/ iki/POSIX

26 /72