C3_Procesos

Embed Size (px)

Citation preview

Sistemas Operativos3 ProcesosProf. Oscar Encina C.

Nota El texto gua es: Operating System Concepts, Eight Edition, Avi Silberschatz, Peter Baer Galvin, Greg Gagne Estas PPT estn basadas en las PPT originales que el autor del texto gua mantiene en: http://www.os-book.com/Copyright NoteThe 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 modied slides acknowledge the source and the fact that they have been modied. 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 prot 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.

Temario1. El concepto de proceso 2. Itineracin de procesos 3. Operaciones sobre procesos 4. Comunicacin Inter proceso (IPC) 5. Ejemplos de IPC

Objetivos Introducir el concepto de proceso comoun programa en ejecucin. Esta unidad forma la base de cualquier computacin. como itineracin, creacin, trmino y comunicacin.

Describir varias caractersticas de procesos

1 El Concepto de Proceso Un SO ejecuta en general, dos tipos deprogramas:

Los SO Batch ejecutan los llamados jobs Los SO de Tiempo-Compartido ejecutan programas de usuario o tareas (task)

Los trminos job y procesos se puedenusar en forma (casi) equivalente.

... Procesos Un proceso es un programa en ejecucin.La ejecucin de un proceso es secuencial. recursos:

Todo proceso necesita los siguientes PC: program counter Stack Regin de datos

Un proceso en memoria

Estados de Proceso En la medida que un proceso se ejecuta, vacambiando de estado. Estos estados son:

new: el proceso es creado running: las instrucciones estn siendo ejecutadas waiting: el proceso espera que ocurra algn evento ready: el proceso espera que se le asigne un procesador terminated: el proceso termin su ejecucin.

Diagrama de estado de Proceso

La estructura de datos que mantiene la Estado del proceso Program Counter Registros de CPU Informacin de Itineracin de CPU Informacin de gestin de memoria Informacin de contabilizacin Informacin de estado de I/O

La PCB (Process Control Block)

informacin asociada a cada proceso se denomina PCB. Contiene:

La Process Control Block

Conmutacin de la CPU entre procesos

2 Itineracin de procesosEl SO utiliza las siguientes colas para la Itineracin de Procesos:

Cola de jobs: Conjunto de todos los procesos del sistema Cola Ready: Conjunto deytodos los procesos que estn en memoria principal listos esperando ser ejecutados. Cola de dispositivos: Procesos que esperan por I/O. Los procesos se mueven entre estas colas en su ciclo de vida

Distintas colas de procesos

Representacin de la Itineracin 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 mnimo (UNIX y MS/W) De corto plazo (CPU Scheduler): selecciona el proceso a ejecutar a continuacin y asigna CPU.

Este esquema se denomina swapping.

Itinerador de mediano plazoReduce el grado de multiprogramacin (Jobs en memoria principal).

... Itineradores (Schedulers) El Itinerador de corto plazo es invocado El Itinerador de largo plazo se invoca enforma poco frecuente (segundos o minutos). Puede ser lento. grado de multiprogramacin. frecuentemente (mseg). Debe ser rpido.

El itinerador de mediano plazo controla el

Tipos de procesos Los procesos se pueden clasicar en dostipos:

Limitados por I/O: pasan ms tiempo haciendo I/ O que computaciones. Muchas rfagas cortas de CPU Limitados por CPU: pasan ms tiempo haciendo computaciones. Pocas rfagas largas de CPU.

Context Switch Cuando la CPU conmuta a otro proceso, elsistema debe salvar el estado del antiguo proceso y cargar el estado salvado del nuevo proceso. Esta accin se denomina Context Switch (Conmutacin de contexto). representado en la PCB

El contexto de un proceso est

... Context Switch El tiempo de Context Switch eshardware. overhead. Cuando se conmuta de un proceso a otro, no se realiza trabajo til.

Este tiempo depende del soporte de

3 Operaciones sobre Procesos La mayora de los SO permite la ejecucin(pseudo) concurrente y pueden ser creados y eliminados dinmicamente. crear y terminar un proceso.

