ejemplos modo protegido.pdf


Vista previa del archivo PDF ejemplos-modo-protegido.pdf


Página 1...47 48 49505191

Vista previa de texto


;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;

ej05.asm - programa multitarea
Protected Mode by Examples – 1era Edición - Octubre 2004
Autor:
Mariano Cerdeiro
<m.cerdeiro@soix.com.ar>
http://www.soix.com.ar/links/mpbyexamples.html
compilar: nasm ej05.asm -o ej05.com
Este ejemplo tiene por finalidad ilustrar la ejecución de dos tareas
en forma concurrente. El programa salta de una tarea a la otra cada
vez que hay una interrupción del timertick, hasta que se pulse la
tecla escape, caso en que retornará a modo real. Las tareas imprimen,
cada una, un contador ascendente o descendente en distintas partes
del monitor.
Multitarea
Lo primero a saber respecto de la multitarea es que un procesador
siempre ejecuta una ÚNICA tarea a la vez. La multitarea implica
ejecutar varias tareas, de a una por vez, seguidas en el tiempo
por intervalos tan pequeños que aparentan, para el usuario, correr
simultáneamente. La capacidad de correr varias tareas en forma
realmente simultánea se denomina multiprocesamiento, para lo que se
necesitan varios procesadores o un procesador con esa capacidad, como
por ejemplo los HT (Hyper Threading), que en realidad internamente
funciona como 2.
A diferencia de la protección, a la multitarea se la puede realizar
por soft. El procesador provee un método por hardware para realizar
multitarea. Sin embargo, se pueden correr muchas tareas sin utilizar
las facilidades que provee el procesador, ya que se puede pasar de
ejecutar la aplicación X a ejecutar la aplicación Y, almacenando el
estado actual de todos los registros de la aplicación X y cargando
los almacenados anteriormente de la aplicación Y. Ejemplo de este
procedimiento son, para quienes tienen memoria, los programas
residentes de DOS. Estos programas corrían mientras uno realizaba otra
tarea. Hoy en día muchos sistemas operativos no utilizan las
facilidades de multitarea de los procesadores, sino que la realizan
manualmente, como por ejemplo Linux.
En este ejemplo se estudia cómo realizar multitarea mediante el
procesador.
Para almacenar el estado de cada una de las tareas, el procesador
utiliza una estructura denominada TSS (Task State Segment). Al saltar
de una tarea a otra, se guarda automáticamente el estado actual del
procesador en el TSS actual y se carga el nuevo estado del procesador
del TSS de destino.
Cada TSS almacena el estado de los registros del procesador de cada
tarea, por ejemplo eax, ebx, eip, para que cuando se desee retornar a
dicha tarea se pueda continuar ejecutando el programa del mismo lugar
donde fue dejado.