Categorías: Todo - sincronización - ejecución - jerarquía - creación

por Manuel Costilla hace 5 años

289

Organigrama Arbol

Un hilo representa un flujo de ejecución dentro de un proceso, cada uno con su propio contador de programa, registros y pila. Los sistemas operativos pueden clasificarse en sistemas de único proceso único hilo, múltiples procesos con varios hilos y varios procesos con único hilo.

Organigrama Arbol

¿Que es un hilo?

A

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.
Archivos: Dos o mas proceso puede comunicarse entre sí, simplemente accediendo a un archivo por su nombre.
Cola de mensajes: Las colas de mensajes son otra forma de comunicación asincrónica entre procesos o entre hilos del mismo proceso.
Tubería: Una tubería es un mecanismo de comunicación y sincronización. Es como un pseudoarchivo mantenido por el sistema operativo.
Socket: El socket también es una forma de comunicación, generalmente entre procesos remotos ejecutando en computadoras conectadas mediante una red.
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.
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.
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.
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 independientes: Un proceso independiente si no afecta o es afectado por la ejecución de otros procesos en el sistema.

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..
2. Se debe prevenir que se pierdan las señales.
1. Una señal debe ser manejada apropiadamente, no importa que hilo del proceso la haya recibido.

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.
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.
3. Planificación forzada: Un esquema de planificación forzada permite a un hilo nombrar a sus sucesores si quiere.
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.
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

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.

Creación de los hilos

Los hilos se pueden crear ya sea en forma estática o dinámica.
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.
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.

Modelos de organización:

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.
2. Modelo pipeline: Este modelo es útil para aplicaciones basadas en el modelo producto consumidor.
1. Modelo despachador-trabajador: en este modelo, el proceso esta compuesto de un hilo despachador único y múltiples hilos trabajadores.

Motivación para el uso de hilos

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.
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.
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.

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.

¿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.

Jerarquía de procesos

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

¿Cuándo termina un proceso?

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

Creación y terminación de proceso

 El padre espera que sus hijos terminen para seguir la ejecución
 El padre sigue ejecutándose concurrentemente con sus hijos

¿Cómo se clasifican los sistemas operativos?

Los sistemas operativos se clasifican de la siguiente manera:
 Múltiples procesos carios hilos
 Varios procesos único hilo
 Único proceso único hilo