Post on 17-Feb-2017
USO DE HILOS
Los hilos son mini procesos. cada hilo se ejecuta en forma estrictamente secuencial y tiene su propio contador de programa una pila para llevar un registro de su posición.
Los hilos pueden crear hilos hijos, mientras un hilo esta bloqueado se puede ejecutar otra fila del mismo proceso en los distintos hilos de un proceso comparten un espacio de direcciones, y los hilos pueden tener distintos estados (en ejecución, bloqueado, listo y terminación).
Sincronización de hilos
Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos. Cualquier modificación de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la actividad de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos.
Ventajas de los hilos • Las ventajas de los hilos se dan cuando hablamos de
Multihilos, que es cuando un proceso tiene múltiples hilos de ejecución los cuales realizan actividades distintas, que pueden o no ser cooperativas entre sí.
• Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un proceso. Algunas investigaciones llevan al resultado que esto es así en un factor de 10.
• Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se elimina un proceso se debe eliminar el BCP del mismo, mientras que un hilo se elimina su contexto y pila.
• Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso.
• Los hilos aumentan la eficiencia de la comunicación entre programas en ejecución.
Usos de los hilos
Los hilos se inventaron para permitir la combinación del paralelismo con la ejecución secuencial y el bloqueo de las llamadas al sistema.
Modelo del servidor/trabajador
• El servidor lee las solicitudes de trabajo del buzón del sistema.
• Después de examinar la solicitud elige a un hilo trabajador inactivo (es decir, bloqueado) y le envía la solicitud, lo cual se puede realizar al escribir un apuntador al mensaje en una palabra especial asociada a cada hilo.
• El servidor despierta entonces al trabajador dormido.
• El hilo trabajador verifica si puede satisfacer la solicitud por medio del bloque caché compartido, al que tienen acceso todos los hilos.
• Si no envía un mensaje al disco para obtener el bloque necesario y se duerme esperando
el fin de la operación.
Se llama: Al planificador y se inicializa otro hilo,
que tal vez sea el servidor, para pedir más trabajo; o.
A otro trabajador listo para realizar un trabajo.
Modelo del servidor/trabajador
Modelo de equipo
• Aquí todos los hilos son iguales y cada uno obtiene y procesa sus propias solicitudes.
• No hay servidor.• A veces llega trabajo que un hilo no puede
manejar, en particular si cada hilo se especializa en manejar cierto tipo de trabajo.
• En este caso, se puede utilizar una cola de trabajo, la cual contiene todos los trabajos pendientes.
• Con este tipo de organización, un hilo debe verificar primero la cola de trabajo antes de buscar en el buzón del sistema.
Modelo de equipo
Modelo de entubamiento • El primer hilo genera ciertos datos y los transfiere al
siguiente para su procesamiento. • Los datos pasan de hilo en hilo y en cada etapa se
lleva a cabo cierto procesamiento. • Esta puede ser una buena opción en cierto
problemas.• Un programa diseñado adecuadamente y que utilice
hilos debe funcionar bien:• En una única cpu con hilos compartidos.• En un verdadero multiprocesador.
Modelo de entubamiento