Un bloqueo de software es un problema informático que puede ocurrir en sistemas multiprocesador. Este bloqueo puede hacer que el rendimiento de una computadora disminuya drásticamente y evitar el uso de capacidad adicional del procesador. En las computadoras modernas con multiprocesador, se debe utilizar un software especial del sistema operativo para evitar el mal funcionamiento del bloqueo del software.
La ocurrencia del bloqueo de software fue descrita por primera vez por el científico de IBM ™ Stuart Madnick en 1968. En esta etapa temprana de la historia de la computación, Madnick predijo que las computadoras personales se volverían más pequeñas y menos costosas durante las próximas décadas, pero seguirían limitadas las mismas velocidades de transferencia de datos. Esta predicción resultó ser en su mayoría correcta, y la potencia útil de las computadoras a menudo aumenta simplemente agregando procesadores adicionales.
La causa principal del bloqueo del software no es un error per se, sino más bien una característica. En una computadora con varios procesadores conectados entre sí, no hay ninguna ventaja en tener múltiples procesadores cada uno manejando la misma información. De hecho, diferentes procesadores que intenten modificar una única fuente de datos pueden dañar el registro original. Para evitar que varias unidades abran la misma información, solo se permite el acceso a un procesador mientras que los componentes de procesamiento restantes están «bloqueados» del archivo.
Este método de bloqueo es eficaz para equipos con un número reducido de procesadores. Sin embargo, el enfoque se convierte en un problema en dispositivos con una amplia gama de unidades de procesamiento enlazadas. El bloqueo de software limita gravemente la escalabilidad y la eficacia de agregar varios procesadores a las computadoras, porque existen límites en la rapidez con la que se pueden distribuir los datos entre el espacio de almacenamiento y los procesadores.
Ninguna máquina, incluida una computadora, es completamente eficiente; esta ineficiencia inherente se agrava en las computadoras multiprocesador. Una computadora con dieciséis procesadores, por ejemplo, puede tener uno de sus procesadores inactivo en todo momento porque los datos no se pueden distribuir tan rápido como se necesita. En algún momento, la ineficiencia compuesta significa que ya no es útil expandir la cantidad de procesadores en una computadora. Agregar mil procesadores a un sistema es inútil, ya que la velocidad de los datos es limitada y la mayoría de los procesadores redundantes quedarían bloqueados constantemente por software.
El bloqueo del software se puede minimizar mediante el uso de un sistema operativo diseñado específicamente para varios procesadores. El software especializado puede dividir una fuente de datos en muchas partes diferentes y distribuir estas partes a los procesadores. Este enfoque reduce la necesidad de bloquear los procesadores, ya que cada unidad puede procesar un pequeño componente de los datos originales. Esencialmente, el software multiprocesador se asegura de que cada unidad de procesamiento siempre tenga una tarea y mantenga el flujo de datos de una manera más distribuida y uniforme.