Sistemas Operativos
Gestión de procesos
• Objetivo : Comprender el concepto de proceso, como un
programa de sistema que tiene un modelo de registros y
valores particulares de la computadora y que conduce a la
multiprogramación.
Sección 1: Procesos
1
Módulo 2, Sección 1
Procesos
2
Procesos
Objetivo: Comprender el sistema como una
colección de procesos que ejecutan código
del sistema de manera concurrente con
programas del usuario que ejecutan código del
usuario
3
Temas
• Idea Conceptual de Proceso
• Coordinación de Procesos
• Operación sobre los Procesos
• Procesos Cooperativos
• Comunicación entre los Procesos
4
Idea Conceptual de Proceso
• Un sistema operativo ejecuta una variedad de programas:
– Tareas en Batch
– Tareas o programas de usuario en Tiempo Compartido
• Los términos tarea y proceso se usan casi como sinónimos
y son la unidad de trabajo de los sistemas modernos.
• Proceso – un programa en ejecución;
 la ejecución de un proceso debe progresar de
manera secuencial.
• Un proceso incluye:
– program counter
– stack
– Sección de Datos
5
Stack: Direcciones de Retorno
6
Stack: Paso de Parámetros
7
Stack: Cambio de Contexto
8
Bloque de Control del Proceso (PCB)
Información asociada con cada proceso.
• Estado del proceso
• Program counter
• Registros del CPU
• Información para la coordinación del CPU
• Información para la Administración de Memoria
• Información para la Contabilidad
• Información del Estado de la E/S
9
Bloque de Control del Proceso (PCB)
10
Estados del Proceso
• Cuando un proceso se ejecuta, este cambia de estado.
– nuevo: El proceso se esta creando.Cargador- Ligador
– listo: El programa esta en la Memoria Principal en
espera de ser asignado a un proceso.
– corriendo: Las instrucciones se están ejecutando en el
CPU.
– esperando: El proceso esta en el Disco en espera de
que ocurra algún evento.
– terminado: El proceso ha finalizado su ejecución y es
enviado al Disco.
11
Diagrama de Estado del Proceso
Admitido
Interrupción
Memoria
Principal
Salir
CPU
Despacho-Coordinador
Terminación de E/S o suceso
Disco Duro
12
Espera por E/S o suceso
Intercambio del CPU de un Proceso a otro Proceso
Interrupción o llamada al sistema
Interrupción o llamada al sistema
13
Colas de la Coordinación de Procesos
• Cola de tareas – conjunto de todos los procesos en el
sistema.
• Cola de procesos listos –
conjunto de todos los
procesos residentes en la memoria-principal, listos y
en espera para ejecutarse.
• Cola de dispositivos –conjunto de todos los procesos
en espera de un dispositivo de E/S.
• Migración de los Procesos entre las distintas colas.
14
Cola de Listos y Varias Colas de Dispositivos de E/S
Cola de
procesos
listos
15
Diagrama de Colas de la Coordinación de Procesos
Coordinador
de
Largo plazo
Coordinador
de
Corto plazo
Coordinador
de
Mediano plazo
16
Schedulers-Coordinadores
• Coordinador de largo plazo (o coordinador de tareas) –
selecciona cual proceso deberá ser traído a la cola de
procesos listos.
• Coordinador de corto plazo (o coordinador del CPU) –
selecciona cual proceso deberá ser ejecutado enseguida y
colocarlo en el CPU.
• Coordinador de mediano plazo
( en sistemas de tiempo compartido) –
realiza intercambio (swapping), para liberar a la memoria
principal y reducir el grado de multiprogramación y también
para mejorar la mezcla de procesos
17
Coordinador de mediano plazo
Entra por intercambio
Sale por intercambio
18
Schedulers-Coordinadores (Cont.)
• Los procesos pueden ser descritos como:
– Procesos limitados por E/S – pasan mas tiempo
realizando E/S que computaciones,
y va muchas veces al CPU -de carrera corta.
– Procesos limitados por CPU –pasan mas tiempo
realizando computaciones;
y va muy pocas veces al CPU -de carrera larga.
• El sistema con el mejor rendimiento tiene una buena
mezcla de ambos procesos.
19
Schedulers-Coordinadores (Cont.)
• El coordinador de corto plazo es invocado muy
frecuentemente:
(en milisegundos)  (deberá de ser rápido).
• El coordinador de largo plazo es invocado muy
infrecuentemente:
(en segundos, o minutos)  (deberá de ser lento).
• El coordinador de largo plazo controla el grado de
multiprogramación.
20
Cambio de Contexto
• Cuando el CPU cambia a otro proceso, el sistema deberá:
guardar el estado del proceso viejo y
cargar el estado guardado para el nuevo proceso.
• El tiempo de cambio-contexto es solo
(overhead) gasto
extra; el sistema no realiza trabajo útil durante la
conmutación.
• Este tiempo depende del hardware.
21
Operación sobre los Procesos:Creación
• Los procesos padres crean procesos hijos, los cuales, a
su vez crean otros procesos, formando un árbol de
procesos.
• Recursos compartidos
– Los padres dividen todos sus recursos entre sus hijos.
– Los hijos comparten un subconjunto de los recursos
de los padres.
Padres e hijos comparten datos de iniciación
(entradas).
22
Creación de Procesos (Cont.)
Cuando se crea un proceso nuevo (Posibilidades):
• Espacio de direcciones
– El hijo es un duplicado del padre.
– Se carga un programa dentro del proceso hijo
• Ejecución
– El padre sigue ejecutándose concurrentemente
con sus hijos.
– El padre espera hasta que uno de los hijos, o todos,
han terminado.
23
Creación de Procesos (Cont.)
• Ejemplo UNIX :Cada proceso se identifica con un
número entero único
– El llamado a sistema fork (bifurcar) crea un nuevo
proceso con una copia del espacio de direcciones
del proceso original
– El llamado a sistema execve usado después de un
fork para reemplazar el espacio de memoria del
proceso con un programa nuevo.
24
Un Árbol de Procesos en un Sistema UNIX
25
Terminación de Procesos
• El proceso termina cuando ejecuta su ultima proposición
y pide al sistema operativo que lo elimine con (exit).
– Devuelve datos de salida desde el hijo al padre
(vía wait).
– Los recursos del proceso son liberados por el
sistema operativo.
26
Terminación de Procesos (Cont.)
• Padres pueden terminar la ejecución de los procesos
hijos (abort):
– El hijo ha excedido los recursos que se le asignaron.
– Las tareas asignadas a los hijos ya no son
necesarias.
– El padre esta saliendo.
El sistema operativo no le permite al hijo continuar
si su padre termina.
Terminación en cascada de todos sus hijos.
27
Procesos Cooperativos
• Proceso Independiente
no puede afectar ni ser
afectado por la ejecución de otro proceso
(no comparte datos).
• Proceso Cooperativo puede afectar y ser afectado por la
ejecución de otro proceso (comparte datos).
• Ventajas de la cooperación de procesos.
–
–
–
–
Información compartida
Aceleración de la Computación
Modularidad (procesos individuales)
Comodidad
28
Problema del Productor-Consumidor
• Paradigma de los procesos cooperativos, el
proceso
productor produce información que es consumida por un
proceso consumidor.
• Buffer: que el productor pueda llenar y el consumidor
pueda vaciar.
– Buffer-ilimitado sin prácticamente limite sobre el
tamaño del buffer.
– Buffer-limitado supone que hay un tamaño fijo para el
tamaño del buffer.
29
Buffer Limitado – Solución Memoria Compartida
• Datos Compartidos
var n;
type item = … ;
var buffer. array [0..n–1] of item;
in, out: 0..n–1;
• Proceso Productor
repeat
…
produce an item in nextp
…
while in+1 mod n = out do no-op;
buffer [in] :=nextp;
in :=in+1 mod n;
until false;
30
Buffer-Limitado (Cont.)
• Proceso Consumidor
Repeat
while in = out do no-op;
nextc := buffer [out];
out := out+1 mod n;
…
consume the item in nextc
…
until false;
• Solución
correcta, pero solo puede llenar n–1 buffers.
31
Hilos
• Un Hilo (o proceso ligero) es la Unidad básica de
utilización del CPU; consiste de:
– program counter
– Conjunto de registros
– Espacio en el stack
• Un hilo comparte con su hilo par (del mismo nivel):
– sección de código
– Sección de datos
– Recursos del sistema- operativo como archivos
abiertos y señales lo que se conoce como tarea (task).
• Un proceso tradicional (o proceso pesado) es igual a
una tarea con un solo hilo
32
Hilos Múltiples dentro de una Tarea
Hilos
Tarea
33
Hilos (Cont.)
• En una tarea de hilos múltiples, mientras un hilo servidor es
bloqueado y esta esperando,un segundo hilo de la misma
tarea puede correr.
– Cooperación de hilos múltiples en una misma tarea
confiere alto rendimiento y un desempeño mejorado.
– Aplicaciones que requieren un buffer común compartido
(ejemplo, productor-consumidor) se benefician de la
utilización de hilos.
• Los hilos proveen un
mecanismo que permite a los procesos
secuenciales hacer llamados de bloqueo mientras realizan
paralelismo.
34
Hilos (Cont.)
• Kernel-soportado por hilos (Mach y OS/2).
• Hilos a nivel de usuario; soportado sobre el kernel, vía un
conjunto de llamadas a biblioteca al nivel de usuario
(Proyecto Andrew de CMU).
• Aproximación Híbrida implementa hilos a nivel de usuario
y kernel-soportado por hilos (Solaris 2).
35
Hilos en Solaris 2
• Solaris 2 es una versión de UNIX con soporte de hilos a
nivel de kernel y de usuario, multiprocesamiento
simétrico, y coordinación en tiempo real.
• LWP: Procesos Ligeros – nivel intermedio entre hilos a
nivel de usuario e hilos a nivel de kernel.
36
Solaris 2 :Hilos
hilo en el nivel de
usuario
Proceso ligero
hilo del
núcleo
37
Hilos en Solaris 2 (Cont.)
• Recursos que requieren los distintos tipos de hilos:
– Hilo de Kernel : estructura de datos pequeña y un
stack; el cambio entre hilos no requiere cambiar la
información de acceso a memoria – relativamente
rápidos.
– Procesos Ligeros (LWP): PCB con datos de registro,
información de memoria y de contabilidad;el cambio
entre procesos ligeros es relativamente lento.
– Hilos a nivel de usuario: solo necesitan stack y
program counter; el no involucramiento del kernel
significa cambios rápidos..
38
Comunicación Ínter-procesos (IPC)
• Mecanismo para comunicar procesos cooperativos y
para sincronizar sus acciones.
• Sistema de Mensajes – comunica procesos uno con otro
sin frecuentar el área de la memoria-compartida.
• La comunicación ínter- procesos
provee dos operaciones
primitivas:
– send(message)
– receive(message)
– el tamaño del mensaje es fijo o variable
39
Comunicación Ínter-procesos (IPC) Cont.
•
Si P y Q desean comunicarse, ellos tienen que:
1. Establecer un (link) enlace de comunicación entre
ellos
2. Intercambiar mensajes vía send/receive
•
Para establecer el (link) enlace de comunicación, tienen
que:
1. físico (ejemplo, memoria-compartida, bus en
hardware o una red)
2. lógico (ejemplo, propiedades lógicas)
40
Propiedades Lógicas
• ¿Como establecer los enlaces?
• ¿Puede un enlace estar asociado con mas de dos
procesos?
• ¿Cuántos enlaces puede haber entre cualquier par de
procesos en comunicación?
• ¿Qué capacidad tiene un enlace?
• ¿El tamaño de un mensaje, que el enlace puede
acomodar, es fijo o variable?
• ¿El enlace es unidireccional o bi-direccional?
41
Intercambio de Mensajes:Comunicación Directa
• Los procesos deberán referirse uno al otro explícitamente:
send (P, message): enviar un mensaje al proceso P
receive(Q, message):recibir un mensaje del proceso Q
• Propiedades de los lazos de comunicación
• Los enlaces son establecidos automáticamente.
Un enlace esta asociado con exactamente un par de
procesos en comunicación.
Entre cada par existe exactamente un enlace.
• El enlace puede ser unidireccional,
pero usualmente es bi-direccional.
42
Intercambio de Mensajes:Comunicación Indirecta
• Los mensajes son dirigidos y recibidos desde mailboxes
(también llamados ports).
– Cada buzón tiene un id (identificador) único.
– Los procesos pueden comunicarse solo si comparten
un buzón
• Propiedades de un lazo de comunicación:
– El enlace se establece solo si los procesos comparten
un buzón común
– Un enlace puede estar asociado con muchos procesos.
– Cada par de procesos puede compartir varios enlaces
de comunicación.
– El enlace puede ser unidireccional o bi-direccional.
43
Comunicación Indirecta (Cont.)
• Operaciones
– create un nuevo buzón
– send y receive mensajes por medio
del buzón
– destroy un buzón
44
Comunicación Indirecta (Continuación)
•
Buzón compartido
 P1, P2, y P3 comparten el buzón A.
 P1, sends; P2 y P3 receive.
 ¿Quién tiene el mensaje?
