Paginaci´on

Anuncio
Paginación
Ing. Marcelo Doallo
Mayo 2013
Ing. Marcelo Doallo
Paginación
Paginación
Es la conversión de direcciones lineales en fı́sicas.
Implica también:
Derechos de acceso.
Especifica el tipo de cache utilizado.
Cuando NO está activada la paginación, entonces las
direcciones lineales coinciden con las fı́sicas. Si está activada
la paginación entra en funciomiento esta conversión de
direcciones lineales a fı́sicas.
Ing. Marcelo Doallo
Paginación
Esquema general
Ing. Marcelo Doallo
Paginación
Bits que controlan la paginación
WP y PG en CR0 (bit 16 y bit 31, respectivamente).
LME y NXE en IA32 EFER MSR (bit 8 y bit
11,respectivamente).
PSE, PAE, y PGE en CR4 (bit 4, bit 5, y bit 7, respectivamente).
Para que la paginación esté activada requiere, CR0.PE=1,
CR0.PG=1.
Ing. Marcelo Doallo
Paginación
Tres modos de paginación
IA-32 (32 bits): CR4.PAE=0, el comportamiento está regido por
CR0.WP, CR4.PSE, y CR4.PGE
PAE: CR4.PAE=1 y IA32 EFER.LME=0, el comportamiento
está regido por CR0.WP, CR4.PGE y IA32 EFER.NXE
IA-32e: CR4.PAE=1 y IA32 EFER.LME=1, el comportamiento
está regido por CR0.WP, CR4.PGE y IA32 EFER.NXE
Ing. Marcelo Doallo
Paginación
Propiedades de los diferentes modos de paginación
Ing. Marcelo Doallo
Paginación
Submodos de la paginación IA-32e
Modo compatibilidad: Direcciones lineales de 32 bits, los bits
47 a 32 valen 0.
Modo 64 bits: Direcciones lineales de 48 bits denominadas
direcciones canónicas.
¿Cómo se define el submodo?: Lo determina el registro cs,
dado que si está corriendo código de 16 o 32 bits está en
submodo compatibilidad. Si está corriendo código de 64 bits
está en submodo 64 bits.
Ing. Marcelo Doallo
Paginación
Habilitación y cambio de modos de paginación
Ing. Marcelo Doallo
Paginación
Significado de algunos otros bits en paginación
CR0.WP=0: El supervisor puede escribir una página read-only.
CR0.WP=1: Ni el nivel supervisor puede escribir una página
read-only.
CR4.PSE=0: En paginación de 32 bits indica que las páginas
serán de 4 K.
CR4.PSE=1: En paginación de 32 bits indica que las páginas
serán de 4 KByte o de 4 Mbyte.
CR4.PSE No tiene significado en paginación PAE ni IA-32e.
Ing. Marcelo Doallo
Paginación
Paginación en IA-32
Ing. Marcelo Doallo
Mayo 2013
Ing. Marcelo Doallo
Paginación en IA-32
Paginación con páginas de 4 KBytes en IA-32
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32
Detalle de CR3 en IA-32
PCD=1, indica que el directorio de página en uso no estará en
cache.
PWT=1, indica uso de técnica de Write-through para el cache
del directorio de página en uso, si CR0.CD=1
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32
Selección de la entrada de directorio de página (PDE)
Bits 31:12 salen de CR3.
Bits 11:2 salen de bits 31:22 de la dirección lineal.
Bits 1:0 en 0.
Una entrada de directorio de página son 4 bytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32
Detalle de PDE
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32
Selección de la entrada de tabla de páginas (PTE)
CR4.PSE = 0 ó PS=0 en la PDE.
Bits 31:12 salen de PDE.
Bits 11:2 salen de bits 21:12 de la dirección lineal.
Bits 1:0 en 0.
Una entrada de tabla de páginas son 4 bytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32
Detalle de PTE
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32
Paginación con páginas de 4 MBytes en IA-32
CR4.PSE=1 para habilitar páginas de 4 MBytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 MBytes en IA-32
Selección de la entrada de directorio de página (PDE)
Bits 31:12 salen de CR3.
Bits 11:2 salen de bits 31:22 de la dirección lineal.
Bits 1:0 en 0.
Una entrada de directorio de página son 4 bytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 MBytes en IA-32
Detalle de PDE
Ing. Marcelo Doallo
Paginación con páginas de 4 MBytes en IA-32
PSE-36 (Nota 2)
Si el mecanismo PSE-36 no está soportado por el procesador,
M es 32 y la fila “M-20:13” ni tiene sentido.
Si el mecanismo PSE-36 está soportado, M tiene un mı́nimo de
40 y su valor es MAXPHYADDR.
Ing. Marcelo Doallo
Paginación con páginas de 4 MBytes en IA-32
Detalle de MAXPHYADDR
MAXPHYADDR se obtiene mediante la instrucción CPUID. Ese
valor depende del procesador, por lo que es de sólo lectura.
CPUID.80000008H:EAX[7:0] informa la cantidad de bits de
dirección fı́sica que soporta el procesador. Este valor es
MAXPHYADDR y es a lo sumo 52.
CPUID.80000008H:EAX[15:8] informa la cantidad de bits de
dirección lineal que soporte el procesador.
Ing. Marcelo Doallo
Paginación con páginas de 4 MBytes en IA-32
Obtención de MAXPHYADDR
mov eax,80000008h ;Selector de CPUID.
cpuid
; Luego analizar eax[7:0] y eax[15:8]
Ing. Marcelo Doallo
Paginación con páginas de 4 MBytes en IA-32
Paginación en IA-32 con PAE
Ing. Marcelo Doallo
Mayo 2013
Ing. Marcelo Doallo
Paginación en IA-32 con PAE
Paginación con PAE
CR0.PG = 1
CR4.PAE = 1
IA32 EFER.LME = 0
Paginación PAE convierte direcciones lineales de 32-bit a
direcciones fı́sicas de hasta 52-bits, dependiendo de
MAXPHYADDR (<52).
Aunque 52 bits Corresponde a 4 PBytes, las direcciones
lineales están limitadas a 32 bits (4GB), entonces sólo 4 GB
son direccionables simultáneamente.
Ing. Marcelo Doallo
Paginación en IA-32 con PAE
Paginación con páginas de 4 KBytes en IA-32 con
PAE
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Detalle de CR3 con PAE
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Selección de una entrada de tabla de puntero de
directorio de página (PDPTE)
Inicio de tabla determinado por CR3.
Bits 31:30 de la dirección lineal seleccionan un registro
PDPTE.
Una entrada de tabla de puntero de directorio de página
(PDPTE) son 8 bytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Detalle de PDPTE
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Selección de la entrada de directorio de página (PDE)
Bits 51:12 salen de PDPTE.
Bits 11:3 salen de bits 29:21 de la dirección lineal.
Bits 2:0 en 0.
Una entrada de directorio de página son 8 bytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Detalle de PDE
PS=0. Porque las páginas son de 4 KBytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Selección de la entrada de tabla de páginas (PTE)
Si PS en la PDE está en 0, entonces esa entrada de la PDE
apunta a una tabla de páginas de 4-KByte.
Bits 51:12 salen de PDE.
Bits 11:3 salen de bits 20:12 de la dirección lineal.
Bits 2:0 en 0.
Una entrada de tabla de páginas son 8 bytes.
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Detalle de PTE
Ing. Marcelo Doallo
Paginación con páginas de 4 KBytes en IA-32 con PAE
Paginación con páginas de 2 MBytes en IA-32 con
PAE
PDE con PS=1
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
Selección de la entrada de directorio de página (PDE)
Bits 51:12 salen de PDPTE.
Bits 11:3 salen de bits 29:21 de la dirección lineal.
Bits 2:0 en 0.
Una entrada de directorio de página son 8 bytes.
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
Detalle de PDE
PS=1. Porque las páginas son de 2 MBytes.
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
Protección combinada
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
Comando útil en bochs
info tab
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
TIP’s de programación
Align 4096
page directory base:
pd entry 0 equ ($-page directory base)/4 ;
dd (page table base) + PD DEFAULT CODE ATTS
;
align 4096
page table base:
pt entry 0 equ ($-page table base)/4
dd 0b8000h + PT DEFAULT CODE ATTS
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
TIP’s de programación (2)
PD
PD
PD
PD
PD
PD
PD
PD
;
PRESENT EQU 01h
READBAR READWRITE EQU 02h
USER SUPERVISORBAR EQU 04h
WRITETHROUGH EQU 08h
CACHEDISABLED EQU 10h
ACCESSED EQU 20h
PAGESIZE 4KBAR EQU 80h
GLOBALPAGE EQU 100h
PD DEFAULT CODE ATTS EQU PD PRESENT +
PD CACHEDISABLED
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
TIP’s de programación (3)
PT
PT
PT
PT
PT
PT
PT
PT
PT
PRESENT EQU 01h
READBAR READWRITE EQU 02h
USER SUPERVISORBAR EQU 04h
WRITETHROUGH EQU 08h
CACHEDISABLED EQU 10h
ACCESSED EQU 20h
DIRTY EQU 40h
PAGEATTRINDEX EQU 80h
GLOBALPAGE EQU 100h
;
PT DEFAULT CODE ATTS EQU PT PRESENT +
PT CACHEDISABLED
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
TIP’s de programación (4)
mov eax, page directory base ; cargo en cr3
mov cr3, eax ; base del directorio
mov eax, cr0 ; seteo el bit de paginacion
or eax,80000000h ; seteo el MSB
mov cr0, eax ; activo la unidad de paginación
Ing. Marcelo Doallo
Paginación con páginas de 2 MBytes en IA-32 con PAE
Descargar