Anda di halaman 1dari 4

INTRODUCCIN A LOS SISTEMAS DE COMPUTACIN Nombre: Alejandro Bejarano

RESUMEN DE LAS PGINAS 43 A 57

LOS HILOS Un hilo es la unidad bsica de utilizacin del procesador y posee por un ID de hilo, un contador de programa, un conjunto de registros y una pila. Comparte cdigos, datos y otros recursos del sistema operativo con otros hilos pertenecientes al mismo cdigo. Un proceso tradicional posee un nico hilo de control, por el contrario un proceso posee mltiples hilos de control, puede realizar ms de un trabajo a la vez. Normalmente una se aplicacin implementa como un proceso con varios hilos de control, por ejemplo, un navegador de Internet puede tener un hilo para mostrar las imgenes o el texto mientras otro hilo recupera los datos de la red. En algunas situaciones una misma aplicacin tiene que llevar a cabo varias tareas similares, El ejemplo ms claro es un servidor que acepta solicitudes de los clientes que piden acceder a su informacin (servidores Web, bases de datos, etc.). Un servidor sometido a un gran trabajo puede tener muchos clientes accediendo de forma concurrente a l, pero si el servidor funcionara como un proceso de un nico hilo, solo podra dar servicio a un cliente cada vez, tardndose mucho en atender las peticiones de los clientes. Los hilos juegan un papel muy importante en los sistemas de llamada a procedimientos remotos (RPC) las cuales permiten la comunicacin entre procesos dando comunicaciones parecidas a las llamadas funciones ordinarias, los servidores RPC so multihilo. Ahora los kernel de los SO son multihilo (existen varios hilos operando en el) 1. Ventajas de la programacin multihilo Capacidad de Respuesta: permite que un programa contine su ejecucin incluso cuando esta parte est bloqueada Comparticin de recursos: una aplicacin puede tener varios hilos de diferentes actividades dentro del mismo espacio de direcciones Economa: es ms fcil crear y realizar cambios de contexto entre hilos; se consume mas tiempo en gestionar procesos de hilos Uso en arquitecturas multiprocesador: los hilos pueden ser ejecutados de forma totalmente paralela en los diferentes procesadores 2. Los modelos multihilo Proporciona en un nivel por encima del kernel y los hilos se gestionan sin soporte por su parte, casi todos los SO soportan hilos de kernel

