3 procesos - cime.cl · creación de procesos •un proceso padre puede crear procesos hijos, los...

66
Sistemas Operativos 3 Procesos Prof. Javier Cañas R.

Upload: others

Post on 09-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Sistemas Operativos3 Procesos

Prof. Javier Cañas R.

Page 2: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Nota

• El texto guía es: Operating System Concepts, Eight Edition, Avi Silberschatz, Peter Baer Galvin, Greg Gagne

• Estas PPT están basadas en las PPT originales que el autor del texto guía mantiene en: http://www.os-book.com/

Copyright Note

The slides below are copyright Silberschatz, Galvin and Gagne, 2008. The slides are authorized for personal use, and for use in conjunction with a course for which Operating System Concepts is the prescribed text. Instructors are free to modify the slides to their taste, as long as the modified slides acknowledge the source and the fact that they have been modified. Paper copies of the slides may be sold strictly at the price of reproduction, to students of courses where the book is the prescribed text. Any use that differs from the above, and any for profit sale of the slides (in any form) requires the consent of the copyright owners; contact Avi Silberschatz ([email protected]) to obtain the copyright owners consent.

Page 3: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Temario

1. El concepto de proceso

2. Itineración de procesos

3. Operaciones sobre procesos

4. Comunicación Inter proceso (IPC)

5. Ejemplos de IPC

Page 4: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Objetivos

• Introducir el concepto de proceso como un programa en ejecución. Esta unidad forma la base de cualquier computación.

• Describir varias características de procesos como itineración, creación, término y comunicación.

Page 5: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

1 El Concepto de Proceso

• Un SO ejecuta en general, dos tipos de programas:

• Los SO Batch ejecutan los llamados jobs

• Los SO de Tiempo-Compartido ejecutan programas de usuario o tareas (task)

• Los términos job y procesos se pueden usar en forma (casi) equivalente.

Page 6: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Procesos

• Un proceso es un programa en ejecución. La ejecución de un proceso es secuencial.

• Todo proceso necesita los siguientes recursos:

‣ PC: program counter

‣ Stack

‣ Región de datos

Page 7: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Un proceso en memoria

Page 8: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Estados de Proceso

• En la medida que un proceso se ejecuta, va cambiando de estado. Estos estados son:

• new: el proceso es creado

• running: las instrucciones están siendo ejecutadas

• waiting: el proceso espera que ocurra algún evento

• ready: el proceso espera que se le asigne un procesador

• terminated: el proceso terminó su ejecución.

Page 9: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Diagrama de estado de Proceso

Page 10: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

La PCB (Process Control Block)

• La estructura de datos que mantiene la información asociada a cada proceso se denomina PCB. Contiene:

‣ Estado del proceso

‣ Program Counter

‣ Registros de CPU

‣ Información de Itineración de CPU

‣ Información de gestión de memoria

‣ Información de contabilización

‣ Información de estado de I/O

Page 11: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

La Process Control Block

Page 12: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Conmutación de la CPU entre procesos

Page 13: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

2 Itineración de procesos

• El SO utiliza las siguientes colas para la Itineración de Procesos:

๏ Cola de jobs: Conjunto de todos los procesos del sistema

๏ Cola Ready: Conjunto de todos los procesos que están en memoria principal listos y esperando ser ejecutados.

๏ Cola de dispositivos: Procesos que esperan por I/O.

๏ Los procesos se mueven entre estas colas en su ciclo de vida

Page 14: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Distintas colas de procesos

Page 15: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Representación de la Itineración de Procesos

Page 16: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Itineradores (Schedulers)

• Existen dos tipos de itineradores:

• De largo plazo (job scheduler): selecciona cual proceso se debe llevar a la cola ready. En algunos SO, este scheduler no existe o es mínimo (UNIX y MS/W)

• De corto plazo (CPU Scheduler): selecciona el proceso a ejecutar a continuación y asigna CPU.

Page 17: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Itinerador de mediano plazo

• Este esquema se denomina swapping. Reduce el grado de multiprogramación (Jobs en memoria principal).

