1. Implementación de Hilos
1.1. Espacio de Usuario
1.1.1. Características
1.1.1.1. Se colocan en el espacio del usuario
1.1.1.2. El KERNEL desconoce de ellos
1.1.1.3. Se implementan en sistemas que no acepten hilos
1.1.1.4. Se ejecutan encima del sistema de ejecución
1.1.1.4.1. Son una colección de procedimientos de administración de hilos
1.1.2. Funcionamiento
1.1.2.1. Ocupan de una 'Tabla de Hilos'
1.1.2.2. Solo contienen las propiedades del hilo
1.1.2.3. Es Administrado por el sistema en Tiempo Real
1.1.2.4. Entre funciones Bloqueo y Listo se guarda información para hacer reinicios
1.1.3. Tabla de Comparación
1.1.3.1. Ventajas
1.1.3.1.1. Se implementan es sistemas de subprocesos muy bien
1.1.3.1.2. Calendarización personalizada en cada hilo
1.1.3.1.3. NO llama al KERNEL
1.1.3.1.4. No cambia el contexto del algoritmo
1.1.3.2. Desventajas
1.1.3.2.1. Un hilo no puede iniciar si no acaba el actual
1.1.3.2.2. Ocupa ceder paso desde el CPU
1.1.3.2.3. Es imposible interrumpir procesos y planificar turnos
1.2. Hilos en el KERNEL
1.2.1. Características
1.2.1.1. El KERNEL toma el control de los hilos
1.2.1.2. El KERNEL conoce los hilos
1.2.1.3. No ocupan de un sistema de ejecución para realizar sus acciones
1.2.1.4. Los hilos no tienen la tabla de procesos
1.2.1.5. El KERNEL tiene la información de todos los hilos a ejecutar (cada uno)
1.2.2. Funcionamientos
1.2.2.1. Tiene la información de los hilos dentro del KERNEL
1.2.2.2. El KERNEL detecta si se bloquea un hilo
1.2.2.2.1. Puede crear otro hilo dentro del mismo para seguir su proceso
1.2.2.2.2. Puede realizar otro proceso fuera de ese mismo hilo
1.2.2.3. Puede crear o destruir un hilo
1.2.2.3.1. Si un hilo destruye otro hilo
1.2.2.4. Tabla Comparativa
1.2.2.4.1. Ventajas
1.2.2.4.2. Desventajas
1.3. Implementación Híbrida
1.3.1. Combina los sub-procesos tipo Usuario y KERNEL
1.3.1.1. Funcionamiento
1.3.1.1.1. Multiplexa los hilos
1.3.1.1.2. Usa los Hilos KERNEL para multiplexar los de Usuario y de vuelta al KERNEL
1.3.1.1.3. El KERNEL solo podrá identificar los hilos de su mismo nivel
1.3.1.1.4. El KERNEL solo puede planificar los hilos de su nivel
1.3.1.2. Situaciones con los hilos Híbridos
1.3.1.2.1. Cada hilo puede tener varios hilos multiplexados encima de otros
1.3.1.2.2. Son iguales al sistema de Usuario cuando los pones en ejecución en un sistema operativos
1.3.1.2.3. No son capaces de multihilarse
1.3.1.2.4. Cada hilo KERNEL tiene una cantidad de hilos Usuario
1.3.1.2.5. Cada hilo KERNEL turna sus propios hilos Usuario entre sí
2. Justificación
2.1. ¿Qué son?
2.1.1. Son múltiples procesos que simulan paralelismo
2.1.2. En realidad es solo un proceso que ejecuta pequeñas cosas rápidamente
2.1.3. Los procesos agrupan todos los recursos para realizar un trabajo
2.1.4. Cuando un proceso abarca más de lo que puede entonces se generan hilos
2.1.5. (Un proceso dentro de otro proceso)
2.2. Manejo
2.2.1. Se implementan en sistemas que ocupan elaborar muchas cosas a la vez
2.2.2. Descomponen la aplicación en varios hilos de secuencia
2.2.3. Comparten espacios de dirección y todos los datos en secuencia
2.2.4. Son cuasi-paralelos
2.3. ¿Porque implementarlos?
2.3.1. Son ligeros
2.3.2. Se crean y destruyen facilmente
2.3.3. Agilizan la velocidad de la aplicación
2.3.4. Se aplican en sistemas de más de un CPU
2.3.5. Pueden llegar a crear paralelismo real
2.4. Si no hubiera hilos
2.4.1. No podríamos ver un vídeo de Youtube y mensajear en Facebook a la vez
2.4.2. Cuando movamos el ratón la computadora alentaría todos los procesos actuales
2.4.3. Las estructuras de proceso serian demasiado complejas
2.4.4. (No podríamos hacer más de dos cosas a la vez)
3. Modelo Clásico
3.1. Los Hilos
3.1.1. Se juntan en la memoria
3.1.1.1. Comparten la misma memoria para poder realizar edición al documento que se les designe
3.1.2. Tienen un contador de quien dice
3.1.2.1. El registro de cual es la información a procesar
3.1.2.2. Registro de los valores de cada variable a usar
3.1.2.3. Un registro de la siguiente instrucción a cometer
3.1.3. Se consideran 'Procesos Ligeros'
3.1.3.1. Permite llevar a cabo varias ejecuciones en el mismo entorno de proceso
3.1.4. Tienen Multiprogramación
3.1.4.1. Conmutar un proceso para generar paralelismo
3.1.4.1.1. "Como crear varios programas chiquitos"
3.1.5. Tienen Multihilamiento
3.1.5.1. Generar muchos hilos del mismo proceso
3.1.5.1.1. La CPU turnara los hilos en el proceso
3.1.5.1.2. "Es como varios hilos ejecutándose casi a la vez"
3.2. Memoria
3.2.1. Los hilos se almacenan en la memoria
3.2.2. Cada hilo tiene una pila
3.2.2.1. Contiene los valores de cada procedimiento llamado
3.2.3. Retorno
3.2.3.1. Procesaran la información solicitada para expulsarlo después
3.2.3.2. Regresaran los valores y direcciones usados cuando acabe el llamado