Descargar la presentación
La descarga está en progreso. Por favor, espere
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.