ejemplos modo protegido.pdf

Vista previa de texto
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
transformadas en lineales (base del segmento + dirección efectiva), se
descomponen para transformarse en física de distintas formas, según el
tipo de paginación implementada. En el 80386, primer procesador con
paginación de la línea Intel IA-32, las páginas son todas de 4 Kb. Más
adelante aparecieron otras implementaciones para trabajar con páginas
de 2 y 4 Mbytes. En este ejemplo se utilizan únicamente páginas de
4 Kb.
La paginación es ideal para implementar la memoria virtual, pero los
principales sistemas operativos de hoy la utilizan además como
mecanismo de protección, protegiendo así las áreas de memoria del SO
de cada aplicación y del kernel.
Si se implementa la paginación mediante páginas de 4 Kb, el mecanismo
divide a las direcciones lineales en 3 campos, 2 de 10 bits y uno de
12 bits. Para decodificar estos campos se utilizan dos tipos de
tablas, PDE (Page Directory Entry) y PTE (Page Table Entry). La PDE se
encuentra físicamente en la dirección de memoria apuntada por el cr3,
alineada en 4 Kbytes, por lo que los 12 bits menos significativos del
cr3 no son tenidos en cuenta. Cada entrada de la PDE está compuesta
por 4 bytes, por lo que la PDE tiene 1024 entradas. Cada una de ellas
puede apuntar a la dirección física de una PTE, cuyas 1024 entradas,
también de 4 bytes cada una, pueden apuntar a una página en memoria.
+----------+----------+------------+
:0000000011:0000000111:000000000000:
+----------+----------+------------+
PDE Index PTE Index PAGE Offset
PDE
PTE
PAGE
+--------------+
+---------------+
+---------------+
1023:
:
1023:
:
:
:
1022:
:
1022:
:
:
:
1021:
:
1021:
:
:
:
//
//
//
//
//
/
7:
:
7:
:--+
:
:
6:
:
6:
: :
:
:
5:
:
5:
: :
:
:
4:
:
4:
: :
:
:
3:
:---+ 3:
: :
:
:
2:
:
: 2:
: :
:
:
1:
:
: 1:
: :
:
:
0:
:
: 0:
: :
:
:
+--->+---------------+
+-->+---------------+ +-->+---------------+
:
+---------------+
:
CR3
:
+---------------+
Entonces, por ejemplo, para decodificar la dirección lineal binaria:
00000000110000000111000000000000b a física, el procesador busca, a
partir de la base indicada por el cr3, la tercera entrada de la PDE,
donde se indica la base física en memoria de la PTE. A partir de la
base de la PTE se selecciona la entrada número 7, obteniéndose de esta
la dirección física de la base de la página. Por último, los 12 bits
de la dirección lineal son el offset dentro de la página que se está
referenciando.
Para llevar a cabo un programa que implemente la paginación de 4
Kbytes se debe definir al menos una PDE, con al menos una entrada que
apunte a una PTE. También se debe tener en cuenta que al habilitar e
