Вы находитесь на странице: 1из 27

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 Comodidad
3 /72

Sistema multiprogramado con una CPU


Proceso A Proceso B Proceso C

Tiempo

4 /72

Sistema con multiprocesador


roceso 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 sincronizacin


1

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

8 /72

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

Problema del productor-consumidor


Existe una fuente de datos que se coloca en una cola para que sea consumido por otro proceso
producer: 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-consumidor


Proceso Productor
Flu o de datos

Proceso onsumidor

ecanismo de comunicaci n

12 /72

El problema de los lectores-escritores


Lector 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

Comunicacin cliente-servidor
Computador
Peticin

Computador

Proceso cliente S.O.


Respuesta

Proceso servidor

14 /72

MECANISMOS DE COMUNICACION

15 /72

Mecanismos de comunicacin
1. 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

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 almacenamiento
17 /72

Comunicacin unidireccional con tuberas


write roceso de suario roceso de suario read

i e Flu o de datos

18 /72

Comunicacin bidireccional con tuberas


write roceso de suario read write roceso de suario read

i e
Flu o de datos

i e
Flu 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

Memoria compartida
Proceso A Texto Datos
var1

Declaracin independiente de variables


Proceso B Texto Datos
var2

Pila

Segmento de memoria compartida

Pila

22 /72

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 Directo
Indirecto (puertos, colas)

Sincronizacin (sncrono, asncrono) Almacenamiento

24 /72

Uso de colas y puertos

Proceso cliente

send

Proceso cliente Proceso cliente


receive 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

Вам также может понравиться