Módulo 2 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 Antonio Reynoso Lobato 2002 A 1 Módulo 2, Sección 1 Procesos Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 3 Temas • Idea Conceptual de Proceso • Coordinación de Procesos • Operación sobre los Procesos • Procesos Cooperativos • Comunicación entre los Procesos Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 5 Stack: Direcciones de Retorno Antonio Reynoso Lobato 2002 A 6 Stack: Paso de Parámetros Antonio Reynoso Lobato 2002 A 7 Stack: Cambio de Contexto Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 9 Bloque de Control del Proceso (PCB) Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 11 Diagrama de Estado del Proceso Admitido Interrupción Memoria Principal CPU Despacho-Coordinador Terminación de E/S o suceso Disco Duro Antonio Reynoso Lobato 2002 A Salir 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 Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 14 Cola de Listos y Varias Colas de Dispositivos de E/S Cola de procesos listos Antonio Reynoso Lobato 2002 A 15 Diagrama de Colas de la Coordinación de Procesos Coordinador de Largo plazo Coordinador de Corto plazo Coordinador de Mediano plazo Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 17 Coordinador de mediano plazo Entra por intercambio Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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). Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 24 Un Árbol de Procesos en un Sistema UNIX Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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; Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 32 Hilos Múltiples dentro de una Tarea Hilos Tarea Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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). Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 36 Solaris 2 :Hilos hilo en el nivel de usuario Proceso ligero hilo del núcleo Antonio Reynoso Lobato 2002 A 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.. Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 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) Antonio Reynoso Lobato 2002 A 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? Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 43 Comunicación Indirecta (Cont.) • Operaciones – create un nuevo buzón – send y receive mensajes por medio del buzón – destroy un buzón Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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). Antonio Reynoso Lobato 2002 A 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. Antonio Reynoso Lobato 2002 A 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 Antonio Reynoso Lobato 2002 A 48