capitulo 3: procesos · operating system concepts – 9th edition 3.3 silberschatz, galvin and...

55
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Capitulo 3: Procesos

Upload: others

Post on 22-Aug-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Capitulo 3: Procesos

Page 2: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.2 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Capitulo 3: Procesos

Concepto Planificación de procesos Operaciones sobre procesos Comunicación entre procesos Ejemplos de Sistemas IPC La comunicación en los sistemas cliente-servidor

Page 3: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.3 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Objetivos

Introducir la noción de un proceso - un programa en ejecución, que constituye la base de todos los cálculos

Describir las diversas características de los procesos, incluyendo la programación, creación y terminación, y la comunicación

Explorar la comunicación entre procesos se utiliza la memoria compartida y paso mensaje Describir la comunicación en los sistemas cliente-servidor

Page 4: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.4 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Concepto

Un sistema operativo ejecuta una variedad de programas: Batch system – jobs Sistemas de tiempo compartido - programas de usuario o tareas

Libro de texto utiliza el trabajo y el proceso de términos casi intercambiables Proceso – un programa en ejecución, ejecución de procesos deben avanzar en forma secuencial múltiples partes

El código de programa, también llamado sección de texto Actividad actual incluyendo contador de programa, registros del procesador Pila contiene datos temporales

Parámetros de la función, las direcciones de retorno, variables locales Data section contiene las variables globales Heap contiene la memoría asignada dinámicamente durante la ejecución

Programa es una entidad pasiva almacenada en el disco (archivo ejecutable), el proceso está activo Un program se convierte en proceso cuando un archivo ejecutable es cargado en memoria.

La ejecución del programa se inicia via GUI ( a través de clics del ratón),entrada de línea de comandos por su nombre, etc

Un programa puede ser de varios procesos Considere la posibilidad de múltiples usuarios ejecutando el mismo programa

Page 5: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.5 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Proceso en Memoria

Page 6: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.6 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Estado del Proceso

Un proceso ejecutándose cambia de estado new running waiting ready terminated

Page 7: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.7 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Diagrama de estados de un proceso

Page 8: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.8 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Bloque de control de procesos (PCB)Información asociada a cada proceso(también llamado bloque de control de tarea) Estado del proceso - en ejecución, en espera,

etc Contador de programa - la ubicación de la

instrucción a ejecutar a continuación Registros del CPU - contenido de todos los

procesos - registros centricos Planificación de información del CPU - las

prioridades, la planificación de los punteros de cola

Administrador de información de memoria - la memoria asignada al proceso

La información contable - CPU usado, reloj de tiempo transcurrido desde el inicio, los límites de tiempo,

Información de estado de E / S - los dispositivos de E / S asignado al proceso, la lista de archivos abiertos

Page 9: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.9 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Cambio del CPU de un proceso a otro

Page 10: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.10 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Hilos

Hasta el momento, el proceso tiene un solo hilo de ejecución Consideremos la posibilidad de tener varios contadores de

programas por proceso Múltiples ubicaciones se pueden ejecutar al mismo

tiempo Múltiples hilos de control -> hilos

Entonces debe tener almacenamiento para obtener más información de hilo, contadores múltiples programas en PCB

Page 11: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.11 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Representación de un proceso en Linux

Representado por una estructura en Ctask_structpid t pid; /* process identifier */ long state; /* state of the process */ unsigned int time slice /* scheduling information */ struct task struct *parent; /* this process’s parent */ struct list head children; /* this process’s children */ struct files struct *files; /* list of open files */ struct mm struct *mm; /* address space of this process */

Page 12: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.12 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Cola de procesos listos y varias de colas de dispositivos de E / S

Page 13: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.13 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Representación de planificación de procesos

Diagrama de colas representan colas, recursos, flujos

Page 14: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.14 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Planificadores Planificador de largo plazo (o planificador de trabajos) - selecciona qué procesos

deben traerse de la cola de procesos listos Planificador de corto plazo (o planificador de CPU) - selecciona qué proceso debe

