12Sep
Teniendo en cuenta que DOS era un sistema operativo de una sola tarea y los vínculos que tenía con las primeras versiones de Windows, ¿cómo lograron las versiones anteriores de Windows realizar múltiples tareas? La publicación SuperUser Q & A de hoy examina las respuestas a esta pregunta.
Pregunta de hoy &La sesión de respuesta nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web Q & A dirigida por la comunidad. Captura de pantalla de
Windows 95 cortesía de Wikipedia.
El lector
SuperUser de Question LeNoob quiere saber cómo las versiones anteriores de Windows podían funcionar como sistemas multitarea? :
Leí que DOS es un sistema operativo de una sola tarea. Pero si las versiones anteriores de Windows( ¿también Windows 95?) Eran solo envoltorios para DOS, ¿cómo podrían funcionar como un SO multitarea?
¡Buena pregunta!¿Cómo se administraron las versiones anteriores de Windows como sistemas multitarea?
La respuesta
SuperUser colaboradores Bob y Pete tienen la respuesta para nosotros. Primero, Bob:
Windows 95 fue mucho más que "solo un contenedor" para MS-DOS.Citando a Raymond Chen:
- MS-DOS cumplió dos propósitos en Windows 95: 1.) Sirvió como cargador de arranque.&erio;2.) Actuó como la capa de controlador de dispositivo heredado de 16 bits.
Windows 95 realmente enganchó / anuló casi todos los MS-DOS, manteniéndolo como una capa de compatibilidad mientras hacía todo el trabajo pesado por sí mismo. También implementó multitareas preventivas para programas de 32 bits.
Pre-Windows 95
Windows 3.xy anteriores eran en su mayoría de 16 bits( con la excepción de Win32s, un tipo de capa de compatibilidad que une 16 y 32, pero vamos a ignorar eso aquí), eran más dependientes de DOS, ysolo se usa la multitarea cooperativa, que es la que no obliga a un programa en ejecución a cambiar;esperan que el programa en ejecución ceda el control( básicamente, diga "He terminado" al decirle al sistema operativo que ejecute el siguiente programa que está esperando).
- Multi-tarea fue cooperativo, al igual que en las versiones anteriores de MacOS( aunque a diferencia de Multi-tarea de DOS 4.x, que lucía multi-tarea preventiva).Una tarea tuvo que ceder al sistema operativo para programar una tarea diferente. Los rendimientos se integraron en ciertas llamadas API, notablemente el procesamiento de mensajes. Siempre que una tarea procese mensajes de manera oportuna, todo fue genial. Si una tarea dejaba de procesar los mensajes y estaba ocupada ejecutando algún ciclo de procesamiento, la multitarea ya no existía.
Windows 3.x Arquitectura
En cuanto a qué tan temprano los programas de Windows cederían el control:
- Windows 3.1 usa multitarea cooperativa, lo que significa que cada aplicación que está en proceso se encarga de verificar periódicamente una cola de mensajes para averiguar si hay algunaotra aplicación está solicitando el uso de la CPU y, de ser así, ceder el control a esa aplicación. Sin embargo, muchas aplicaciones de Windows 3.1 verificaban la cola de mensajes con poca frecuencia, o no lo hacían, y monopolizaban el control de la CPU durante todo el tiempo que necesitaban. Un sistema preventivo multitarea como Windows 95 quitará el control de la CPU de una aplicación en ejecución y la distribuirá a aquellos que tienen una prioridad más alta en función de las necesidades del sistema.
Fuente
Todos los DOS verían esta aplicación única( Windows u otra) ejecutándose, que pasaría el control sin salir. En teoría, la multitarea preventiva posiblemente se pueda implementar sobre el DOS de todos modos con el uso de un reloj en tiempo real y las interrupciones de hardware para forzar el control del planificador. Como Tonny comenta, esto fue realizado por algunos sistemas operativos que se ejecutan en la parte superior de DOS.
386 Modo mejorado?
Nota: ha habido algunos comentarios sobre el modo mejorado 386 de Windows 3.x que es de 32 bits, y admite la multitarea preventiva.
Este es un caso interesante. Para resumir la publicación del blog enlazado, 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 ejecutó el modo estándar de Windows 3.x, que hace todas las cosas enumeradas anteriormente.
MS-DOS también se ejecutaría dentro de esas máquinas virtuales, y aparentemente estaban multitareas preventivamente, por lo que parece que el hipervisor de modo mejorado 386 compartirá las divisiones de tiempo de CPU entre las máquinas virtuales( una de las cuales ejecutó 3.x normalesy otros que ejecutaron MS-DOS), y cada máquina virtual hará lo suyo: 3.x cooperaría en múltiples tareas, mientras que MS-DOS tendría una sola tarea.
MS-DOS
DOS en sí mismo era una tarea única en papel, pero tenía soporte para programas TSR que permanecerían en segundo plano hasta que se disparara por una interrupción de hardware. Lejos de la verdadera multitarea, pero tampoco completamente simple.
¿Toda esta charla de bit-ness?¡Pregunté sobre la multitarea!
Bueno, estrictamente hablando, la bit-ness y la multitarea no dependen una de la otra. Debería ser posible implementar cualquier modo multitarea en cualquier bit-ness. Sin embargo, el paso de procesadores de 16 bits a procesadores de 32 bits también introdujo otra funcionalidad de hardware que podría haber facilitado la implementación de tareas múltiples preventivas.
Además, como los programas de 32 bits eran nuevos, era más fácil hacerlos funcionar cuando se los desconectaba forzosamente, lo que podría haber roto algunos programas heredados de 16 bits.
Por supuesto, esto es toda especulación. Si realmente desea saber por qué MS no implementó multitareas preventivas en Windows 3.x( a pesar del modo mejorado 386), tendrá que preguntarle a alguien que trabajó allí.
También, quería corregir su suposición de que Windows 95 era solo un contenedor para DOS.
Seguido de la respuesta de Pete:
En un sistema operativo moderno, el sistema operativo controla todos los recursos de hardware y las aplicaciones en ejecución se guardan en cajas de arena. No se permite que una aplicación acceda a la memoria que el sistema operativo no ha asignado a esa aplicación, y no puede acceder directamente a los dispositivos de hardware en la computadora. Si se requiere acceso al hardware, la aplicación debe comunicarse a través de los controladores del dispositivo.
El sistema operativo puede aplicar este control, ya que obliga a la CPU a entrar en modo protegido.
DOS, por otro lado, nunca ingresa al modo protegido, sino que permanece en modo real( * ver a continuación).En modo real, las aplicaciones en ejecución pueden realizar cualquier cosa que desee, es decir, acceder al hardware directamente. Pero una aplicación que se ejecuta en modo real también puede indicarle a la CPU que entre al modo protegido.
Y esta última parte permite que aplicaciones como Windows 95 inicien un entorno de subprocesos múltiples a pesar de que básicamente se iniciaron desde DOS.
DOS( Disk Operating System) fue, hasta donde yo sé, poco más que un sistema de administración de archivos. Proporcionó un sistema de archivos, mecanismos para navegar por el sistema de archivos, algunas herramientas y la posibilidad de iniciar aplicaciones. También permitió que algunas aplicaciones permanecieran como residentes, es decir, controladores de mouse y emuladores EMM.Pero no intentó controlar el hardware en la computadora como lo hace un sistema operativo moderno.
* Cuando DOS se creó por primera vez en la década de 1970, el modo protegido no existía en la CPU.No fue hasta el procesador 80286 a mediados de la década de 1980 que el modo protegido se convirtió en parte de la CPU.
¡Asegúrese de navegar en el hilo original y leer a través de la animada discusión sobre este tema usando el siguiente enlace!
¿Tiene algo que agregar a la explicación? Suena apagado en los comentarios.¿Desea leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Mira el hilo de discusión completo aquí.