Contenidos Sistemas Operativos Tema 5. Procesos n n n n n Concepto de proceso Estructuras de datos: BCP y colas de procesos Niveles de planificación Creación y finalización de procesos Hilos © 1998-2012 José Miguel Santos – Alexis Quesada – Francisco Santana 1 Concepto de proceso n n n Estados de un proceso Un proceso es un programa en ejecución Un proceso necesita recursos para poder ejecutarse: memoria, dispositivos de E/S, la CPU, etc. Áreas típicas de la memoria: q q q 2 n A medida que un proceso se ejecuta, cambia de estado: n n n n código datos (variables globales, memoria dinámica) pila (parámetros y variables locales de subrutinas) n nuevo: recién creado por el S.O. en ejecución: está en la CPU ejecutando instrucciones bloqueado: esperando a que ocurra algún evento (ej. una operación de E/S) preparado: esperando a que le asignen un procesador terminado: no ejecutará más instrucciones y el S.O. le retirará los recursos que consume 3 Estados de un proceso nuevo Bloque de control de proceso (BCP) llamada al sist. o excepción admitido 4 planificador n terminado n preparado ejecución Para cada proceso, el S.O. debe guardar su estado y cualquier otra información que debe mantenerse mientras no está en ejecución. Bloque de control de proceso: n n interrupción n n finaliza la operación u ocurre el evento llamada al sist. de E/S o espera por un evento n n bloqueado n 5 estado actual (preparado, en espera...) registros de la CPU (contador de programa, otros registros) información del planificador (id, prioridad, etc.) apuntadores a las zonas de memoria del proceso info. de contabilidad (tiempo consumido, etc.) info. de E/S (dispositivos por los que espera, lista de archivos abiertos, etc.) etc. 6 1 Planificación de procesos n n Maximizar el aprovechamiento de la CPU Objetivo del tiempo compartido q n n Objetivo de la multiprogramación: q n Cola de planificación Conmutar la CPU entre procesos con tal frecuencia que los usuarios puedan interactuar con cada programa durante su ejecución n Conjunto de procesos esperando por la utilización de un determinado recurso Generalmente se implementa mediante una lista encadenada, donde cada elemento es una estructura de control que representa la petición a servir Su administración se lleva a cabo de acuerdo con la política de planificación ejecutada por el planificador del recurso PLANIFICADOR (política de planificación) Sistemas con un solo procesador q Los procesos esperan por CPU y por dispositivos de E/S cola de planificación recurso estructura de control (petición) 7 Colas de procesos n 8 Procesos: ubicación en memoria El S.O. organiza los BCP en colas de espera por el procesador o por los dispositivos de E/S. (colas de planificación: cola de procesos, colas de dispositivos) cola de preparados SO Espacio del núcleo BCPPA BCPPB BCPPN . . . BCPPA CPU código Proceso de usuario A datos E/S cola de espera por E/S pila .. . BCPPB Espacio de usuario código E/S Proceso de usuario B datos cola de espera por E/S pila . . . 9 Niveles de planificación n n n n 10 Niveles de planificación En los sistemas por lotes, existe un planificador de largo plazo (PLP) o de alto nivel, que suministra procesos a la cola de preparados. El planificador de corto plazo o de bajo nivel es el que asigna y desasigna la CPU. El PLP trata de conseguir una mezcla adecuada de trabajos intensivos en CPU y en E/S. Se ejecuta con poca frecuencia. Planificador de medio plazo. Envía al disco procesos bloqueados, para liberar memoria principal a los otros procesos => Intercambio (swapping). 11 cola de trabajos PCP PLP cola de preparados E/S CPU cola de espera por E/S PMP memoria secundaria 12 2 Cambio de contexto (context switch) n n n n Cambio de contexto proceso P0 Es la operación que consiste en desalojar a un proceso de la CPU y reanudar otro. Hay que guardar el estado del proceso que sale en su BCP, y recuperar los registros del proceso que entra. Cada contexto se encuentra en cada BCP. El cambio de contexto es tiempo perdido, así que debe ser lo más rápido posible. Para minimizar ese tiempo perdido: n n sistema operativo proceso P1 interrupción o llamada al sistema guardar estado en BCP0 .. . en ejecución ocioso recuperar estado en BCP1 ocioso interrupción o llamada al sistema en ejecución guardar estado en BCP1 .. . El hardware a veces tiene instrucciones para facilitar el cambio de contexto (ej. PUSHA = guardar todos los registros) Hilos (threads) ocioso recuperar estado en BCP0 en ejecución 13 Creación de procesos n n n Ejemplos de llamadas al sistema Un proceso se crea mediante una llamada al sistema. El proceso creador se denomina padre, y el creado, hijo. Variantes en las relaciones padre/hijo: n n n n 14 n Windows: q n UNIX: q compartición de recursos: ¿todos, algunos, ninguno? espacio de memoria sincronización del padre: ¿espera a que el hijo termine? terminación CreateProcess: se indica el fichero ejecutable donde está el código del hijo q fork: crea un proceso hijo que es un duplicado del padre exec: sustituye el código por un nuevo fichero ejecutable (no crea un nuevo proceso) 15 Terminación de procesos n n n n 16 Relaciones de comunicación entre procesos Un proceso termina cuando invoca a una llamada al sistema específica (ej. exit) También si se genera una excepción y el S.O. decide abortarlo En UNIX, cuando un proceso termina, con él muere su descendencia (genocidio) Podría existir una llamada al sistema para abortar otro proceso n Los procesos pueden tener distintas relaciones de comunicación entre sí: q q n n 17 independientes/competidores cooperantes Los procesos independientes compiten por el uso de recursos escasos (ej. CPU, E/S) Los procesos cooperantes colaboran entre sí para llevar a cabo un objetivo común 18 3 Hilos (threads) n Un hilo o proceso ligero es una unidad básica de ejecución, con su propio: n n n n contador de programa registros de CPU pila (stack) n n Dos niveles de procesos: n n n Los hilos dentro de una misma aplicación comparten: n n Procesos pesados e hilos n Un proceso pesado contiene uno o varios hilos que comparten la misma memoria y recursos. ¿Quién implementa los hilos? n código y datos recursos del S.O. (ficheros, E/S, etc.) procesos pesados procesos ligeros o hilos n el sistema operativo el programa de usuario NOTA: thread se pronuncia “zred”, NO “zrid” 19 Procesos pesados e hilos código 20 ¿Por qué los hilos? datos n El objetivo es facilitar la escritura de aplicaciones concurrentes cooperativas: n n hilo1 hilo2 hilo3 pila1 pila2 pila3 n Dado que todos los hilos comparten los recursos, un proceso pesado puede contener decenas de hilos sin mucho coste adicional (sólo los pequeños BCP de sus hilos) La comunicación entre los hilos del proceso es más sencilla (usando la memoria que comparten) El cambio de contexto entre hilos de un mismo proceso pesado es menos costoso Proceso pesado 21 22 4