ejemplos modo protegido.pdf


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


Página 1...50 51 52535491

Vista previa de texto


; saltar o llamar a una tarea que se encuentra ocupada, se generará una
; excepción. Las tareas que no se encuentran ocupadas no se encuentran
; en ejecución.
;
; El descriptor de TSS es:
;
; 31
16 15
0
; +----------+-+-+-+-+-----+-+-+-+-+----+-----------+
; |
Base
|G|0|0|A|Limit|P|D P|0|10B1|
Base
| 4
; |
31:23 | | | |V|19:16| | L | |
|
22:16
|
; +----------+-+-+-+-+-----+-+-+-+-+----+-----------+
;
; +------------------------+------------------------+
; |
Base 15:0
|
Limit 15:0
| 0
; |
|
|
; +------------------------+------------------------+
; 31
16 15
0
;
; Aquí se observa el bit busy, que indica si la tarea está o no
; ocupada.
;
; El procesador cuenta con un registro TR (Task Register), donde se
; almacena el selector que apunta al descriptor del TSS de la tarea que
; se está corriendo en cada momento. El TR puede ser direccionado
; mediante las instrucciones str y ltr, las cuales leen y cargan el TR
; respectivamente. Sin embargo, cabe aclarar que, aunque ltr carga el
; TR, no carga los valores indicados en el TSS en los registros del
; procesador, o sea, no realiza un salto de tarea, sino que su finalidad
; es la siguiente:
;
;
Al realizar un salto de tarea, el procesador almacena su estado en
;
el TSS actual y carga en sus registros los valores indicados por el
;
TSS de destino. El problema surge al realizar el primer salto de
;
tareas, ya que NO EXISTE TSS actual. Es por eso que existe la
;
instrucción TR, que indica al procesador el TSS actual. De esta
;
forma, llegado el caso de un salto de tareas, el estado del micro
;
podrá ser almacenado donde indique el descriptor apuntado por el TR.
;
De no cargar el TR antes de realizar un salto de tareas, se generará
;
una excepción, ya que el procesador no podrá almacenar su estado
;
actual en ningún TSS.
;
; Los descriptores del tipo TSS únicamente se pueden encontrar en la
; GDT. Si se desea colocar un acceso a una tarea en la LDT o en la IDT,
; se debe utilizar un Task Gate:
;
; 31
16 15
0
; +------------------------+-+-+-+-+----+-----------+
; |
Reserved
|P|D P|0|0101| Reserved | 4
; |
| | L | |
|
|
; +------------------------+-+-+-+-+----+-----------+
;
; +------------------------+------------------------+
; |
TSS Selector
|
Reserved
| 0
; |
|
|
; +------------------------+------------------------+
; 31
16 15
0
;
; Un descriptor de Task Gate se puede encontrar también en la GDT.
;
;
use16