multiprocesamiento


El multiprocesamiento es el uso de dos o más unidades centrales de procesamiento (CPU) dentro de un solo sistema informático . [1] [2] El término también se refiere a la capacidad de un sistema para admitir más de un procesador o la capacidad de asignar tareas entre ellos. Hay muchas variaciones sobre este tema básico, y la definición de multiprocesamiento puede variar según el contexto, principalmente en función de cómo se definen las CPU ( múltiples núcleos en un dado , múltiples dados en un paquete , múltiples paquetes en una unidad de sistema , etc. ).

Según algunos diccionarios en línea, un multiprocesador es un sistema informático que tiene dos o más unidades de procesamiento (procesadores múltiples), cada una de las cuales comparte memoria principal y periféricos, para procesar programas simultáneamente. [3] [4] Un libro de texto de 2009 definió el sistema multiprocesador de manera similar, pero señaló que los procesadores pueden compartir "alguna o toda la memoria del sistema y las instalaciones de E/S"; también dio sistema estrechamente acoplado como un término sinónimo. [5]

En el nivel del sistema operativo , el multiprocesamiento a veces se usa para referirse a la ejecución de múltiples procesos simultáneos en un sistema, con cada proceso ejecutándose en una CPU o núcleo separado, a diferencia de un solo proceso en cualquier instante. [6] [7] Cuando se usa con esta definición, el multiprocesamiento a veces se contrasta con la multitarea , que puede usar un solo procesador pero cambiarlo en intervalos de tiempo entre tareas (es decir, un sistema de tiempo compartido ). Sin embargo, el multiprocesamiento significa una verdadera ejecución paralela de múltiples procesos utilizando más de un procesador. [7]El multiprocesamiento no significa necesariamente que un solo proceso o tarea use más de un procesador simultáneamente; el término procesamiento paralelo se usa generalmente para denotar ese escenario. [6] Otros autores prefieren referirse a las técnicas del sistema operativo como multiprogramación y reservan el término multiprocesamiento para el aspecto hardware de tener más de un procesador. [2] [8] El resto de este artículo analiza el multiprocesamiento solo en este sentido de hardware.

En la taxonomía de Flynn , los multiprocesadores definidos anteriormente son máquinas MIMD . [9] [10] Como el término "multiprocesador" normalmente se refiere a sistemas estrechamente acoplados en los que todos los procesadores comparten memoria, los multiprocesadores no son la clase completa de máquinas MIMD, que también contienen sistemas de transmisión de mensajes . [9]

Posiblemente, la primera expresión de la idea de multiprocesamiento fue escrita por Luigi Federico Menabrea en 1842, sobre el motor analítico de Charles Babbage (traducido por Ada Lovelace ): "la máquina puede ponerse en juego para dar varios resultados al mismo tiempo". tiempo, lo que acortará en gran medida la totalidad de los procesos". [11]

En un sistema de multiprocesamiento , todas las CPU pueden ser iguales o algunas pueden reservarse para fines especiales. Una combinación de consideraciones de diseño de hardware y software del sistema operativo determina la simetría (o la falta de ella) en un sistema determinado. Por ejemplo, las consideraciones de hardware o software pueden requerir que solo una CPU en particular responda a todas las interrupciones de hardware, mientras que el resto del trabajo en el sistema puede distribuirse equitativamente entre las CPU; o la ejecución del código en modo kernel puede estar restringida a una sola CPU en particular, mientras que el código en modo usuario puede ejecutarse en cualquier combinación de procesadores. Los sistemas de multiprocesamiento suelen ser más fáciles de diseñar si se imponen tales restricciones, pero tienden a ser menos eficientes que los sistemas en los que se utilizan todas las CPU.