sera ejecutado y asigna CPU A veces el único planificador en un sistema

Planificador de corto plazo es invocado muy frecuentemente (milisegundos) => (debe ser rápido)

Planificador de largo plazo es invocado muy frecuentemente (segundos, minutos) => (puede ser lento)

El planificador a largo plazo controla el grado de multiprogramación

Los procesos se pueden describir como: I/O-bound process – pasa más tiempo haciendo operaciones de E / S que

cálculos, muchas ráfagas cortas de CPU CPU-bound process – más tiempo haciendo cálculos; pocas ráfagas de CPU

muy largas Planificador de largo plazo busca una buena "mezcla de procesos"

Page 15: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.15 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Incorporacion de un planificador de mediano plazo

Planificador de mediano plazo puede añadirse si el grado de programación múltiple debe disminuirse

Retira el proceso de la memoria, almacena en el disco, traer desde el disco para continuar la ejecución: swapping

Page 16: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.16 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Multitareas en sistemas móviles

Debido al espacio limitado de la pantalla, la interfaz de usuario de iOS prevé que :

Un proceso en primer plano individual es controlado a través de la interfaz de usuario

Multiples procesos en segundo plano, en memoria, ejecutanse, pero no en la pantalla, y con límites

Los límites incluyen solo una tarea, corta, recibir notificaciones de eventos específicos, tareas de larga duración como la reproducción de audio

Android se ejecuta en primer plano y el fondo, con menos límites Proceso en segundo plano utiliza un servicio para realizar tareas El servicio puede seguir funcionando incluso si el proceso de fondo se

suspende Servicio no tiene interfaz de usuario, el uso de memoria es pequeño

Page 17: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.17 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Cambio de contexto

Contexto de un proceso representado en el PCB

El tiempo de cambio de contexto es una sobrecarga; El sistema no realiza ninguna tarea durante la conmutación.

Cuanto más complejo sea el sistema operativo y el PCB -> mayor el cambio de contexto

El tiempo depende del soporte de hardware Algunos fabricantes de hardware ofrecen varios conjuntos de

registros por CPU -> múltiples contextos cargados a la vez

Page 18: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.18 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Operaciones de procesos

El sistema debe proveer mecanismos para crear procesos, terminarlos, etc

Page 19: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.19 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Creación de procesos

El proceso Padre crea procesos hijos, que a su vez crean otros procesos, formando un árbol de procesos

En general, el proceso se identifica y se administra a través de un identificador de proceso (pid)

Opciones de intercambio de recursos Padres e hijos comparten todos los recursos Los hijos comparten un subconjunto de los recursos del

proceso padre Padres e hijos no comparten recursos

Opciones de ejecución Padres e hijos se ejecutan concurrentemente El padre espera hasta que los hijos terminan

Page 20: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.20 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Un árbol de procesos en Linux

i ni tpi d = 1

sshdpi d = 3028

l ogi npi d = 8415

kthreaddpi d = 2

sshdpi d = 3610

pdfl ushpi d = 200

khel perpi d = 6

tcschpi d = 4005

emacspi d = 9204

bashpi d = 8416

pspi d = 9298

Page 21: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.21 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Creación de procesos (Cont.) Espacio de direcciones

El hijo es un duplicado de padre El hijo tiene un programa cargado

UNIX ejemplo fork() llamada de sistema que crea un nuevo proceso exec() llamada de sistema usada después de un fork() para reemplazar el espacio

de memoria con un nuevo programa

Page 22: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.22 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Programa en C creando 2 procesos separados

Page 23: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.23 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Creando un proceso separado vía Windows API

Page 24: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.24 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Terminación de un proceso El proceso ejecuta la última instrucción y solicita al S.O borrar (exit()) P

Los datos de salida desde un hijo a un padre (via wait()) Los recursos del proceso son reasignados por el S.O

