Realizar un Multitasker con un Intel 80386+

Microprocesadores

  • Enviado por: Ahucha
  • Idioma: castellano
  • País: España España
  • 4 páginas
publicidad

Realizar un Multitasker con un 80386+

Para poder realizar un Multitasker se ha de disponer de un procesador que disponga de mecanismos para la multitarea y protección entre las tareas como, por ejemplo, el 80386 y sucesores (80386+) . En esta sección se hará un breve resumen sobre las características que nos ofrece el 80386+, explicando en capítulos posteriores una descripción más detallada y cómo se han utilizado estas características para la elaboración de DMT.

  • Los diversos modos de trabajo del 80386+

  • Por razones de compatibilidad con sus antecesores, el 80386+ se ejecuta en el llamado Modo Real donde no existe la multitarea ni mecanismos de protección, con lo que el 80386+ se ejecuta como un 8086 mejorado. Los programas que se ejecutan bajo el Modo Real tienen acceso libre a cualquier dirección de memoria y a cualquier puerto de E/S, pudiendo tomar el control de la máquina cualquier programa que lo desee. Hay que advertir que este es el modo de trabajo que utiliza el MS-DOS, por lo que todos los programas que se ejecutan bajo él están también bajo el Modo Real.

    Si queremos que el 80386+ demuestre toda su potencia multitarea, deberemos de dejar a un lado el Modo Real y pasar al Modo Protegido del 80386+. En este modo se activan todas las características multitarea y de protección que ofrece el 80386+ y pasa a ser un procesador de 32 bits capaz de direccionar hasta 4 gigabytes de memoria física.

    Utilizando ciertas estructuras bajo el Modo Protegido podemos lograr ejecutar varias tareas de forma concurrente y aislada, pero existe un pequeño problema para lograr la multitarea bajo MS-DOS. El único problema en este modo es que no permite ejecutar programas que fueron diseñados para el Modo Real, con lo que es imposible ejecutar programas para MS-DOS en el Modo Protegido entonces... ¿cómo es posible ejecutar el MS-DOS en un entorno multitarea?. La respuesta nos la da un tercer, y último, modo de trabajo del 80386+, en concreto es el Modo Virtual 8086 (abreviado Modo V86) el cual nos permite ejecutar programas que fueron realizados para el Modo Real con todas las características que nos ofrece el Modo Protegido.

    Tras lo expuesto anteriormente hay que señalar que para la realización de un Multitasker habrá que recurrir al Modo Protegido y al Modo V86 para lograr ejecutar al MS-DOS y todos sus programas bajo un entorno “protegido” y multitarea.

    En los capítulos 4, 5 y 6 se explica más detalladamente las características de estos tres modos de trabajo del 80386+.

  • Dificultades para realizar un Multitasker

  • En esta sección comentamos algunas de las dificultades con las que se encuentra un programador para implementar un Multitasker.

  • Implementación en lenguaje Ensamblador

  • Para realizar un Multitasker debemos de recurrir inevitablemente al lenguaje ensamblador para utilizar las nuevas instrucciones que nos ofrece el 80386+, para lograr la multitarea y la protección entre tareas. Al menos debemos de tener una parte en ensamblador que es la que se dedica a entrar en el Modo Protegido, crear las diversas tareas, “despachar” la CPU a cada tarea, emular servicios del Modo Real, etc., es decir, casi todo el Multitasker. Podremos utilizar un lenguaje de alto nivel para implementar un mecanismo de intercambio de páginas de memoria a disco una vez realizado el núcleo del Multitasker, pero utilizando siempre los servicios que este último ofrece. Ya que el 90 por ciento del Multitasker es .ensamblador, en DMT se ha optado por realizarlo plenamente en este lenguaje

    Existen diversos compiladores que permiten ejecutar programas bajo el Modo Protegido, ofreciendo funciones para utilizar las nuevas características que ofrece el 80386+. Tras haber intentado implementar DMT bajo estos compiladores he llegado a la conclusión de que es imposible realizar un Multitasker (al menos el núcleo) bajo uno de estos compiladores. La razón de ello es debido a que el Multitasker necesita gestionar ciertas estructuras de memoria (GDT-->[Author:RAR෌i], por ejemplo) para controlar todas las tareas bajo el Modo Protegido y el compilador necesita las mismas estructuras, pero definidas por él, para controlar el programa que se ejecuta bajo el Modo Protegido. Al haber este choque de estructuras entre el compilador y el Multitasker, se producirá una caída inevitable del sistema.

  • Imposibilidad de utilizar Depuradores (Debuggers)

  • Debido a que en la programación en ensamblador se comenten numerosos errores a la hora de codificar, es necesario la utilización de un depurador que nos muestre paso a paso la ejecución de nuestro programa y podamos ver el contenido de todos los registros del procesador y observar que todo marcha correctamente.

    Como se comentó anteriormente, para realizar un Multitasker necesitamos entrar al Modo Protegido para acceder a las nuevas características del 80386+. Si intentamos depurar a DMT con un depurador todo irá bien, excepto cuando se entra en el Modo Protegido donde el depurador, ejecutado en el Modo Real, perderá el control de DMT y se producirá una caída del sistema. Por esta razón no podemos utilizar ningún depurador existente, al menos que nosotros mismos programemos uno especialmente para realizar nuestro Multitasker.

    Los compiladores que permiten ejecutar programas en Modo Protegido vienen acompañado de un depurador, pero sólo se puede utilizar por programas que fueron realizados con dicho compilador.

    Para depurar DMT no se ha realizado ningún depurador, lo único que se ha implementado es una función que permite sacar el contenido de los registros y de la pila por pantalla y acto seguido finaliza el programa. Esta pequeña función ha ayudado a encontrar multitud de errores a la hora de programar, pero no tiene ni punto de comparación con las funciones que realiza un depurador.

  • DOS y BIOS no ofrecen servicios desde el Modo Protegido

  • Una vez entrado en el Modo Protegido los servicios que ofrece el DOS y la BIOS no están accesibles por DMT, ya que estos fueron codificados para el Modo Real. Si desde el Modo Protegido solicitamos un servicio del DOS se producirán multitud de excepciones que no permitirán la finalización del servicio. Esto se debe a que el modo de direccionamiento de la memoria cambia del Modo Real al Modo Protegido.

    Para poder solicitar un servicio del DOS o de la BIOS desde el Modo Protegido tenemos que preparar antes la memoria y el procesador para que el servicio sea concedido con éxito. Debemos de conmutar al procesador al Modo V86, que es compatible con el Modo Real, y debemos de preparar cierta información en la pila para que una vez finalizado el servicio se conmute nuevamente el procesador al Modo Protegido y el Multitasker pueda continuar su trabajo.

    En el Capítulo 8 se explica detalladamente este mecanismo y su implementación.

    Véase capítulo 4

    Realizar un Multitasker con un 80386+ 13

    12