Page 18: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Itineradores (Schedulers)

• El Itinerador de corto plazo es invocado frecuentemente (mseg). Debe ser rápido.

• El Itinerador de largo plazo se invoca en forma poco frecuente (segundos o minutos). Puede ser lento.

• El itinerador de mediano plazo controla el grado de multiprogramación.

Page 19: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Tipos de procesos

• Los procesos se pueden clasificar en dos tipos:

• Limitados por I/O: pasan más tiempo haciendo I/O que computaciones. Muchas ráfagas cortas de CPU

• Limitados por CPU: pasan más tiempo haciendo computaciones. Pocas ráfagas largas de CPU.

Page 20: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Context Switch

• Cuando la CPU conmuta a otro proceso, el sistema debe salvar el estado del antiguo proceso y cargar el estado salvado del nuevo proceso. Esta acción se denomina Context Switch (Conmutación de contexto).

• El contexto de un proceso está representado en la PCB

Page 21: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Context Switch

• El tiempo de Context Switch es “overhead”. Cuando se conmuta de un proceso a otro, no se realiza trabajo útil.

• Este tiempo depende del soporte de hardware.

Page 22: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

3 Operaciones sobre Procesos

• La mayoría de los SO permite la ejecución (pseudo) concurrente y pueden ser creados y eliminados dinámicamente.

• El SO debe proveer un mecanismo para crear y terminar un proceso.

Page 23: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Creación de Procesos

• Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos.

• Cada proceso tiene un identificador que se denomina pid. El pid permite realizar diversas operaciones sobre procesos.

Page 24: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Creación de procesos

• Los procesos pueden compartir recursos. Hay 3 opciones:

- Padres e hijos comparten todos sus recursos.

- Los hijos comparten un subconjunto de los recursos del padre.

- Padres e hijos no comparten recursos

Page 25: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Ejecución de procesos

• Hay dos alternativas para la ejecución:

• Los padres e hijos se ejecutan concurrentemente

• El padre espera hasta que el hijo termine.

• Hay dos alternativas para el espacio direccionable:

• El hijo es un duplicado del padre

• El hijo tiene un programa cargado en él

Page 26: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Ejemplo UNIX

• En UNIX:

• la llamada al sistema fork crea un nuevo proceso.

• La llamada exec se sa después del fork para reemplazar el espacio de memoria con un nuevo programa

Page 27: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Ejemplo en C

Page 28: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

¿Cuántos procesos se crean?

$ ./muchos_fork | sort |uniq|wc -l

Page 29: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Un árbol de procesos en Solaris

Page 30: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Terminación de procesos

• Un proceso ejecuta su última sentencia y pide al sistema operativo que lo elimine (exit).

• El hijo entrega datos de salida al padre (wait)

• Los recursos del proceso son liberados por el sistema operativo.

Page 31: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Terminación de procesos

• El padre puede terminar la ejecución de sus hijos (abort). Esto se origina porque:

- El hijo ha excedido sus recursos asignados

- La tarea asignada al hijo ya no es necesaria

- Si el padre termina, algunos SO no permiten que los hijos continúen vivos: En este caso se genera un término en cascada

Page 32: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

4 Comunicación Inter proceso (IPC)

• Los procesos en un SO pueden ser independientes o cooperativos.

• Procesos cooperativos pueden ser afectados o afectar otros procesos incluidos los datos compartidos.

Page 33: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... IPC

• Hay varias razones para que procesos cooperen:

- Compartir información

- Si el computador tiene más de un procesador se logra Speedup

- Modularidad

- Conveniencia: el usuario puede hacer varias cosas al mismo tiempo

Page 34: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... IPC

• Los procesos que cooperan necesitan IPC

• Hay dos modelos de IPC:

‣ Memoria compartida

‣ Paso de mensajes

Page 35: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Modelos de Comunicación

• Memoria compartida: Se establece una región de memoria que se comparte por los procesos que cooperan. Los procesos pueden intercambiar información escribiendo y leyendo.

