• Introducción

Anuncio
•
Introducción
Desde hace años los usuarios de MS−DOS piden muchas más posibilidades de las que este sistema operativo
ofrece, ya que a medida que los procesadores van evolucionando el sistema operativo MS−DOS no aprovecha
las nuevas prestaciones que ofrecen estos nuevos procesadores, debido a que desea mantener la
compatibilidad con los programas realizados para versiones anteriores de este sistema operativo (S.O.). Por
tanto los usuarios tienen dos opciones, o bien cambian de S.O., lo cual significaría desechar todos los
programas DOS que poseen o por lo contrario siguen utilizando el MS−DOS sin aprovechar los mecanismos
de protección y multitarea que seguramente ofrecen sus procesadores.
La verdad es que ninguna de las dos opciones anteriores es aconsejable y es por ello por lo que se han creado
multitud de especificaciones software como DPMI, VCPI, EMS, XMS y diversos tipos de programas como los
Gestores de Memoria, DOS−Extenders, Multitaskers..., y todo para aprovechar las características de los
nuevos procesadores bajo MS−DOS, como puede ser la multitarea, la protección entre tareas y la ruptura del
límite de los 640K que impone el MS−DOS. Y es gracias a estos programas por los que el sistema operativo
MS−DOS sigue aún artificialmente vivo.
En este proyecto se describe como realizar uno de los programas mencionados anteriormente, en concreto un
Shell Multitarea ó Multitasker.
• ¿Qué es un Shell Multitarea o Multitasker?
Un Shell Multitarea, más bien conocido como Multitasker, es un programa que permite la ejecución paralela
de varios programas (tareas) sin que haya interacción entre ellos. Más concretamente, es un sobre−sistema
operativo que se coloca sobre el sistema operativo monotarea, y que podría controlar varios sistemas
operativos, proporcionando la posibilidad de ejecutar varios programas de forma aislada y concurrente,
vigilando en todo momento los pasos que realizan los programas del S.O. monotarea con el fin de evitar el
control total del procesador por una de las tareas ejecutadas o evitar una posible caída del sistema por el mal
funcionamiento de una tarea.
• La división en máquinas virtuales
Para lograr todos los objetivos que desea realizar un Multitasker se ha de dividir el ordenador en distintas
máquinas virtuales, con el fin de ejecutar cada tarea en una de estas máquinas controladas por el Multitasker.
El concepto de máquinas virtuales no son más que distintos segmentos de memoria que no interaccionan entre
ellos y que permiten ejecutar distintos sistemas operativos en cada uno de estos segmentos. Cada segmento de
memoria contendrá una copia del sistema operativo monotarea y en él se ejecutará un programa para ese S.O.
Al haber distintas máquinas virtuales, se podrá conceder la CPU por un intervalo de tiempo a cada una de
estas máquinas dando la ilusión de que todas las tareas, en cada máquina virtual, se están ejecutando de forma
concurrente.
Además de ofrecer esta posibilidad de multitarea, nos ofrece la capacidad de protección entre las distintas
tareas que se están ejecutando de forma concurrente, ya que si una tarea, en una máquina virtual, realiza todo
tipo de modificaciones sobre el S.O. que la ejecuta o incluso lleva a ese S.O. a una caída, no afectará en
absoluto a las diversas tareas que se están ejecutando, tomando el Multitasker el derecho de eliminar esa tarea
maligna de la memoria y continuar controlando las otras tareas como si nada hubiese ocurrido.
El Multitasker, del que trata este proyecto, permitirá ejecutar solo programas que han sido realizado para el
sistema operativo MS−DOS por lo que cada máquina virtual, como mencionamos antes, contendrá una copia
1
entera del DOS.
• Multitaskers comerciales
Los Multitaskers reales se pueden encontrar en el ámbito del DOS en forma de DESQView y Windows 3.x.
Ambos programas permiten la ejecución paralela de varios programas DOS y su representación en ventanas
de pantalla separadas.
El Multitasker que se ha realizado en este proyecto no posee tantas prestaciones como los mencionados
anteriormente, ya que por ejemplo no permite la división de la pantalla en ventanas y, por tanto, una posible
visualización de varias tareas simultáneas por pantalla. Tampoco ofrece un mecanismo de Memoria Virtual
para intercambiar páginas de memoria a disco y viceversa para conseguir memoria RAM ilimitada y el poder
ejecutar cualquier número de tareas simultáneas en memoria.
• Características del Multitasker presentado ( DMT )
El Multitasker que se ha realizado tiene como nombre 32−bit DOS MultiTarea, abreviado DMT, y sus
características más importantes se ofrecen a continuación:
• Multitarea sobre el sistema operativo MS−DOS: El objetivo principal de DMT es la de convertir al
S.O. monotarea MS−DOS en un nuevo S.O. multitarea.
• Número de tareas en ejecución simultánea: El número de tareas que puede ejecutar
simultáneamente DMT depende del tamaño de memoria RAM que haya instalada en el ordenador.
Cada tarea tendrá un tamaño de 1 Mbyte, que contendrá una copia del MS−DOS y el programa que se
esté ejecutando, por tanto, tendremos tantas tareas como Mbytes de RAM contenga el ordenador.
• Ejecución de tareas en pantalla completa: Como se comentó anteriormente DMT solo puede
conceder el control total de la pantalla a una tarea en un momento dado. Por tanto no se podrán
visualizar varias tareas a la vez, pero de todas formas seguirán ejecutándose de forma concurrente
aunque no tengan el control de la pantalla.
• Aislamiento entre las diversas tareas: Aunque se ejecuten varias tareas de forma simultánea no se
podrán machacar unas a otras debido a que cada tarea tiene un espacio de direcciones de memoria que
ninguna otra puede ver. Con esto se consigue que ninguna tarea maligna interfiera en el resto y
produzca una caída del sistema.
• Mismo nivel de privilegio para todas las tareas: La CPU va a atender a todas las tareas de forma
indiferente, ofreciéndole la misma porción de tiempo a cada una ellas. De este modo las tareas que no
tengan el control de la pantalla (segundo plano) tendrán el mismo tiempo de atención de la CPU que
la que tiene el control total de pantalla (primer plano). Los Multitaskers comerciales ofrecen mayor
atención de la CPU a la tarea que está en primer plano, pero en DMT he preferido que tanto las tareas
en segundo plano como la que está en primer plano tengan la misma prioridad respecto a la CPU, ya
que seguramente la tarea que tenemos en primer plano suele ser la más interactiva y por ello no se
necesita tanta atención de la CPU ya que hay muchos tiempos ociosos mientras se esperan las diversas
pulsaciones del teclado por parte del usuario.
• Detención y Eliminación de tareas malignas: DMT es capaz de detectar cuando una tarea intenta
apropiarse por completo del sistema o intenta llevarlo a una caída a través del uso de instrucciones
inválidas o privilegiadas, tomando el control sobre dicha tarea y eliminándola de la memoria.
• Limitaciones de DMT
DMT posee ciertas limitaciones que por razones de tiempo no se han podido implementar y es por
ello por lo que DMT no puede competir con los grandes Multitaskers comerciales como Windows y
DESQView. A continuación se muestra todo lo que DMT no ha podido conseguir:
♦ No permite la visualización simultánea de varias tareas en pantalla: Como se comentó
2
anteriormente DMT no dispone de un mecanismo de ventanas en pantalla que permita
observar la ejecución simultánea de varias tareas en pantalla. En el capítulo 2 se ofrecerá qué
es lo que habría que hacer para lograr tal división de la pantalla en ventanas y ejecutar cada
tarea en una de estas ventanas.
♦ Número limitado de tareas en memoria: En DMT no se ha implementado un sistema de
memoria virtual que permita intercambiar páginas de memoria principal a disco, con lo que
podríamos disponer de mucha más memoria de la que realmente posee el ordenador y ejecutar
así un número mayor de tareas en memoria.
♦ No es compatible con ningún Gestor de Memoria: Para ejecutar DMT se necesita que no se
cargue anteriormente ningún gestor de memoria, como por ejemplo EMM386, HIMEM,
QEMM, 386ToTheMax, etc. En el capítulo 7 se explicará por qué no se puede cargar DMT
con un gestor de memoria y qué habría qué hacer para que la anterior condición no se diera.
♦ No ofrece servicios de memoria Extendida/Expandida: Las tareas que utilicen servicios
para acceder a la memoria extendida o expandida no podrán ser ejecutadas por DMT, ya que
no se ha implementado ningún gestor de memoria en DMT. Por tanto sólo las tareas que
utilicen memoria convencional podrán ser ejecutadas bajo DMT.
♦ No permite la ejecución de tareas gráficas: Debido a que hay muchos tipos de modos
gráficos y cada uno de ello se programa de una forma diferente, sería un arduo trabajo para
DMT el controlar todas las tareas que están en segundo plano y que están utilizando distintos
modos gráficos, ya que dependiendo del modo habría que reprogramar los registros de la
tarjeta de vídeo de manera diferente. Con lo que DMT sólo ejecutará tareas que utilicen el
modo texto, pero eso sí, cualquier modo texto, con distintas resoluciones y colores.
MS−DOS es una marca registrada de Microsoft Corporation
DOS Protected Mode Interface, Virtual Control Program Interface, Expanded Memory Specification,
eXtended Memory Specification
DESQView es una marca registrada de Quaterdeck Office Systems
♦
3
Descargar