Vous êtes sur la page 1sur 66

Sistemas Operativos

3 Procesos
Prof. 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 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 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 (avi@cs.yale.edu) to obtain the copyright owners consent.

Temario
1. 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 como
un 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 de
programas:

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 pueden


usar 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, va
cambiando 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 procesos

El 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 plazo


Reduce el grado de multiprogramacin (Jobs en memoria principal).

... Itineradores (Schedulers)


El Itinerador de corto plazo es invocado El Itinerador de largo plazo se invoca en
forma 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 dos
tipos:

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, el
sistema 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 es
hardware. 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 procesos
hijos, 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 espacio
direccionable:

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 y
pide al sistema operativo que lo elimine (exit). (wait)

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

... Terminacin de procesos


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

4 Comunicacin 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.

... IPC
Hay varias razones para que procesos
cooperen:

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 una


regin 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 se
establece por medio de intercambios de mensajes. pequeas de datos.

Resulta til para intercambiar cantidades

Los dos modelos

Procesos Cooperativos
Los procesos independientes no
ser 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 es
muy 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 circular


in z a

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 rceive

Los 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 nombrarse
explcitamente:

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


mensaje 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: Dilema


Se 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 mensajes
puede 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 considera
asincrnico.

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

Buffers

Las 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

Subrutina
main
A call A return

Co-Rutina
A B
resume B resume A

resume B call A

resume A

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

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 comunicacin es posible desligar la memoria


shmdt(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 de
comunicacin 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

... 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 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()

Descriptores de archivos para pipes corrientes


parent
fd(0) fd(1) fd(0)

child

pipe

fd(1)

Ejemplo

Sistemas Operativos
3 Procesos
Prof. Oscar Encina C.

Vous aimerez peut-être aussi