• Permite máxima velocidad y conveniencia en la comunicación.

• Se requieren llamadas al sistema sólo para establecer las regiones compartidas de memoria.

Page 36: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Modelos de Comunicación

• Paso de mensajes: la comunicación se establece por medio de intercambios de mensajes.

• Resulta útil para intercambiar cantidades pequeñas de datos.

Page 37: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Los dos modelos

Page 38: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Procesos Cooperativos

• Los procesos independientes no pueden afectar o ser afectados por otros procesos.

• Procesos cooperativos pueden afectar ser afectados por otros procesos.

Page 39: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

El Problema del Productor-Consumidor• Este problema es un paradigma porque es

muy frecuente esta relación: un proceso genera información la cual es consumida por otro proceso.

• Se utiliza un buffer que puede ser: de tamaño ilimitado o un buffer limitado de tamaño fijo.

Page 40: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Productor-consumidor: estructuras de datos

• Los datos compartidos son:#define BUFFER_SIZE 10

typedef struct { . . .} item;

item buffer[BUFFER_SIZE];int in = 0;int out = 0;

Page 41: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Buffer: arreglo circular

in

out

t

az

Page 42: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Código del productor

while (true) { /* Produce an item */

while (((in + 1) % BUFFER SIZE ) == out) ; /* do nothing -- no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER SIZE; }

!

Page 43: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Código del consumidor while (true) { while (in == out) ; // do nothing -- nothing to consume

// remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; }

La solución es correcta, pero sólo utiliza BUFFER_SIZE-1elementos

Page 44: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

IPC: Paso de mensajes

• El paso de mensajes es un mecanismo para comunicar y sincronizar las acciones de un proceso.

• Los procesos se comunican sin necesidad de utilizar variables compartidas.

• IPC provee de dos mecanismos:

• send(msg): donde msg puede tener tamaño fijo o variable

• receive(msg)

Page 45: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Paso de mensajes

• Si P y Q desean comunicarse, necesitan:

• Establecer un enlace de comunicación entre ellos

• Intercambiar mensajes vía send y receive

• Enlace de comunicación:

• físico: (memoria compartida, bus de hw)

• usando propiedades lógicas

Page 46: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Preguntas interesantes

• ¿Cómo se establecen los enlaces de comunicación?

• ¿Puede asociarse un enlace con más de dos procesos?

• ¿Cuántos enlaces pueden existir entre cada par de procesos que se comunican?

• ¿Cuál es la capacidad de un enlace?

• ¿El enlace soporta mensajes de tamaño fijos o variables?

• ¿El enlace es unidireccional o bidireccional?

Page 47: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Modelos para send y rceive

• Los métodos para implementación lógica de operaciones send() y receive() permiten:

- Comunicación directa o indirecta

- Comunicación sincrónica o asincrónica

- Uso de buffers automáticos o explícitos

Page 48: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Comunicación Directa

• Los procesos deben nombrarse explícitamente:

• send(P, msg): envía mensaje a P

• receive(Q, msg): recibe un mensaje desde Q

Page 49: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Comunicación Directa

• Propiedades del enlace de comunicación:

‣ Los enlaces se establecen automáticamente.

‣ Un enlace se asocia con exactamente un par de procesos que se comunican.

‣ Los enlaces pueden ser unidireccionales, pero usualmente son bidireccionales.

Page 50: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Comunicación Indirecta

• ggg

• Los mensajes son dirigidos y recibidos por “mailboxes” (también llamados puertos)

• cada mailbox tiene un id único

• Procesos pueden comunicarse, sólo si comparten un mailbox.

Page 51: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Comunicación Indirecta

• Operaciones:

• Crear un mailbox

• Enviar y recibir mensajes a través de mailboxs.

• Destruir mailbox

• Operaciones primitivas:

• send(A, msg): envía mensaje al mailbox A

• receive(A, msg): recibe mensaje desde mailbox A.

Page 52: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Comunicación Indirecta: Dilema

• Se comparte un mailbox

➡P1, P2 y P3 comparten el mailbox A

➡P1 envía; P2 y P3 reciben

➡¿Quién toma el mensaje?

• Permitir que un enlace pueda ser asociado a lo más con dos procesos.

• Permitir a solo un proceso por vez ejecutar una operación receive.

• Permitir que el sistema en forma arbitraria seleccione el receptor. El proceso que envía es notificado de esta elección.

Page 53: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Sincronización

• El sistema de comunicación por mensajes puede ser bloqueante o no bloqueante.

• Un sistema bloqueante se considera sincrónico.

• el send bloqueante deja al proceso bloqueado hasta que el mensaje es recibido

• el receive bloqueante deja al receptor bloqueado hasta que el mensaje está disponible

Page 54: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Sincronización

• Un sistema no bloqueante se considera asincrónico.

• en el send no bloqueante el proceso envía y continua.

• en el receive no bloqueante del receptor recibe un mensaje válido o nulo.

Page 55: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Buffers

• Las colas de mensajes asociadas a un enlace se pueden implementar en uno de los siguientes modos:

1. Capacidad cero: El proceso que envía debe esperar al receptor (rendezvous)

2. Capacidad acotada: Capacidad para n mensajes. El proceso que envía debe esperar si el enlace está lleno.

3. Capacidad sin límite: El tamaño es infinito. El proceso que envía nunca espera

Page 56: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Ejemplo: implementación de co-Rutinas usando mensajes

• Subrutina

mainA

call A

return

call A

• Co-RutinaA

resume B

resume B

B

resume A

resume A

Page 57: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Co-Rutinas

• El mecanismo rendezvous es adecuado para la implementación de co-rutinas

Resume(id){ send(id, --); receive(id, --);}

Page 58: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

5 Ejemplos de IPC: POSIX shared memory• El proceso primero crea el segmento compartido:

segment_id = shmget(IPC_PRIVATE, size, S_IRUSR | S_IWUSR);

• Los procesos que deban accesar el segmento compartido deben estar asociados a él:

shared_memory = (char *) shmat(id, NULL, 0);

• Ahora es posible escribir en la memoria compartida:

sprintf(shared_memory, "Writing to shared memory");

• Una vez realizada la comunicación es posible desligar la memoria

shmdt(shared_memory);

Page 59: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Ejemplo: POSIX shared memory API

Page 60: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Ejemplo de IPC: Mach

• Mach está en el kernel de Mac OS X. Su mecanismo de comunicación está basado en mensajes:

• incluso las llamadas al sistema son mensajes

• Cada tarea, en el momento de su creación obtiene dos mailboxes: Kernel y Notify

• Sólo tres llamadas al sistema se necesitan:msg_send(), msg_receive(), msg_rpc()

• Los mailbox para comunicación se crean vía: port_allocate()

Page 61: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Comunicación vía Pipes

• Los Pipes fueron el primer mecanismo de comunicación de los primeros sistemas UNIX.

• Si utilizan pipes en los shell de UNIX cuando la salida de un comando sirve como entrada de otro:

ls | more

Page 62: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

... Pipes

• Normalmente pipes permiten la comunicación de dos procesos en la forma productor - consumidor estándar:

• El productor escribe en un extremo del pipe y el consumidor lee desde el otro extremo.

• Pipes corrientes son unidireccionales

Page 63: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Descriptores de archivos para pipes corrientes

• En UNIX se crea un pipe usando: pipe(int fd[]);

• Esta función crea un pipe que puede ser accesado usando el descriptor:

• fd[0] para leer el pipe

• fd[1] para escribir en el pipe

• Se utilizan las llamadas al sistema read() y write()

Page 64: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Descriptores de archivos para pipes corrientes

pipefd(0)

fd(0)

fd(1)

fd(1)

parent child

Page 65: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Ejemplo

Page 66: 3 Procesos - cime.cl · Creación de Procesos •Un proceso padre puede crear procesos hijos, los cuales a su vez pueden crear otro procesos creando de esta manera un árbol de procesos

Sistemas Operativos3 Procesos

Prof. Javier Cañas R.