3. Modelo muchos a uno Se signan mltiples hilos del nivel de usuario a un hilo del kernel. La gestin de stos se realiza a travs de la biblioteca de hilos en el espacio de usuario, bloquendose el proceso completo si un hilo realiza una llamada bloqueante al sistema, ya que un nico hilo puede acceder al kernel a la vez, no se podrn ejecutar varios hilos de forma paralela sobre mltiples procesadores. Modelo uno a uno Se asigna cada hilo de usuario a un hilo del kernel, proporciona una mayor concurrencia que el modelo anterior, permite la ejecucin de otros hilos mientras un hilo realiza una llamada bloqueante al sistema; tambin permite la ejecucin de mltiples hilos en paralelo, sobre varios procesadores. El nico inconveniente es que la creacin de cada hilo de usuario requiere la correspondiente creacin de un hilo del kernel, la mayora de las implementaciones de este modelo limitan el nmero de hilos soportados por el sistema. Modelo muchos a muchos Se multiplexan muchos hilos de usuario sobre un nmero menor o igual de hilos del kernel, este nmero de hilos puede ser especfico (se pueden asignar ms hilos del kernel a una aplicacin en un sistema multiprocesador, los programadores pueden crear tantos hilos de usuario como crean necesarios. Asimismo, cuando un hilo realiza una llamada bloqueante al sistema, el kernel puede planificar otro hilo para su ejecucin. Bibliotecas de hilos Proporciona al programador una API para crear y gestionar los hilos. Existen dos formas implementar una biblioteca. El primer mtodo consiste en proporcionar una biblioteca en el espacio de usuario, sin ningn soporte del kernel. El segundo mtodo consiste en implementar una biblioteca en el nivel del kernel, y que sea soportada directamente por el SO. En este caso, el cdigo y las estructuras de datos de la biblioteca se encuentran en el espacio del kernel. Las tres principales bibliotecas de hilo actualmente en uso son: POSIX Pthreads, Win32 y Java. Los hilos de Windows Se ejecuta como un proceso independiente, y cada proceso puede contener uno o ms hilos. Utiliza el modelo uno a uno. Sin embargo, Windows XP tambin proporciona el soporte adecuado para una biblioteca de fibras, que proporciona la funcionalidad del modelo muchos a muchos, cualquier hilo de un proceso puede acceder al espacio de direcciones de dicho proceso. Los componentes generales de un hilo son: Un identificador (ID) de hilo que identifique de forma unvoca al hilo.: bloque de hilo ejecutivo. KTHREAD: bloque de hilo del kernel. TEB: bloque de entorno del hilo.

4.

5.

6.

7.

Un conjunto de registros para representar el estado del procesador. 2.4 Los hilos de Windows XP Windows XP implementa la API Win32 en su versin de 32 bits y la API Win64 en su versin de 64 bits. Nos basaremos en la API Win32 al ser la de mayor difusin. Esta API es la principal interfaz de programacin de aplicaciones de la familia de sistemas

operativos Windows (95, 98, NT, 2000 y XP). Una aplicacin de Windows XP se ejecuta como un proceso independiente, y cada proceso puede contener uno o ms hilos. Windows XP utiliza el modelo uno a uno descrito anteriormente, donde cada hilo de nivel de usuario se asigna a un hilo del kernel. Sin embargo, Windows XP tambin proporciona el soporte adecuado para una biblioteca de fibras, que proporciona la funcionalidad del modelo muchos a muchos. Con la biblioteca de hilos, cualquier hilo de un proceso puede acceder al espacio de direcciones de dicho proceso. Los componentes generales de un hilo son: Un identificador (ID) de hilo que identifique de forma unvoca al hilo. Un conjunto de registros para representar el estado del procesador. Una pila de usuario, utilizada cuando el hilo se est ejecutando en modo usuario, y una pila del kernel, utilizada cuando el hilo se est ejecutando en modo kernel. Un rea de almacenamiento privada usada por las distintas bibliotecas de tiempo de ejecucin y bibliotecas de vnculos dinmicos (DLLs). El conjunto de registros, las pilas y el rea de almacenamiento privado constituyen el contexto del hilo. Las principales estructuras de datos de un hilo son: ETHREAD: bloque de hilo ejecutivo. KTHREAD: bloque de hilo del kernel. TEB: bloque de entorno del hilo. Los componentes principales de la estructura ETHREAD incluyen un puntero al proceso al que pertenece el hilo y la direccin de la rutina en la que el hilo inicia su ejecucin. La estructura ETHREAD tambin contiene un puntero al correspondiente bloque KTHREAD. LA estructura KTHREAD incluye informacin de planificacin y sincronizacin del hilo. Adems, la estructura KTHREAD incluye la pila del kernel (utilizada cuando el hilo se est ejecutando en modo kernel) y un puntero al bloque de entorno TEB. Las estructuras ETHREAD y KTHREAD estn includas en el espacio del kernel; esto significa que slo el kernel puede acceder a ellas. El bloque TEB es una estructura de datos del espacio de usuario a la que se accede cuando el hilo se encuentra ejecutndose en modo usuario. Entre otros componentes, la estructura TEB contiene el identificador del hilo, una pila del modo usuario y una matriz para los datos especficos del hilo (lo que en la terminologa de Windows XP se conoce por almacenamiento local del hilo). A continuacin entraremos ms a fondo en la programacin de los hilos en Win32. 2.5 La programacin de los hilos Al inicializar un proceso con la funcin CreateProcess() se crea automticamente un hilo primario que materializa la ejecucin del proceso. En este contexto se habla tambin de un hilo principal, a partir del cual se pueden crear tantos hilos como se desee. A continuacin, trataremos una visin general de las principales funciones de la API Win32. Funcin Resultado CreateThread() SetThreadPriority() SuspendThread() ResumeThread() Sleep() SleepEx() ExitThread() TerminateThread() GetCurrentThread() GetCurrentThreadId() GetExitCodeThread() GetThreadPriority() AttachThreadInput() Crea un hilo. Define la prioridad de un hilo determinado. Aumenta el contador de espera del hilo y detiene su ejecucin. Reduce el contador de espera y, si es el caso, libera al hilos para continuar su ejecucin. Detiene la ejecucin del hilo durante un tiempo determinado. Versin especial de Sleep(), que se utiliza en el funcionamiento simultneo de operaciones I/O asncronas. Finaliza el hilo actual. Finaliza, desde fuera, un hilo determinado del proceso actual. Proporciona un semi-manejador para el hilo actual. Proporciona el ID del hilo actual. Proporciona el cdigo de salida de un hilo determinado. Proporciona la prioridad de un hilo determinado. Desva los mensajes de un hilo a otro. 2.5.1 La creacin y finalizacin Adems del hilo inicial, que se crea automticamente al inicializar un proceso, en cualquier momento se

pueden crear otros hilos dentro del proceso. El sistema no pone ningn lmite al nmero de hilos de un proceso, pero se sobreentiende que un proceso no debera crear ms hilos de los que realmente necesita. El punto de partida para la creacin de un nuevo hilo es la funcin CreateThread(), la cual proporciona un manejador al nuevo hilo cada vez que se llama con xito. A travs de este manejador, se acceder al hilo cada vez que se llamen las distintas funciones de hilos de la API Win32. Si no se llama a la funcin con xito, se obtiene NULL como resultado. En ese caso, mediante la funcin GetLastError() podeos consultar un cdigo de error ampliado. argumento de 32 bits y, como resultado de la funcin, devuelve tambin un valor de 32 bits. Por lo que respecta a la codificacin de estos tipos, existe libertad para formular el prototipo. El argumento se puede definir indistintamente como LONG, DWORD, LPVOID o cualquier otro tipo; lo principal es que el tipo, en la compilacin, se traduce en un valor de 32 bits. Por ejemplo, una declaracin vlida sera: DWORD WINAPI ThreadProc( LPVOID lpParameter ); lpParameter Este parmetro materializa el valor de 32 bits que se pasa a la funcin de inicializacin del hilo. dwCreationFlags Si el hilo recin creado no se debe ejecutar de forma inmediata, en este parmetro se debe introducir la constante CREATE_SUSPENDED. Slo despus de ejecutar la funcin ResumeThread(), se empezar a ejecutar el hilo. Si, por el contrario, se quiere iniciar el hilo inmediatamente, debemos introducir el valor 0.

Anda mungkin juga menyukai