¿Que es un hilo?

c1

¿Cómo se clasifican los sistemas operativos?

Los sistemas operativos se clasifican de la siguiente manera:

 Único proceso único hilo

 Varios procesos único hilo

 Múltiples procesos carios hilos

Creación y terminación de proceso

 El padre sigue ejecutándose concurrentemente con sus hijos

 El padre espera que sus hijos terminen para seguir la ejecución

¿Cuándo termina un proceso?

El proceso termina cuando ejecuta su última instrucción y solicita al sistema operativo que lo elimine.

Jerarquía de procesos

Se genera un árbol de procesos y se emplean los términos de padre, hermano o abuelo.

¿Qué es un proceso ligero?

Es un programa en ejecución que comparte la imagen de memoria, y otras informaciones, con otros procesos ligeros. Puede contener un solo flujo de ejecución.

Un hilo es un flujo de ejecución a lo largo del código del proceso, con su propio contador de programa, registros y pila.

Motivación para el uso de hilos

1. Como un proceso de un solo hilo: Este modelo usa llamadas al sistema bloqueantes, pero sin ningún paralelismo. El servidor de archivos obtiene un pedido de acceso al archivo del cliente desde la fila o cola de pedidos.

2. Como una máquina de estados finitos: Soporta paralelismo, con llamadas a sistema no bloqueantes, el servidor se implementa como un proceso de un hilo único.

3. Como un grupo de hilos: Soporta paralelismo con llamadas a sistemas bloqueantes, el proceso servido se compone de un hilo despachador único y múltiples hilos trabajadores.

Modelos de organización:

1. Modelo despachador-trabajador: en este modelo, el proceso esta compuesto de un hilo despachador único y múltiples hilos trabajadores.

2. Modelo pipeline: Este modelo es útil para aplicaciones basadas en el modelo producto consumidor.

3. Modelo equipo: En este modelo todos los hilos se comportan como iguales en el sentido de que no hay una relación despachador-trabajador para el procesamiento de pedidos de clientes.

Creación de los hilos

Los hilos se pueden crear ya sea en forma estática o dinámica.

Enfoque estático: El numero de hilos de un proceso permanece fijo durante todo su tiempo de vida. El numero de hilos de un proceso se decide ya sea el momento de escribir el programa o cuando el programa es compilado.

Enfoque dinámico: El número de hilos de un proceso cambia dinámicamente. El proceso se inicia con un hilo; se crean hilos nuevos cuando se necesitan durante la ejecución del proceso y un hilo puede destruirse a sí mismo cuando finaliza su tarea al hacer una llamada de salida.

Terminación de hilos:

La terminación de los hilos se realiza de manera similar a la terminación de procesos convencionales. Es decir, un hilo puede destruirse a sí mismo cuando finaliza su trabajo al hacer una llamada de salida o ser finalizado desde el exterior al usar el comando kill y especificando el identificador de hilo como parámetro.

Sincronización de los hilos:

Dado que todos los hilos de un proceso comparten un espacio de direcciones en común se deben usar algunos mecanismos para prevenir que múltiples hilos intenten accedes los mismos datos en forma simultánea. Cada hilo debe asegurar que tiene acceso exclusivo al dato compartido mientras lo está accediendo.

1. Facilidad de asignación de prioridades: En un algoritmo de planificación simple, los hilos se planifican sobre una base de PRIMERO EN INGRESAR, PRIMERO EN SALIR

2. Flexibilidad para variar el quantum dinámicamente: Un esquema de simple planificación por turno circular asigna un quantum de longitud fija para compartir los ciclos de CPU entre hilos. Sin embargo, un quantum de longitud fija no es apropiado en un sistema procesador porque puede haber menos hilos ejecutables que procesadores disponibles.

3. Planificación forzada: Un esquema de planificación forzada permite a un hilo nombrar a sus sucesores si quiere.

4. Planificación por afinidad: Otra política de planificación que se puede usar para un mejor desempeño en un sistema multiprocesador es la planificación por afinidad.

Manejo de señales:

Las señales proveen interrupciones generadas por software y excepciones. Las interrupciones son disrupciones generadas externamente a un hilo o proceso, mientras que las excepciones son causadas por la ocurrencia de condiciones inusuales durante la ejecución de un hilo..

1. Una señal debe ser manejada apropiadamente, no importa que hilo del proceso la haya recibido.

2. Se debe prevenir que se pierdan las señales.

Fibras:

Una fibra es una unidad de ejecución que debe ser manualmente planificada por la aplicación. Las fibras le permiten a una aplicación planificar sus propios hilos de ejecución, en lugar de atenerse al mecanismo de planificación basado en prioridades proporcionado por Windows. En términos de planificaciones, son invisibles al núcleo porque están implementadas en modo usuario adentro de kernel123.dll. Para usar ´rimero se hace una llamada a la función ConvertThreadToFiber. Esta función convierte al hilo en una fibra en ejecución.

Procesos independientes: Un proceso independiente si no afecta o es afectado por la ejecución de otros procesos en el sistema.

Procesos cooperantes: Los procesos puede mostrar cooperación para compartir un objeto común. Cuando dos o mas procesos tienen que cooperar uno con el otro, entonces deben estar conectados.

Procesos concurrentes: Dos procesos son concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera instrucción del otro y antes de la última.

Pase de mensajes: En el enfoque de pase de mensajes la información a ser compartida se copia físicamente desde el espacio de direcciones del proceso remitente a los espacios de direcciones de todos los procesos receptores, y esto se hace mediante la transmisión de los datos a ser copiados en la forma de mensajes.
Un mensaje es un bloque de información, armado por un proceso transmisor de manera tal de tener significado para el proceso receptor.

Temporizadores: Un temporizador es un tipo de interrupción de reloj que se puede utilizar para controlar la secuencia de un evento y que interrumpe al procesador al llegar a cero.

Socket: El socket también es una forma de comunicación, generalmente entre procesos remotos ejecutando en computadoras conectadas mediante una red.

Tubería: Una tubería es un mecanismo de comunicación y sincronización. Es como un pseudoarchivo mantenido por el sistema operativo.

Cola de mensajes: Las colas de mensajes son otra forma de comunicación asincrónica entre procesos o entre hilos del mismo proceso.

Archivos: Dos o mas proceso puede comunicarse entre sí, simplemente accediendo a un archivo por su nombre.