1 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr.
Juan Jos Aranda Aboy
Sistemas Operativos I Unidad 2: Procesos e Hilos (Threads) 2 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Contenidos Conceptos de proceso. Estados de un proceso. Modelo de cinco estados de procesos. Control de procesos. Modos de ejecucin. Creacin de procesos. Administracin de procesos en Unix/Linux. Procesos e hilos. Creacin y ejecucin de procesos. Propuesta de proyecto anual. Control 1. Comunicacin entre procesos: Concurrencia. Exclusin mutua. Semforos. Mensajes. Taller 2: Comunicacin entre procesos. Control 2. Clase de recapitulacin. Clase de recapitulacin. Prueba de Ctedra 1. 3 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Introduccin En las clases anteriores, se ha presentado el concepto de proceso incluyendo las dos caractersticas siguientes: Unidad de propiedad de los recursos: A cada proceso se le asigna un espacio de direcciones virtuales para albergar a la imagen del proceso. Al proceso se le puede asignar memoria virtual y otros recursos, tales como canales de E/S, dispositivos de E/S y archivos. Unidad de expedicin: Un proceso es un camino de ejecucin (traza) a travs de uno o ms programas. Esta ejecucin puede ser intercalada con la de otros procesos. De este modo, un proceso tiene un estado de ejecucin (Listo, Bloqueado, etc.) y una prioridad de expedicin. La unidad planificada y expedida por el sistema operativo es el proceso. 4 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Procesos e hilos En la mayora de los sistemas operativos, estas dos caractersticas son, de hecho, la esencia de un proceso. Sin embargo, algunos argumentos pueden convencer de que estas dos caractersticas son independientes y que deben ser tratadas de manera independiente por el sistema operativo. Esto se hace as en una serie de sistemas operativos, en particular en algunos sistemas operativos de desarrollo reciente. Para distinguir estas dos caractersticas, la unidad de expedicin se conoce como hilo (thread) o proceso ligero (lightweight process), mientras que a la unidad de propiedad de los recursos se le suele llamar proceso o tarea. 5 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Procesos con uno y con mltiples hilos 6 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Caractersticas de los hilos En una tarea pueden haber uno o ms hilos, cada uno con: Estado de ejecucin del hilo: Ejecucin, Listo, etc. Contexto del procesador, que se salva cuando no est ejecutando; una forma de contemplar al hilo es con un contador de programa independiente operando dentro de una tarea. Pila de ejecucin. Almacenamiento esttico para las variables locales. Acceso a la memoria y a los recursos de la tarea, que se comparten con todos los otros hilos de la tarea. 7 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Mltiples hilos en un nico procesador 8 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Beneficios de los hilos Se tarda mucho menos tiempo en crear un nuevo hilo en un proceso existente que en crear una nueva tarea, Menos tiempo para terminar un hilo y Menos tiempo para cambiar entre dos hilos de un mismo proceso. Dado que los hilos dentro de un mismo proceso comparten memoria y archivos, pueden comunicarse unos con otros sin necesidad de acceder al ncleo.
Por tanto, si hay una aplicacin o una funcin que pueda implementarse como un conjunto de unidades de ejecucin relacionadas, es ms eficiente hacerlo con una coleccin de hilos que con una coleccin de tareas separadas. 9 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Ejemplos de uso Un servidor de archivos de una red de rea local: Cada vez que llega una solicitud de un nuevo archivo, se genera un nuevo hilo para el programa de gestin de archivos. Puesto que el servidor debe manejar muchas solicitudes, se crearn y destruirn muchos hilos en un corto periodo de tiempo. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de una misma tarea simultneamente y en diferentes procesadores. Los hilos son tambin tiles en los monoprocesadores para simplificar la estructura de los programas que lleven a cabo diversas funciones. Otro ejemplo de uso efectivo de los hilos est en las aplicaciones de proceso de comunicaciones y en los supervisores de transacciones. Otra forma en la que los hilos aportan eficiencia es en la comunicacin entre diferentes programas en ejecucin. En la mayora de los sistemas operativos, la comunicacin entre procesos independientes requiere la intervencin del ncleo para ofrecer proteccin y para proporcionar los mecanismos necesarios para la comunicacin. Sin embargo, puesto que los hilos de una misma tarea comparten memoria y archivos, pueden comunicarse entre si sin invocar al ncleo. 10 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Ejemplos de uso de los hilos en un sistema de multitarea Trabajo interactivo y de fondo: Esto se produce en el sentido de la interaccin directa con el usuario, no en el de sesiones interactivas y de fondo. Por ejemplo, en un programa de hoja de clculo, un hilo puede estar visualizando los mens y leyendo la entrada del usuario mientras que otro hilo ejecuta las rdenes y actualiza la hoja de clculo. Esta medida suele aumentar la velocidad que se percibe de la aplicacin, permitiendo que el programa pida la orden siguiente antes de terminar la anterior. Proceso asncrono: Los elementos asncronos del programa se pueden implementar como hilos. Por ejemplo, para protegerse de un corte de alimentacin, se puede disear un procesador de textos que escriba su buffer de la RAM al disco una vez por minuto. Se puede crear un hilo cuya nica tarea sea hacer estas copias de respaldo peridicas y que se planifique directamente con el sistema operativo; no hay necesidad de ningn cdigo superfluo en el programa principal que haga la comprobacin de tiempo o que coordine la entrada y la salida. Aceleracin de la ejecucin: Un proceso con mltiples hilos puede computar un lote de datos mientras lee el lote siguiente de un dispositivo. En un sistema con multiproceso, varios hilos de un mismo proceso podrn ejecutarse realmente a la vez. Organizacin de los programas: Los programas que suponen una variedad de actividades o varios orgenes y destinos de entrada y salida pueden hacerse ms fciles de disear e implementar mediante hilos. 11 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Servidor Web con mltiples hilos (a) Hilo despachador (Dispatcher thread) (b) Hilo trabajador (Worker thread) 12 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Estados de los hilos La suspensin de los procesos engloba suspender todos los hilos de dicho proceso, dado que todos estos hilos comparten el mismo espacio de direcciones. Al terminar el proceso, terminan todos los hilos incluidos en l. Los estados asociados con un cambio en el estado del hilo son: Carga y ejecucin (Spawn) Se carga y ejecuta otro hilo. Bloqueado (Block) Desbloqueado (Unblock) Finzalizado (Finish) Se devuelve el contexto de registros y pilas. 13 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Relacin entre Hilos y Procesos 14 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Modelos de hilos a) Tres procesos, cada uno con un hilo. b) Un proceso con tres hilos. 15 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Elementos compartidos por todos los hilos de un proceso: Espacio de direcciones Variables globales Archivos abiertos Procesos hijos Alarmas pendientes Seales y manipuladores de seales Informacin de contabilidad Elementos privados para cada hilo: Contador de programa Registros Pila Estado Modelos (2) 16 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Hilos a nivel usuario Todo el manejo de los hilos lo realiza la aplicacin. El ncleo no tiene conciencia de la existencia de los hilos. Ejemplos: Norma POSIX. IEEE 1003.1c, comn en sistemas UNIX, establece una interfaz del programador de aplicacin (API) para creacin y sincronizacin de hilos. 17 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Relacin entre hilos a nivel usuario y estados de los procesos 18 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Hilos a nivel del ncleo El ncleo mantiene la informacin de contexto sobre los procesos y los hilos La planificacin se realiza en base a hilos. Ejemplos: Windows, BeOS, Linux. 19 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Enfoques combinados hbridos La creacin de hilos se realiza en el espacio del usuario. El grueso de la planificacin y sincronizacin de los hilos reside dentro de la aplicacin. Solaris es ejemplo de este enfoque. 20 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Activaciones del planificador Objetivo: Imitar la funcionalidad de los hilos del ncleo. Gana desempeo de los hilos en el espacio del usuario. Evita transiciones innecesarias entre el usuario y el ncleo. El ncleo asigna procesadores virtuales a cada proceso, lo que permite al sistema asignar hilos a procesadores durante el tiempo de ejecucin. Problema: Confianza esencial en el ncleo (capa inferior) llamando a procedimientos en el espacio de usuario (capa superior) 21 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Hilos como respuesta (pop-up) Creacin del nuevo hilo cuando se recibe un mensaje: (a) antes de recibir el mensaje. (b) despus de recibido el mensaje. 22 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Conversin de cdigo con nico hilo en cdigo con mltiples hilos Pueden generarse conflictos entre los hilos al utilizar alguna variable global. 23 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Variables privadas del hilo Los hilos pueden tener sus variables globales privadas. 24 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Llamada a procedimientos remotos (Remote Procedure Call RPC) Ejemplo de RPC con un hilo Ejemplo de RPC con mltiples hilos 25 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Fuentes de informacin Tanenbaum A., Sistemas Operativos Modernos, Prentice Hall, 1994 Tanenbaum A., Sistemas Operativos: diseo e implementacin Prentice-Hall, 1998 Tanenbaum A., Sistemas Operativos Distribuidos, Prentice Hall, 2003 Carretero, J. Garca, F. Prez, F. Sistemas Operativos: Una visin aplicada Mc Graw Hill. 2001. Stallings W., Sistemas Operativos, 5ta. Edicin. Prentice-Hall. 2004 26 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Textos en biblioteca de la sede Documento No. Ao Ttulo Autor 11486 2001 Sistemas operativos. Stallings, William. 9137 2003 Sistemas operativos modernos. Tanenbaum, Andrew S. 8443 1998 Sistemas operativos: Diseo e implementacin. Tanenbaum, Andrew S. 6980 1998 Sistemas operativos: Diseo e implementacin. Tanenbaum, Andrew S.
4684 1996 Sistemas operativos distribuidos. Tanenbaum, Andrew S. 3137 1993 Sistemas operativos modernos. Tanenbaum, Andrew S. 27 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Referencias en Internet David Luis la Red Martnez SISTEMAS OPERATIVOS Domingo Mery Sistemas Operativos Jorge Alfonso Briones Garca Sistemas Operativos Distribuidos (material adicional) Sistemas operativos (SIMULACIONES Y ANIMACIONES)
28 2007 Universidad de Las Amricas - Escuela de Ingeniera - Sistemas Operativos I - Dr. Juan Jos Aranda Aboy Textos en Internet (ingls) Andrew S. Tanenbaum Modern Operating Systems Andrew S. Tanenbaum Distributed Systems: Principles and Paradigms George Coulouris, Jean Dollimore and Tim Kindberg Distributed Systems: Concepts and Design, 3ra edicin (4ta edicin 2005) Avi Silberschatz, Peter Baer Galvin & Greg Gagne Operating System Concepts Minix 3 Operating System