El padre puede terminar la ejecución de los procesos de los hijos (abort()) El hijo ha superado los recursos asignados La tarea asignada al hijo ya no es necesaria Si el padre está terminando

Algunos sistemas operativos no permiten que el hijo continúe si su padre termina

– Todos los hijos terminan - terminación en cascada

Espera a la terminación, devuelve el pid:pid t pid; int status;

pid = wait(&status);

Si el padre no espera, entonces el proceso terminado es un zombie Si el padre terminó, los procesos son huérfanos

Page 25: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.25 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Arquitectura multiproceso – Chrome Browser Muchos navegadores web funcionaban como un solo proceso (algunos

todavía lo hacen) Si un sitio web causa problemas, el navegador completo se cuelga o falla

Google Chrome Browser es multiproceso con 3 categorías Proceso Browser gestiona la interfaz de usuario, disco y la E / S de la

red El proceso Renderer despliega las páginas web, se refiere a HTML,

Javascript, uno nuevo para cada sitio web abierto Se ejecuta en una sandbox , restringiendo el usos de disco, red y

minimizando las vulnerabilidades de seguridad El proceso Plug-in para cada tipo de plug-in

Page 26: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.26 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicación entre procesos Los procesos dentro de un sistema pueden ser independentes o

cooperativos Los procesos cooperativos pueden afectar o ser afectados por

otros procesos, incluyendo los datos compartidos. Razones para procesos cooperativos:

El intercambio de información Aceleración de cálculos Modularidad Conveniencia

Procesos cooperativos necesitan comunicación entre procesos interprocess communication (IPC)

Dos modelos de IPC memoria compartida paso de mensajes

Page 27: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.27 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Modelos de comunicación

Page 28: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.28 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

El problema del productor-consumidor

En el paradigma para los procesos cooperativos: el proceso productor produce información y esta es consumida por el proceso consumidor. Búfer ilimitado: no pone ningún límite práctico

en el tamaño del búfer Búfer ilimitado supone que hay un tamaño de

búfer fijo

Page 29: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.29 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Búfer limitado – Solución para memoria compartida Datos compartidos

#define BUFFER_SIZE 10

typedef struct {

. . .

} item;

item buffer[BUFFER_SIZE];

int in = 0;

int out = 0;

La solución es correcta, pero solo puede usarse BUFFER_SIZE-1 elementos

Page 30: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.30 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Búfer limitado – Productor

item next produced;

while (true) {

/* produce an item in next produced */

while (((in + 1) % BUFFER SIZE) == out)

; /* do nothing */

buffer[in] = next produced;

in = (in + 1) % BUFFER SIZE;

}

Page 31: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.31 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Bounded Buffer – Consumidor

item next consumed;

while (true) {while (in == out)

; /* do nothing */next consumed = buffer[out];

out = (out + 1) % BUFFER SIZE;

/* consume the item in next consumed */

}

Page 32: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.32 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicación entre procesos – Paso de mensajes

Mecanismo para los procesos para comunicación y sincronización de acciones

Sistema de mensajes - comunicar procesos entre sí sin recurrir a variables compartidas

IPC proporciona dos operaciones: send(message) – tamaño del mensaje fijo o variable receive(message)

Si P y Q desean comunicarse, es necesario que: establecer un enlace de comunicación entre ellos intercambiar mensajes a través de send / receive

Implementación del enlace de comunicación físico (por ejemplo, bus de memoria compartida, hardware) lógica (por ejemplo, buffering, directa o indirecta, sincronizada o

desincronizada, automática o explícita)

Page 33: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.33 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicación Directa

Los procesos deben llamarse entre si explícitamente: send (P, message) – mandar un mensaje al proceso P receive(Q, message) – recibe un mensaje del proceso Q

Propiedades de enlace de comunicación Los enlaces se establecen automáticamente Un enlace está asociada con exactamente un par de procesos

de comunicación Entre cada par existe exactamente un enlace El enlace puede ser unidireccional, pero usualmente es

bidireccional

Page 34: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.34 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicación indirecta

