Windows 95
Windows 95 fue mucho más que "solo un contenedor" para MS-DOS . Citando a Raymond Chen:
MS-DOS sirvió para dos propósitos en Windows 95.
- Sirvió como el gestor de arranque.
- Actuó como la capa de controlador de dispositivo heredado de 16 bits.
Windows 95 en realidad enganchó / anuló casi todo MS-DOS, manteniéndolo como una capa de compatibilidad mientras realizaba todo el trabajo pesado. También implementó la multitarea preventiva para programas de 32 bits.
Previo a Windows 95
Windows 3.xy anteriores eran en su mayoría de 16 bits (con la excepción de Win32s, una capa de compatibilidad que une 16 y 32, pero ignoraremos eso aquí), eran más dependientes de DOS y usaban solo multitarea cooperativa, eso es aquel en el que no obligan a un programa en ejecución a desconectarse; esperan a que el programa en ejecución ceda el control (básicamente, dicen "Ya terminé" diciéndole al sistema operativo que ejecute el próximo programa que está esperando).
La multitarea fue cooperativa, al igual que en las versiones anteriores de MacOS (aunque a diferencia de Multitarea DOS 4.x, que lucía multitarea preventiva). Una tarea tenía que ceder al sistema operativo para programar una tarea diferente. Los rendimientos se incorporaron a ciertas llamadas API, en particular el procesamiento de mensajes. Mientras una tarea procesara los mensajes de manera oportuna, todo fue genial. Si una tarea dejaba de procesar mensajes y estaba ocupado ejecutando algún ciclo de procesamiento, la multitarea ya no existía.
Arquitectura de Windows 3.x
En cuanto a cómo los primeros programas de Windows cederían el control:
Windows 3.1 utiliza la multitarea cooperativa, lo que significa que cada aplicación que está en proceso de ejecución recibe instrucciones de verificar periódicamente una cola de mensajes para averiguar si alguna otra aplicación solicita el uso de la CPU y, de ser así, ceder el control a esa aplicación . Sin embargo, muchas aplicaciones de Windows 3.1 verificarían la cola de mensajes con poca frecuencia, o ninguna, y monopolizarían el control de la CPU durante el tiempo que requirieran. Un sistema multitarea preventivo como Windows 95 quitará el control de la CPU de una aplicación en ejecución y la distribuirá a aquellos que tengan una mayor prioridad en función de las necesidades del sistema.
fuente
Todo lo que vería DOS es esta aplicación única (Windows u otra) ejecutándose, que pasaría el control sin salir. En teoría, la multitarea preventiva posiblemente se puede implementar sobre DOS de todos modos con el uso de un reloj en tiempo real y las interrupciones de hardware para dar el control al planificador por la fuerza. Como comenta Tonny , esto fue hecho por algunos sistemas operativos que se ejecutan sobre DOS.
386 modo mejorado?
Nota: ha habido algunos comentarios sobre el modo mejorado 386 de Windows 3.x que es de 32 bits y que admite la multitarea preventiva.
Este es un caso interesante. Para resumir la publicación de blog vinculada , el modo mejorado 386 era básicamente un hipervisor de 32 bits, que ejecutaba máquinas virtuales. Dentro de una de esas máquinas virtuales se ejecutaba el modo estándar de Windows 3.x, que hace todo lo mencionado anteriormente.
MS-DOS también se ejecutaría dentro de esas máquinas virtuales, y aparentemente eran multitarea preventivas, por lo que parece que el hipervisor de modo mejorado 386 compartirá segmentos de tiempo de CPU entre las máquinas virtuales (una de las cuales ejecutó 3.xy normal y otras que ejecutaron MS -DOS), y cada VM hará lo suyo: 3.x cooperaría multitarea, mientras que MS-DOS tendría una única tarea.
MS-DOS
DOS en sí era una tarea única en papel, pero tenía soporte para programas TSR , que permanecería en segundo plano hasta que se activara por una interrupción de hardware. Lejos de ser una verdadera multitarea, pero tampoco de una sola tarea.
¿Toda esta charla de lo mordido? ¡Pregunté sobre la multitarea!
Bueno, estrictamente hablando, el bit-ness y la multitarea no dependen el uno del otro. Debería ser posible implementar cualquier modo multitarea en cualquier bit-ness. Sin embargo, el cambio de procesadores de 16 bits a procesadores de 32 bits también introdujo otra funcionalidad de hardware que podría haber hecho que la multitarea preventiva fuera más fácil de implementar.
Además, dado que los programas de 32 bits eran nuevos, era más fácil hacerlos funcionar cuando se los cambiaba por la fuerza, lo que podría haber roto algunos programas heredados de 16 bits.
Por supuesto, todo esto es especulación. Si realmente desea saber por qué MS no implementó la multitarea preventiva en Windows 3.x (a pesar del modo mejorado 386), tendrá que preguntarle a alguien que trabajó allí.
Además, quería corregir su suposición de que Windows 95 era solo un contenedor para DOS;)