Estaba jugando a Hypnospace Outlaw, un juego sobre un SO de temática retro. Este SO tiene un comportamiento peculiar que consiste en que al cargar una página web, si se mueve el cursor del ratón, la página se carga más rápido.
Eso me recordó algo. Cuando era joven, si no recuerdo mal, Windows 95 (si no 98) tenía este extraño comportamiento de que al instalar programas, moviendo el cursor del ratón el progreso era más rápido. ¿Qué causaba esto? Busqué en Google y no encontré nada relacionado.
Perdón por la vaga explicación.
Esto se debe a un fallo en la forma en que Windows 95 genera los eventos, y al hecho de que muchas aplicaciones son impulsadas por eventos.
Las aplicaciones de Windows 95 a menudo utilizan E/S asíncronas, es decir, piden que se realice alguna operación de archivo, como una copia, y luego le dicen al sistema operativo que pueden ponerse a dormir hasta que termine esa operación. Al dormir permiten que otras aplicaciones se ejecuten, en lugar de perder el tiempo de la CPU preguntando interminablemente si la operación de archivo ya ha terminado.
Por razones que no están del todo claras, pero probablemente debido a problemas de rendimiento en máquinas de gama baja, Windows 95 tiende a agrupar los mensajes sobre la finalización de E/S y no despierta inmediatamente la aplicación para atenderlos. Sin embargo, sí despierta la aplicación para la entrada del usuario, presumiblemente para mantener la sensación de respuesta, y cuando la aplicación está despierta, también manejará cualquier mensaje de E/S pendiente.
Por lo tanto, mover el ratón hace que la aplicación procese los mensajes de E/S más rápido, y se instale más rápido. El efecto fue bastante pronunciado; las aplicaciones grandes que podían tardar una hora en instalarse podían reducirse a 15 minutos con la entrada adecuada del ratón.
Sí, es un efecto real que provoca un aumento de velocidad medible y puede reproducirse a voluntad:
Prueba a abrir un archivo grande con el Bloc de notas en una máquina actual. La ventana no debe estar a pantalla completa. Una vez cargado, marque todo el texto utilizando el ratón (el teclado también funciona, sólo necesita más habilidad manual). Mientras sigues manteniendo el botón pulsado (y marcando) mueve el ratón hacia abajo, para que el texto se marque y se desplace. Ahora compara la velocidad de desplazamiento mientras mantienes el ratón quieto frente a cuando lo mueves. Dependiendo de tu máquina la velocidad puede ser varias veces mayor.
Sorprendente, ¿verdad?
Se puede ver en muchos otros programas también, el Bloc de notas es sólo un ejemplo fácil de reproducir. Está relacionado con la forma en que funcionaba la multitarea en las primeras versiones de Windows. Aquí todo giraba en torno a la cola de mensajes. Mover el ratón provocaba una avalancha de mensajes de movimiento del ratón, lo que a su vez hacía que los programas se despertaran más a menudo y (dependiendo de su estructura) actualizaran sus estados cada vez, entrando de nuevo en el bucle de mensajes, dando tiempo a las actualizaciones de la pantalla, lo que resultaba en una reacción más rápida en general. Esto muestra un atisbo de las formas que MS utilizaba para hacer que Windows respondiera bastante bien a pesar de su naturaleza de hilo cooperativo.
Windows pre-NT (Windows 1,2,3,3.11,95,98) era multitarea cooperativa frente a NT's (2000, XP, Vista, 7 & 10) multitarea preventiva.
En la multitarea cooperativa, la aplicación en primer plano tiene que ceder el control a otras tareas. Por lo tanto, si la aplicación en primer plano se bloquea, toda la máquina se congela.
En la multitarea preventiva, el sistema suele tener una interrupción de hardware, normalmente un temporizador, para forzar el rendimiento.
En Windows 95, el teclado y el ratón generaban interrupciones, y al mover el ratón se disparaba la interrupción y el sistema operativo atendía su cola de eventos. Una forma de multitarea preventiva, en lugar de una interrupción fija del temporizador, lo hacías tú.
El SO actualizaba el estado en pantalla en la interrupción y luego iba a dar servicio a las otras tareas. La actualización en pantalla haría parecer que el SO estaba procesando más rápido.
EDIT - 1/2 derecha ... No puede realizar multitarea de forma preventiva con aplicaciones Win16 porque utiliza el mismo modelo de Máquina Virtual del Sistema (VM) que en Windows 3.1 para ejecutar aplicaciones Win16. Por lo tanto, Windows 95 volverá a un entorno de multitarea cooperativa cuando ejecute aplicaciones Win16 y les dará el control exclusivo de la CPU mientras las aplicaciones se estén ejecutando. Como resultado, el verdadero funcionamiento preventivo es imposible cuando se realiza la multitarea con una mezcla de aplicaciones Win16 y Win32.