Los mensajes son dirigidos y recibidos de buzones (también conocidos como puertos)

Cada buzón tiene un id único Los procesos pueden comunicarse sólo si comparten un buzón

Propiedades de un enlace de comunicación Un enlace se establece sólo si los procesos comparten un

buzón común Un enlace puede estar asociada con muchos procesos Cada par de procesos puede compartir varios enlaces de

comunicación Enlace puede ser unidireccional o bidireccional

Page 35: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.35 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicación indirecta

Operaciones Crear un nuevo buzón Enviar y recibir mensajes a través de el buzón Destruir el buzón

Las primitivas se definen como:send(A, message) – mandar un mensaje al buzón de Areceive(A, message) – recibir un mensaje desde el buzón de A

Page 36: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.36 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicación indirecta

Buzón compartido P1, P2, y P3 comparten buzón A P1, envia; P2 and P3 reciben ¿Quién obtiene el mensaje?

Soluciones Permitir que un enlace para estar asociado con más de dos

procesos Permitir sólo un proceso a la hora de ejecutar una operación de

recepción Deje que el sistema para seleccionar arbitrariamente el receptor.

El remitente es notificado sobre quien fue el receptor.

Page 37: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.37 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Sincronización

El paso de mensajes puede ser con bloqueo o sin bloqueo

El bloqueo se considera síncrono El bloqueo de envío, bloquea al remitente hasta que se recibe el

mensaje El bloqueo de recepción, bloque al receptor hasta que esté

disponible un mensaje

El no bloqueo se considera asíncrono El no bloqueo de envio permite al remitente envíar el mensaje y

continuar El no bloqueo de recepción, permite al receptor recibir un mensaje

valido o nulo

Page 38: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.38 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Sincronización (Cont.)

Distintas combinaciones son posibles Si el emisor y el receptor estan bloqueados, tenemos un

rendezvous El problema de productor consumidor se volverá trivial

message next produced;

while (true) { /* produce an item in next produced */

send(next produced);

} message next consumed;while (true) { receive(next consumed); /* consume the item in next consumed */}

Page 39: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.39 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Buffering

Cola de mensajes que acompañan al enlace; implementada en una de estas tres maneras

1. Capacidad Cero - 0 mensajesRemitente debe esperar al receptor (rendezvous)

2. Limitado Capacidad - longitud finita de n mensajesRemitente debe esperar si el link está completo

3. Capacidad Ilimitado - longitud infinitaRemitente nunca espera

Page 40: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.40 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Ejemplos de sistemas IPC - POSIX

POSIX Shared Memory El proceso primero crea un segmento de memoria compartidashm_fd = shm_open(name, O CREAT | O RDRW, 0666);

También usado para abrir un segmento existente y compartirlo Estableces el tamaño del objetoftruncate(shm fd, 4096);

Ahora el proceso puede escribir en la memoria compartidasprintf(shared memory, "Writing to shared memory");

Page 41: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.41 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

IPC POSIX Productor

Page 42: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.42 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

IPC POSIX Consumidor

Page 43: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.43 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Ejemplos de sistemas IPC - Mach

La comunicación en Mach está basada en mensajes Incluso las llamadas al sistema son mensajes Cada tarea tiene dos buzones de correo - Kernel y Notify Sólo tres llamadas de sistema son necesarias para la transferencia

de mensajesmsg_send(), msg_receive(), msg_rpc()

Los buzones necesesarios para la comunicación, son creados víaport_allocate()

Enviar y recibir son operaciones flexibles, por ejemplo, cuatro opciones en caso de un buzón lleno: Esperar indefinidamente Esperar a lo más de n milisegundos Retornar inmediatamente Temporalmente alamacenar en caché el mensaje

Page 44: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.44 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Ejemplos de sistemas IPC – Windows

Paso de mensajes centralizado vía advanced local procedure call (LPC)

Sólo funciona entre procesos en el mismo sistema Utiliza puertos (como buzones) para establecer y mantener