•
Soluciones
– Permitir que un enlace este asociado cuando mucho
a dos procesos .
– Permitir que solo un proceso a un tiempo ejecute una
operación receive .
– Permitir que el sistema seleccione arbitrariamente
al receptor. El transmisor será notificado de quien
fue el receptor.
45
Buffering: Uso de Buffers
•
Implementado en una de la tres formas siguientes:
1. Capacidad cero –Sin Buffer: 0 mensajes
– El transmisor deberá de sincronizarse:
 esperar por el receptor (rendezvous)
 o enviar el mensaje sin esperar aunque se
pierda.
– Comunicarse de manera asíncrona no-responsiva:
 esperar el acuse de recibo del receptor,
 ó por medio de la primitiva reply( P, mensaje).
46
Buffering: Uso de Buffers (Cont.)
•
Cola de mensajes adherida al enlace (link);
implementada en una de las formas siguientes:
2. Capacidad limitada – longitud finita de los n
mensajes
– El transmisor deberá de esperar, si el Buffer
esta lleno.
3. Capacidad ilimitada –longitud infinita
– El transmisor jamás espera.
47
Condiciones de Excepción y Recuperación
Cuando ocurre un fallo antes de que se procese un
mensaje o durante la comunicación:
• El proceso termina.
– Notificación
• Mensajes perdidos
– Retransmite el mensaje
– Retransmite el mensaje, si el emisor desea
hacerlo
• Mensajes alterados
– Códigos de verificación de errores
– Retransmisión
48
Descargar

Procesos