El SO debe proveer un mecanismo para

Creacin de Procesos Un proceso padre puede crear procesoshijos, los cuales a su vez pueden crear otro procesos creando de esta manera un rbol de procesos. denomina pid. El pid permite realizar diversas operaciones sobre procesos.

Cada proceso tiene un identicador que se

... Creacin 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

Ejecucin de procesos Hay dos alternativas para la ejecucin: Hay dos alternativas para el espaciodireccionable:

Los padres e hijos se ejecutan concurrentemente El padre espera hasta que el hijo termine.

El hijo es un duplicado del padre El hijo tiene un programa cargado en l

Ejemplo UNIX En UNIX: la llamada al sistema fork crea un nuevo proceso.La llamada exec se sa despus del fork para reemplazar el espacio de memoria con un nuevo programa

Ejemplo en C

Cuntos procesos se crean?

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

Un rbol de procesos en Solaris

Terminacin de procesos Un proceso ejecuta su ltima sentencia ypide al sistema operativo que lo elimine (exit). (wait)

El hijo entrega datos de salida al padre Los recursos del proceso son liberadospor el sistema operativo.

... Terminacin de procesos El padre puede terminar la ejecucin de sushijos (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 continen vivos: En este caso se genera un trmino en cascada

4 Comunicacin Inter proceso (IPC) Los procesos en un SO pueden serindependientes o cooperativos.

Procesos cooperativos pueden ser

afectados o afectar otros procesos incluidos los datos compartidos.

... IPC Hay varias razones para que procesoscooperen:

-

Compartir informacin Si el computador tiene ms de un procesador se logra Speedup Modularidad Conveniencia: el usuario puede hacer varias cosas al mismo tiempo

... IPC Los procesos que cooperan necesitan IPC Hay dos modelos de IPC: Memoria compartida Paso de mensajes

Memoria compartida: Se establece unaregin de memoria que se comparte por los procesos que cooperan. Los procesos pueden intercambiar informacin escribiendo y leyendo.

Modelos de Comunicacin

Permite mxima velocidad y conveniencia en la comunicacin. Se requieren llamadas al sistema slo para establecer las regiones compartidas de memoria.

... Modelos de Comunicacin Paso de mensajes: la comunicacin seestablece por medio de intercambios de mensajes. pequeas de datos.

Resulta til para intercambiar cantidades

Los dos modelos

Procesos Cooperativos Los procesos independientes noser afectados por otros procesos. pueden afectar o ser afectados por otros procesos.

Procesos cooperativos pueden afectar

El Problema del Productor-Consumidor Este problema es un paradigma porque esmuy frecuente esta relacin: un proceso genera informacin la cual es consumida por otro proceso. tamao ilimitado o un buffer limitado de tamao jo.

Se utiliza un buffer que puede ser: de

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;

Buffer: arreglo circularin z a

t

out

Cdigo del productor while (true) { /* Produce an item */ while (((in + 1) % BUFFER SIZE ) } ; buffer[in] = item; in = (in + 1) % BUFFER SIZE; == out) /* do nothing -- no free buffers */

!

Cdigo 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 solucin es correcta, pero slo utiliza BUFFER_SIZE-1elementos

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 tamao jo o variable receive(msg)

... Paso de mensajes Si P y Q desean comunicarse, necesitan: Enlace de comunicacin: fsico: (memoria compartida, bus de hw) usando propiedades lgicas

Establecer un enlace de comunicacin entre ellos Intercambiar mensajes va send y receive

Preguntas interesantes Cmo se establecen los enlaces de comunicacin? Puede asociarse un enlace con ms de dos procesos? Cuntos enlaces pueden existir entre cada par de procesos que se comunican? Cul es la capacidad de un enlace? El enlace soporta mensajes de tamao jos o variables?

El enlace es unidireccional o bidireccional?

Modelos para send y rceiveLos mtodos para implementacin lgica de operaciones send() y receive() permiten:

-

Comunicacin directa o indirecta Comunicacin sincrnica o asincrnica Uso de buffers automticos o explcitos

Comunicacin Directa Los procesos deben nombrarseexplcitamente:

send(P, msg): enva mensaje a P receive(Q, msg): recibe unmensaje desde Q

... Comunicacin Directa Propiedades del enlace de comunicacin: Los enlaces se establecen automticamente. Un enlace se asocia con exactamente un par de procesos que se comunican. Los enlaces pueden ser unidireccionales, pero usualmente son bidireccionales.

Comunicacin Indirecta ggg Los mensajes son dirigidos y recibidos por mailboxes (tambin llamados puertos)

cada mailbox tiene un id nico Procesos pueden comunicarse, slo si comparten un mailbox.

Operaciones:

... Comunicacin Indirecta

Crear un mailbox Enviar y recibir mensajes a travs de mailboxs. Destruir mailbox

Operaciones primitivas: send(A, msg): enva mensaje al mailbox A receive(A, msg): recibe mensaje desde mailbox A.

... Comunicacin Indirecta: DilemaSe comparte un mailbox

P1, P2 y P3 comparten el mailbox A P1 enva; P2 y P3 reciben Quin toma el mensaje? Permitir que un enlace pueda ser asociado a lo ms con dos procesos. Permitir a solo un proceso por vez ejecutar una operacin receive. Permitir que el sistema en forma arbitraria seleccione el receptor. El proceso que enva es noticado de esta eleccin.

Sincronizacin El sistema de comunicacin por mensajespuede ser bloqueante o no bloqueante. sincrnico.

Un sistema bloqueante se considera 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

... Sincronizacin Un sistema no bloqueante se consideraasincrnico.

en el send no bloqueante el proceso enva y continua. en el receive no bloqueante del receptor recibe un mensaje vlido o nulo.

BuffersLas colas de mensajes asociadas a un enlace se pueden implementar en uno de los siguientes modos:1. Capacidad cero: El proceso que enva debe esperar al receptor (rendezvous) 2. Capacidad acotada: Capacidad para n mensajes. El proceso que enva debe esperar si el enlace est lleno. 3. Capacidad sin lmite: El tamao es innito. El proceso que enva nunca espera

Ejemplo: implementacin de co-Rutinas usando mensajes

SubrutinamainA call A return

Co-RutinaA Bresume B resume A

resume B call A

resume A

... Co-Rutinas El mecanismo rendezvous es adecuado parala implementacin de co-rutinas Resume(id) { send(id, --); receive(id, --); }

5 Ejemplos de IPC: POSIX shared memoryEl 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 comunicacin es posible desligar la memoriashmdt(shared_memory);

Ejemplo: POSIX shared memory API

Ejemplo de IPC: Mach Mach est en el kernel de Mac OS X. Su mecanismo de comunicacin est basado en mensajes:incluso las llamadas al sistema son mensajes Cada tarea, en el momento de su creacin obtiene dos mailboxes: Kernel y Notify Slo tres llamadas al sistema se necesitan:msg_send(), msg_receive(), msg_rpc()

Los mailbox para comunicacin se crean va:port_allocate()

Comunicacin va Pipes Los Pipes fueron el primer mecanismo decomunicacin de los primeros sistemas UNIX.

Si utilizan pipes en los shell de UNIX cuandola salida de un comando sirve como entrada de otro:ls | more

... Pipes Normalmente pipes permiten la comunicacin de dos procesos en la forma productor - consumidor estndar:El productor escribe en un extremo del pipe y el consumidor lee desde el otro extremo. Pipes corrientes son unidireccionales

Descriptores de archivos para pipes corrientes En UNIX se crea un pipe usando:pipe(int fd[]);

Esta funcin crea un pipe que puede seraccesado 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()

Descriptores de archivos para pipes corrientesparentfd(0) fd(1) fd(0)

child

pipe

fd(1)

Ejemplo

Sistemas Operativos3 ProcesosProf. Oscar Encina C.