canales de comunicación La comunicación funciona de la siguiente manera:

El cliente abre un subsistema manejador de conexion del puerto

El cliente envía una petición de conexión. El servidor crea dos puertos de comunicación privados y

devuelve el identificador de uno de ellos para el cliente. El cliente y el servidor utilizan el manejador correspondiente

al puerto y envian mensajes o callbacks y escuchan las respuestas.

Page 45: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.45 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Llamadas a procedimientos locales en Windows XP

Page 46: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.46 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicaciones en sistemas cliente - servidor

Sockets

Remote Procedure Calls

Pipes

Remote Method Invocation (Java)

Page 47: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.47 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Sockets

Un socket es definido como un punto final para la comunicación

La concatenación de la dirección IP y un puerto – un número incluido al inicio del paquete del mensaje para diferenciar los servicios de la red en un host

El socket 161.25.19.8:1625 refiere al puerto 1625 en el host 161.25.19.8

La comunicación se establece entre un par de sockets

Todos los puertos por debajo de 1024 son conocidos, se utilizan para servicios estándar

La dirección special 127.0.0.1 (loopback) hace referencia al sistema en el cual el sistema se está ejecutando

Page 48: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.48 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Comunicación de Sockets

Page 49: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.49 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Sockets en Java

3 tipos de sockets Connection-oriented

(TCP) Connectionless (UDP) MulticastSocket class–

los datos pueden ser enviados a múltiples receptores

Considerar este server “Date” :

Page 50: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.50 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Llamadas a procedimientos remotos Llamada a procedimiento remoto (RPC) abstrae las llamadas a procedimientos entre

los procesos de los sistemas en red Utiliza los puertos para la diferenciación de servicios

Stubs – client-side proxy para el procedimiento actual en el servidor El client-side stub localiza al servidor y a los parámetros de los marshalls t El server-side stub recibe el mensaje, desempaca los parámetros y ejecuta el

procedimiento en el servidor En Windows, el código del stub code compila desde una especificación escrita en

Microsoft Interface Definition Language (MIDL) La representación de datos es manejada vía External Data Representation (XDL),

que es un formato que toma en cuenta diferentes arquitecturas. Big-endian y little-endian

La comunicación remota tiene más escenarios de falla que la local Los mensajes se pueden entregar exactamente una vez en lugar de a lo sumo

una vez S.O tipicamente proporciona un servicio rendezvous (o matchmaker) para conectar

el cliente y el servidor

Page 51: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.51 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Ejecución de RPC

Page 52: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.52 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Pipes (tuberias)

Actúa como un conducto, permite a 2 procesos comunicarse

Problemas ¿Es la comunicación unidireccional o bidireccional? En el caso de la comunicación de dos vías, es un half o full-dúplex ? ¿Existe una relación (es decir, padres e hijos) entre los procesos de

comunicación? ¿Pueden las tuberias utilizarse en una red?

Page 53: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.53 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Pipes ordinarias Permiten la comunicación en el estándar productor-consumidor Productor escribe en un extremo (el extremo de escritura de la

tubería) Consumidor lee desde el otro extremo (la lectura final de la tubería) Tubos ordinarios son, por tanto unidireccional Requieren relación padre-hijo entre los procesos de comunicación

Windows llama a estas canalizaciones anónimas Tarea: buscar ejemplos en Linux de pipes

Page 54: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

3.54 Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

Named Pipes

Named Pipes son más poderosas que las tuberías ordinarias

La comunicación es bidireccional

Ninguna relación entre padres e hijos es necesaria entre los procesos de comunicación

Varios procesos pueden utilizar la conexión con nombre para la comunicación

Proporcionan en ambos sistemas UNIX y Windows

Page 55: Capitulo 3: Procesos · Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013 Objetivos Introducir la noción de un proceso - un programa en ejecución,

Silberschatz, Galvin and Gagne ©2013Operating System Concepts – 9th Edition

End of Chapter 3