En la arquitectura informática, subprocesos múltiples es la capacidad de una unidad central de procesamiento (CPU) (o un núcleo durante un procesador multinúcleo) para proporcionar múltiples subprocesos de ejecución al mismo tiempo, respaldados por el sistema operativo. El cifrado de latencia mejora el uso de la máquina al permitirle realizar funciones útiles.
El subproceso múltiple es la capacidad de un programa o un proceso de software para administrar su uso por parte de un usuario a la vez e incluso administrar múltiples requests del mismo usuario sin tener que poseer múltiples copias de la programación que se ejecuta dentro de la computadora. Multithreading es una forma de implementar la ocultación de latencia.
- La idea general de los métodos de ocultación de latencia es producir cada procesador con algún trabajo útil para intentar porque espera que se satisfagan las requests de operación remota.
- Ocultación de latencia: Proporcione a cada procesador un trabajo útil que hacer mientras espera la finalización de las requests de acceso a la memoria.
- La ocultación de latencia proporciona permiso para que las comunicaciones se superpongan por completo con el cálculo, lo que conduce a una alta eficiencia y utilización del hardware.
- Los subprocesos múltiples pueden ser un mecanismo práctico para la latencia.
Multithreading es un mecanismo útil para reducir la latencia. Una computación de subprocesos múltiples generalmente comienza con un subproceso secuencial, luego una sobrecarga de supervisión para configurar (programar) varios subprocesos independientes, luego computación y comunicación (accesos remotos) para subprocesos individuales y, finalmente, un paso de sincronización para terminar los subprocesos antes de comenzar la siguiente unidad. .
Hilo secuencial:
dentro de un programa, un hilo es un único flujo de control secuencial. El verdadero revuelo acerca de los subprocesos no se trata de un único subproceso secuencial. Más bien, se refiere al uso de múltiples subprocesos que se ejecutan simultáneamente y realizan diferentes tareas en un solo programa.
Sobrecarga de programación:
la cantidad de veces que se ejecuta el algoritmo de programación para determinar qué proceso ejecutar se denomina sobrecarga de programación. Es una sobrecarga en un sistema operativo de multiprogramación porque tenemos procesos para ejecutar pero también debemos decidir qué proceso ejecutar.
Acceso a memoria remota: el acceso
directo a memoria remota (RDMA) en informática es un acceso directo a la memoria desde la memoria de una computadora a la de otra sin involucrar el sistema operativo de ninguna computadora. Esto permite redes de alto rendimiento y baja latencia, lo que es particularmente beneficioso en clústeres de computadoras paralelas masivas.
Tiempo de inactividad:
El tiempo ideal es el tiempo que se tardaría en completar una tarea determinada si no hubiera interrupciones o problemas no planificados. Al planificar y estimar, muchos métodos de estimación basados en el tiempo utilizan esta escala de tiempo.
Sobrecarga de sincronización: la sobrecarga
de sincronización se define como la cantidad de tiempo que una tarea pasa esperando a otra. Las tareas pueden sincronizarse en una barrera específica donde todas terminan un paso de tiempo. El tiempo dedicado a esperar otras tareas desperdicia el núcleo en el que está trabajando esa tarea. Este período de espera se denomina sobrecarga de sincronización.
Cabe señalar que el uso de subprocesos múltiples no se limita a entornos de procesamiento en paralelo, sino que también brinda beneficios en un solo procesador. Para mejorar el rendimiento, un monoprocesador con múltiples subprocesos independientes para ejecutar puede alternar entre ellos en cada error de caché, cada carga, después de cada instrucción o después de cada bloque de instrucciones de tamaño fijo. El procesador puede necesitar varios conjuntos de registros (para reducir la sobrecarga de cambio de contexto) y una memoria caché más grande (para almacenar datos de referencia reciente para varios subprocesos), pero los beneficios pueden superar los costos. Hirata et al. [Hira92] reclama aceleraciones de 2.0, 3.7 y 5.8 en un procesador con nueve unidades funcionales y dos, cuatro u ocho subprocesos independientes, respectivamente.
Multiproceso para ocultar la latencia: ejemplo
- En el código, la instancia principal (primaria) de esta función accede a un par de elementos vectoriales y los espera.
- Mientras tanto, la segunda instancia de esta función puede acceder a otros dos elementos vectoriales dentro del próximo ciclo, y así sucesivamente.
- Después de l unidades de su tiempo, donde l es la latencia del sistema de memoria, la instancia de la función principal obtiene los datos solicitados de la memoria y puede realizar el cálculo especificado.
- En el siguiente ciclo, llegan los elementos de información para la siguiente instancia de función, y así sucesivamente. De esta manera, en cada ciclo de reloj, podemos realizar un cálculo.
- El programa de ejecución del ejemplo anterior se basa en dos suposiciones: el sistema de memoria es capaz de atender múltiples requests pendientes y, por lo tanto, el procesador es capaz de cambiar subprocesos en cada ciclo.
- También requiere que el programa posea una determinada especificación de concurrencia en el tipo de subprocesos.
- Máquinas como HEP y Tera dependen de procesadores multiproceso que cambiarán el contexto de ejecución en cada ciclo. En consecuencia, están listos para ocultar la latencia de manera efectiva.
Ventajas de los subprocesos múltiples
- Mayor rendimiento. Un solo proceso puede manejar una gran cantidad de operaciones informáticas y requests de E/S simultáneas.
- Uso de múltiples procesadores para cómputo y E/S al mismo tiempo y de manera totalmente simétrica.
- Excelente capacidad de respuesta de la aplicación. Las aplicaciones no se congelan ni muestran el «reloj de arena» si se puede iniciar una solicitud en su propio hilo.
- Capacidad de respuesta del servidor mejorada. Las requests grandes o complejas o los clientes lentos no bloquean otras requests de servicio
- Uso de recursos del sistema minimizado. Los subprocesos imponen un impacto mínimo en los recursos del sistema.
- Los subprocesos requieren menos gastos generales para crear, mantener y administrar que un proceso tradicional.
Desventajas de multithreading
Multithreading también tiene algunas desventajas comunes
- Procesos de depuración y prueba que son difíciles de entender.
- El resultado es a veces impredecible.
- Cambio de contexto con sobrecarga.
- Hay una mayor probabilidad de que se produzca un interbloqueo.
- El nivel de dificultad para escribir un programa ha aumentado.
- En general, la complejidad ha aumentado.
- Sincronización de recursos compartidos (objetos, datos)
- Posibles interbloqueos «hambre»: es posible que algunos subprocesos no se sirvan si el diseño tiene fallas.
- La construcción y sincronización de subprocesos consume mucha CPU/memoria.
Modelos de subprocesos múltiples beneficios de la diferencia de subprocesos múltiples entre multitarea, subprocesos múltiples y multiprocesamiento
Publicación traducida automáticamente
Artículo escrito por naimishsahu08 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA