1. PROGRAMAS, PROCESOS E HILOS
1.1. Un programa, es un código que se almacena en una computadora y que está destinado a llevar a cabo alguna tarea concreta.
1.2. Una aplicación es un programa, un driver también lo es e incluso el sistema operativo es un programa capaz de ejecutar otros programas en su interior.
1.3. Un hilo es la unidad de ejecución de un proceso. Se puede dividir el proceso en subprocesos,y cada uno de ellos será un hilo de ejecución.
1.4. Si un programa no es multi-hilo, los procesos dentro de él solamente tendrán un hilo
1.5. Si tenemos procesos multi-hilo, estos podrán dividirse en varios trozos, y cada uno de esos hilos comparte los recursos asignados al proceso.
1.6. Cada hilo cuenta con su propia pila de registros por lo que podrán procesarse dos o más al mismo tiempo, al contrario que un solo proceso, que tendrá que ejecutarse todo de una sola vez
2. Diferencia entre la CPU y la GPU
2.1. La CPU se encarga de todo tipo de tareas, el GPU está especializado en los gráficos, ambos están formados por los mismos elementos básicos (transistores.)
2.2. GPU que está mucho más especializado para tareas que requieren de un alto grado de paralelismo.
2.3. Una GPU es capaz de ejecutar miles de programas a la vez, pero mucho más específicos que los que puede manejar una CPU.
2.4. Los programas que ejecuta una GPU se componen de una única instrucción y múltiples datos.
3. Hilos
3.1. Nivel usuario (ULT)
3.1.1. la aplicación gestiona todo el trabajo de los hilos y el núcleo no es consciente de la existencia de los mismos
3.2. Nivel nucleo (KLT)
3.2.1. una aplicación comienza con un solo hilo y ejecutando en ese hilo, esta aplicación y su hilo se localizan en un solo proceso gestionado por el núcleo
3.3. Estados
3.3.1. Los principales estados de los hilos son: Ejecución, Listo y Bloqueado. No tiene estados de suspensión de hilos ya que es un concepto de proceso.
3.4. Cambio de estados
3.4.1. Creación: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede crear otros hilos dentro del mismo proceso, proporcionando un puntero de instrucción y los argumentos del nuevo hilo.
3.4.2. Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros de usuario, contador de programa y punteros de pila).
3.4.3. Desbloqueo: Cuando pasa el suceso por el que el hilo se bloqueó, el mismo pasa a la final de los listas.
3.4.4. Terminación: Cuando un hilo finaliza se liberan tanto su contexto como sus columnas.
3.5. Ventajas contra Procesos
3.5.1. 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í.
3.5.2. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que
3.5.3. en crear un proceso.
3.5.4. Se tarda mucho menos en terminar un hilo que un proceso,
3.5.5. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso
3.5.6. Los hilos aumentan la eficiencia de la comunicación entre programas en ejecución.