Administración de procesos Contenido: ● Concepto de proceso ● Operaciones sobre procesos ● Planificación de procesos ● Hilos (Threads) ● Planificación del procesador Concepto de proceso Programas y procesos: ● Programas ● ● ● Colección de instrucciones que el procesador interpreta y ejecuta Se almacena en sistemas no volátiles necesitando, para poder ser ejecutados, ser cargados en memoria principal Se considera un ente estático Concepto de proceso Programas y Procesos: ● Procesos ● Programa en ejecución ● El sistema operativo les asigna recursos ● Se considera un ente dinámico ● Componentes: código, datos, pila, registros, PC, recursos del sistema Concepto de proceso Programas y Procesos: Concepto de proceso: ● ● ● Primeros sistemas solo permitían la ejecución de un programa a la vez Hoy, los sistemas operativos permiten cargar varios programas en memoria y ejecutarlos concurrentemente Nuevo concepto – – ● Programa en ejecución Unidad de trabajo de un SO Surge con MULTICS para solucionar el problema de la gestión del reparto de la CPU Concepto de proceso Programas y procesos ● Características: ● ● ● ● Los servicios superiores del SO se estructuran en base a procesos Permite modularizar y aislar errores de programas durante su ejecución Soporta concurrencia de actividades Los trabajos (jobs) en sistemas por lotes y tareas en sistemas de tiempo compartido. Concepto de proceso Programas y procesos ● Ejecución simultanea de varios procesos: ● Hay varias tareas que se ejecutan de forma concurrente – – Paralelismo real: operaciones de E/S (dos tareas concurrentes) Pseudoparalelismo: un proceso en ejecución a la vez, pero sensación de paralelismo Concepto de proceso Programas y procesos ● Ejecución simultanea de varios procesos: Concepto de proceso Definición de proceso ● ● Un proceso es un programa en ejecución, que se ejecuta secuencialmente El proceso es una abstración creada por el SO, que se compone de: ● ● ● Código de programa: sección texto Contexto de Ejecución: PC, registros del procesador y una pila para invocación de procedimientos Sección de datos: variables globales Concepto de proceso Definición de proceso Estados de un proceso ● ● ● ● El estado de un proceso es la disponibilidad para ser ejecutado Un proceso, a lo largo de su ejecución pasa por varios estados El cambio de un estado a otro es provocado por la ocurrencia de un evento A medida que se ejecuta un proceso, cambia su estado Estados de un proceso ● Estados: ● ● ● Ejecución: proceso ejecutando instrucciones Listo: el proceso está listo para recibir el procesador para iniciar o continuar su ejecución Bloqueado: el proceso deja de competir por el procesador, esperando un evento externo (p.e terminación de una operación de E/S, etc.) Estados de un proceso ● Transiciones entre estados: ● En ejecución → bloqueado: ● En ejecución → listo: ● Listo → en ejecución: ● Bloqueado → listo Estados de un proceso Procesos suspendidos: ● ● Los 3 estados principales (Listo, Ejecución, Bloqueado) puede no ser suficientes Justificación: ● Procesos bloqueados ● Memoria no disponible para nuevos procesos ● Procesador estará desocupado Estados de un proceso Procesos suspendidos: ● Solución: ● Permitir la ejecución de más procesos ● Ampliar la memoria principal ● Intercambio de procesos entre memoria y disco ● Nuevos estados de un proceso: – – Listo suspendido Bloqueado suspendido Estados de un proceso Procesos suspendidos: ● Método (Intercambio o Swapping) ● ● ● El SO puede poner en suspendido un proceso y transferirlo a disco El espacio liberado en la memoria principal es usado para traer otro proceso ¿Qué proceso elegir para cargar en memoria? – – Uno nuevo Uno previamente suspendido Estados de un proceso Procesos suspendidos: ● Nuevas transiciones entre estado ● En ejecución → suspendido listo ● Listo → suspendido listo ● Bloqueado → suspendido bloqueado ● Suspendido listo → listo ● Suspendido bloqueado → bloqueado ● Suspendido bloqueado → suspendido listo Estados de un proceso Procesos suspendidos: ● Otras razones: ● El sistema esta en riesgo de fallo ● Un proceso sospechoso de mal funcionamiento ● El planificador puede suspender los procesos de baja prioridad en momento de carga excesiva del sistema Contexto de un proceso Tabla de procesos y Bloque Control de Proceso (PCB) ● ● ● El SO gestiona los procesos a través de una tabla que contiene para cada proceso existente en el sistema su PCB Cada proceso se representa mediante un PCB Estructura de datos localizada en el núcleo del sistema Contexto de un proceso Bloque Control de Proceso (PCB) incluye: ● Información de identificación ● Estado del procesador ● Información de control de proceso ● ● ● ● ● Información del planificación y estado Descripción de los segmentos de memoria asignados al proceso Recursos asignados Punteros para estructurar los procesos en cola o anillos Comunicación entre procesos Contexto de un proceso Bloque Control de Proceso (PCB) Cambios de contexto ● La acción de conmutar la CPU de un proceso a otro se denomina cambio de contexto. Cambios de contexto Tipos de cambio de contexto ● Cambio de contexto “voluntario”: ● Proceso realiza llamada al sistema que implica esperar por evento ● Transición de en ejecución a bloqueado ● Ejm: leer del terminal, fallo de página ● Se realiza para dar mayor eficiencia en el uso procesador Cambios de contexto Tipos de cambio de contexto ● Cambio de contexto “involuntario”: ● SO le quita la CPU al proceso ● Transición de en ejecución a listo ● Ejms: fin del tiempo de ejecución ● El objetivo es el reparto del procesador Caso de estudio LINUX Caso de estudio Estados de un proceso en Linux ● ● ● ● ● TASK_RUNNING: proceso listo o en ejecución TASK_INTERRUPTIBLE: proceso “dormido” que puede despertar por alguna señal o interrupción TASK_UNINTERRUPTIBLE: Similar al anterior, pero no puede ser despertado inmediatamente, espera a una interrupción y no puede ser despertado por una señal (el proceso está suspendido) TASK_ZOMBIE: proceso-hijo terminado pero que no ha sido liberado por su proceso padre TASK_STOPPED: proceso detenido, generalmente por una señal (SIGSTOP). Útil para la depuración. Caso de estudio Descriptor de proceso (process descriptor) ● ● ● Estructura que mantiene el SO con información del proceso (PCB) Se conoce como task_struct implementada en el fichero include/linux/sched.h (lenguaje C) Es una estructura que mantienen, no sólo datos, sino también muchos punteros a otras estructuras Caso de estudio Lista de procesos del sistema ● ● Linux guarda una lista doblemente enlazada con cada proceso (task_struct) Proceso init_task: Es el proceso inicial de linux, siempre está en ejecución y es el encargado de ir creando otros procesos. Proceso Nulo ● ● ● ● ● Proceso que se ejecuta cuando no hay proceso disponible para ejecutarse El procesador debe ejecutar alguna cosa No cuenta como tiempo útil ni como proceso de usuario En general no hace nada Se puede utilizar para realizar tareas poco prioritarias del kernel cuando el procesador está libre Operaciones sobre procesos Creación de procesos ● Los pasos a seguir por el S.O ● Asignarle un PCB ● Establecer su contexto de memoria ● Cargar la imagen (ejecutable) en memoria ● Ajustar su contexto de CPU (registros) ● Marcar la tarea como ejecutable – – Saltar al punto de entrada, ó Ponerlo en la cola de procesos preparados Operaciones sobre procesos Creación de procesos ● Hay 4 sucesos principales que causan la creación de procesos. ● ● Inicialización del sistema Ejecución de una llamada al sistema para crear procesos por parte de un proceso en ejecución ● Solicitud de un usuario para crear un proceso ● Inicio de un trabajo por lotes Operaciones sobre procesos Creación de procesos ● Dos posibilidades: ● Formación de jerarquías de procesos (relación padre-hijo) Linux – – Procesos padres crean procesos hijos, los cuales, a su vez crean otros procesos formando un árbol de procesos En Linux se forma un árbol a partir de procesos INIT (pid 0) mediante la llamada al sistema: fork() Operaciones sobre procesos Creación de procesos ● Dos posibilidades: ● No se mantiene una jerarquía (windows 2000) – – – Todos los procesos son iguales El padre recibe una “ficha” especial [identificador] para controlar al hijo Esta en libertad de transferir la ficha a otro proceso Operaciones sobre procesos Creación de procesos ● ● Respecto a los recursos ● Hijos pueden heredar los recursos (compartir), ó ● Reciben nuevos recursos Respecto a su ejecución, puede suceder: ● ● Hijo se ejecuta concurrentemente con el padre Padre espera que el hijo termine (llamada al sistema wait()) – La función wait() devuelve el código de finalización del proceso Operaciones sobre procesos Destrucción de procesos ● Supone liberar los recursos previamente asignados al proceso. Esta terminación puede ser: ● ● Terminación normal: El proceso invoca su propia terminación. Ejemplo en UNIX: exit() Terminación anormal: El proceso termina por iniciativa del sistema operativo al detectar alguna condición de error (violación de límites, errores aritméticos) o por iniciativa de algún otro proceso. Ejemplo en UNIX: kill() y señales Operaciones sobre procesos Destrucción de procesos – – – ● Normalmente lo hace un antepasado directo (p.e. el proceso padre) Términación de un proceso puede significar la terminación de toda su “descendencia” (terminación en cascada) Unix: shutdown o finalización de la shell de un usuario Pasos que sigue el SO ● Envío de datos del proceso finalizado al creador ● El SO desasigna los recursos que tiene Operaciones sobre procesos Llamadas al sistema (APIs) de POSIX y Win32 Operación POSIX Win32 Crear Fork() exec() CreateProcess() Terminar _exit() ExistProcess() waitpid() GetExitCodeProcess Obtener Tiempos times GetProcessTimes Obtener Tiempos times GetProcessTimes kill TerminateProcess Obtener código finalización Terminar otro proceso Planificación de procesos ● Objetivos de la Planificación de Procesos: ● ● ● Multiprogramación: Tener siempre un proceso en ejecución con el propósito mejorar utilización CPU y otros recursos Tiempo Compartido: Cambiar rápidamente la CPU entre procesos para mantener buena interactividad No pueden existir más procesos en ejecución que el número de procesadores ● Sistemas de multiprocesamiento permiten tener más de un proceso en ejecución Planificación de procesos Colas de Planificación ● ● Cola de trabajos: a medida que los procesos entran en el sistema se le añade a esta cola Aquellos procesos en memoria y esperando ejecutarse se mantienen en una cola llamada cola de procesos listos ● Implementada como una Lista Elazada: El encabezado contiene punteros al primero y último PCB y cada PCB contiene un puntero al siguiente PCB de la lista de procesos listos Planificación de procesos Colas de Planificación ● ● ● Existen otras colas en el sistema Para la gestión de dispositivos de E/S se implementa una cola para evitar que varios procesos accedan a la vez a un dispositivo. Se añaden a la cola y el proceso debe esperar a que el dispositivo se le asigne. Estas colas se conocen como Colas de Dispositivo ● hay una cola por cada dispositivo Planificación de procesos Colas de Planificación ● Modelo de colas Planificación de procesos Colas de Planificación ● Diagrama de colas (ejecucion de un proceso) Planificación de procesos Planificadores Planificación de procesos Planificadores ● Planificador de largo plazo ● ● ● ● Actúa con poca frecuencia (normalmente cuando termina un proceso), creando un proceso y cargándolo en la memoria Controla el grado de multiprogramación Determina una buena mezcla de procesos de uso intensivo de CPU y de E/S Algunos sistemas no tienen este planificador (p.e. Sistemas de tiempo compartido) Planificación de procesos Planificadores ● Planificador de corto plazo o Planificador de la CPU ● ● Decide a qué proceso asignarle la CPU, el cual es seleccionado de la cola listo. Se ejecuta con alta frecuencia, cada vez que ocurre un suceso: – – – – – ● Interrupciones de reloj Interrupciones de E/S Llamadas al sistema operativo Señales por salida de un proceso (exit) Asegura la interactividad en un sistema Planificación de procesos Planificadores ● Planificador a medio plazo ● ● ● Permite regular la carga reduciendo o aumentando el grado de multiprogramación, usando técnica de swapping Un factor de decisión importante es la demanda por memoria de los procesos Se usa en sistemas de tiempo compartido Planificación de procesos Planificadores ● Niveles de planificación Planificación de procesos Planificadores ● Planificación de la CPU ● ● El SO ha de determinar de alguna forma a que proceso se le asigna la CPU si ésta queda libre La administración de las colas de procesos se lleva a cabo dependiendo de la política de planificación (algoritmos de planificación) Hilos (Thread) Concepto de Hilo ● ● Un hilo es una abstracción de un procesador (Program counter, registros de trabajo y pila de ejecución) y el estado del proceso Un proceso tradicional es una tarea con un solo hilo Proceso 1 Proceso 2 Proceso 3 Proceso Espacio de Usuario Thread Espacio del Kernel Kernel Thread Kernel Hilos Concepto de Hilo ● Una tarea (o proceso) permite que los hilos compartan: Código, datos y recursos del sistema operativo Hilos Hilos Vs Procesos ● Ventajas de los hilos respecto de los procesos ● Creación y finalización más rápida ● Los hilos son más eficientes en el cambio de contexto ● Conmutación entre hilos del mismo proceso más fácil ● Mejor comunicación entre hilos de un mismo proceso ● Varios hilos de un mismo proceso pueden ejecutarse en paralelo (paralelismo real si hay más de un procesador) Hilos Hilos Vs Procesos ● Objetivos de los hilos ● El objetivo de los hilos es facilitar la escritura de aplicaciones concurrentes cooperativas Hilos - Aplicación Un proceso servidor web Multihilo Proceso de Servidor Web Thread Dispatcher Thread trabajador Espacio de Usuario Caché de la página web Espacio del Kernel Kernel Conexión de red Hilos Estados y contexto de un hilo ● Cada thread tiene recursos propios: ● ● ● Una pila, un estado y una copia del contenido de los registros Las colas de listos y bloqueados contienen threads en vez de procesos Un hilo no puede estar suspendido (se suspende el proceso completo con todos sus hilos) Hilos Estados y contexto de un hilo Hilos ● Hilos a nivel de kernel ● Hilos a nivel del usuario Hilos a nivel de usuario Espacio de Usuario Espacio del Kernel pthread_create pthread_join pthread_exit pthread_self pthread_yield ● Kernel Tabla de threads Tabla de procesos Run-time system El manejo de los hilos lo hace una librería de hilos a nivel de usuario Hilos a nivel de usuario ● Ejemplos: ● Hilos POSIX ● Hilos de Solaris ● Mach C-threads Hilos a nivel de usuario Nivel Usuario Proceso de usuario gestiona y planifica los múltiples hilos Nivel Kernel (Sistema Operativo) Planificador del SO Hardware Core Core Hilos a nivel de usuario ● Ventajas ● ● ● Se puede tener hilos en sistemas operativos que no los soportan El intercambio de hilos no requiere los privilegios del modo núcleo Cada proceso puede tener su propio algoritmo de planificación hilos Hilos a nivel de usuario ● Desventajas ● ● ● ● ● El planificador del sistema operativo solo ve un hilo por proceso No ve los hilos a nivel usuario Usa un solo núcleo del procesador en un procesador que tiene más de un núcleo No puede distribuir los hilos a nivel del usuario en los dos núcleo Cuando un hilo realiza una llamada al sistema, se bloquea el mismo y también el resto de los hilos del procesos. Hilos a nivel del Kernel Proceso Thread Espacio de Usuario Espacio del Kernel Kernel Tabla de procesos ● Tabla de threads Soportados por el kernel o núcleo del sistema operativo Hilos a nivel del Kernel ● Ejemplos: ● Windows 95/98/NT ● Solaris ● Linux ● Mac OS Hilos a nivel del kernel (con una CPU con un solo núcleo) Nivel Usuario Nivel Kernel (Sistema Operativo) Planificador del SO Hardware Core CPU Hilos a nivel del kernel (con una CPU de dos núcleos) Nivel Usuario Nivel Kernel (Sistema Operativo) Planificador del SO Hardware Core Core CPU Hilos a nivel del kernel ● Ventajas ● ● ● El bloqueo de un hilo no bloquea todos los hilos del proceso que lo contiene. El kernel puede planificar simultáneamente múltiples hilos del mismo proceso en múltiples procesadores. Las propias funciones del kernel pueden ser multihilo Hilos a nivel del kernel ● Desventajas ● ● La creación/destrucción de hilos es más cara en el kernel que en espacio de usuario. El cambio de contexto de hilos también es más caro Modelos Multi-hilo Mapeo de hilos de usuario a kernel: ● Muchos a uno ● Uno a uno ● Muchos a muchos Modelos Multi-hilo Muchos a uno ● ● Muchos hilos de usuario mapeados a un único hilo de kernel Ejemplos: ● Solaris Green Threads ● GNU Portable Threads Modelos Multi-hilo Uno a uno ● ● Cada hilo de nivel de usuario se mapea a un hilo de kernel Ejemplos ● Windows NT/XP/2000 ● Linux ● Solaris 9 and later Modelos Multi-hilo Muchos a muchos ● ● Permite mapear muchos hilos de usuario a muchos de kernel Permite al sistema operativo crear un número adecuado de hilos ● Solaris versión 9 y anteriores W ● Windows NT/2000 con el paquete ThreadFiber Modelos Multi-hilo Muchos a muchos Planificación del procesador ● Conceptos básicos ● Objetivos ● Criterios ● Medidas ● Algoritmos de Planificación Planificación del procesador Conceptos básicos: ● ● ● Obtener el máximo aprovechamiento de CPU con multiprogramación Ráfagas CPU–E/S – El proceso de ejecución consiste de un ciclo de ejecución en CPU y espera de E/S Distribución de uso de CPU Planificación del procesador Conceptos básicos: Ráfaga de CPU larga Ráfaga de CPU corta Tiempo Esperando a E/S Planificación del procesador Planificación del procesador Objetivos: ● Justicia ● Máxima capacidad de ejecución ● Máximo número de usuarios interactivos ● Predecibilidad ● Minimización de la sobrecarga ● Equilibrio en el uso de los recursos ● Seguridad de las prioridades Planificación del procesador Criterios ● Tiempo de respuesta ● Tiempo de servicio ● Tiempo de ejecución ● Tiempo de espera ● Eficiencia ● Rendimiento Planificación del procesador Medidas sobre los procesos ● Tiempo de servicio: T = tf - ti ● Tiempo de espera: E = T - t ● Indice de servicio: permite evaluar la política de planificación de los procesos ● ● ● I = t / T es el tanto por uno en tiempo de ejecución con respecto al tiempo de vida del proceso. Si I tiende a la unidad, el proceso está limitado por proceso. Si I tiende a cero, el proceso esta limitado por E/S Planificación del procesador Algoritmos de planificación (1) ● Planifican la asignación del procesador desde la cola de listo, que a su vez se alimenta de: ● ● ● ● Ejecución Abandonar el estado de ejecución sin estar bloqueado. O deja de estar bloqueado Un proceso cuando termina su ejecución, deja de existir para el planificador. Planificación del procesador Algoritmos de planificación (2) ● Las políticas de planificación pueden ser: ● ● No Apropiativas: una vez que le damos el CPU a un proceso dado, no puede quitárselo hasta que complete su ráfaga de CPU (SO por lotes) Apropiativa: permiten la interrupción en la ejecución de un proceso para, normalmente, dar paso a otro. (SO en tiempo compartido y real) Planificación del procesador Algoritmos de planificación (3) ● FCFS – Primero llegar primero en salir ● SJN – El de trabajo más corto ● HRN – El de la tasa de respuesta más alta ● SRT – El tiempo restante más corto ● RR – Round Robin ● Prioridad ● Colas múltiples ● Colas múltiples con realimentación Planificación colas múltiples ● ● ● ● Los procesos se pueden clasificar en grupos para mayor flexibilidad: ● Procesos de primer plano (Interactivos) ● Procesos de segundo plano (en lotes o batch Se divide la cola de listo en varias colas. Los procesos se asignan a una u otra dependiendo de sus necesidades y tipo. Para conocer que cola suministrará el P al procesador se utiliza un algoritmo apropiativo de prioridad fija. Planificación colas múltiples ● Ventaja: requiere poco trabajo adicional de planificación ● Desventaja: no es flexible Colas múltiples con realimentación ● ● ● ● Permite que un proceso se mueva entre colas El objetivo es separar procesos con diferentes ráfagas de CPU Favorece a los procesos limitado por E/S y a los procesos interactivos (cortos) Parámetros: ● No. de colas ● Algoritmo de planificación por cada cola ● Método para elevar un P a una cola mayor prioridad ● Método para descender un P a una cola mayor prioridad ● Método que determine a que cola entra un P al inicio Colas múltiples con realimentación ● Es apropiativa y adaptable (gestión de colas con RR y FCFS) Planificación de hilos Posible planificación de hilos en espacio de usuario ● Quantum por proceso de 50-msec ● Cada threads ejecuta 5 msec/CPU Planificación de hilos Proceso A 1 3 Proceso B 2 Espacio de Usuario Espacio del Kernel 1. El Kernel selecciona un thread Posible: También posible: A1, A2, A3, A1, A2, A3 A1, B1, A2, B2, A3, B3 Posible planificación de hilos en espacio de kernel ● Quantum por proceso de 50-msec ● Cada threads ejecuta 5 msec/CPU