PDF de programación - Modo Protegido Arquitectura Intel

Imágen de pdf Modo Protegido Arquitectura Intel

Modo Protegido Arquitectura Intelgráfica de visualizaciones

Publicado el 23 de Abril del 2020
518 visualizaciones desde el 23 de Abril del 2020
402,5 KB
34 paginas
Creado hace 14a (29/10/2009)
Arquitectura de Computadores II

Clase 15

Introducción al modo protegido

Facultad de Ingeniería

Universidad de la República

Instituto de Computación



Contenido

• Generalidades.
• Modos de operación.
• Manejo de traps.



Intel 32 bits

• Breve reseña histórica:

– 1982 Intel introduce el 286 de 16 bits

• Modo protegido, manejo de memoria virtual

– 1985 aparece el 386, primer procesador Intel de 32 bits

• Direccionamiento de 32 bits (4Gb de memoria física)
• Memoria segmentada
• Paginación

– 1989 introduce el 486

• Cache de nivel 1 (on-chip cache)
• On-chip 387 math coprocessor (integrado en el CPU)
• Manejo de ahorro del consumo

– 1993 introduce procesadores Pentium

• Segundo pipe de ejecución
• Duplica la cache
• Protocolo MESI para mejorar manejo de la cache
• Branch prediction
• APIC (Advanced Programmable Interrupt Controller), soporte para múltiples

procesadores, manejo interrupciones internas (timer interno) y externas



• Tecnología MMX



Modo Protegido Arquitectura Intel

• Breve introducción a las nuevas
funcionalidades ofrecidas por la
arquitectura Intel 386 en modo protegido
– Espacio de memoria extendido y protegido
– Funcionalidades destinadas a facilitar un

ambiente multi-tarea

– Paginación
– Modo 8086 virtual



Modo Protegido Arquitectura Intel

• Brinda múltiples funcionalidades que potencian la

multitarea y mejoran la estabilidad del sistema

• Entre estas funcionalidades está la protección de
memoria, paginación y soporte de un manejo de
memoria virtual, a través de la MMU (memory
management unit)

• La mayoría de los S.O. actuales como Windows y Linux

corren en modo protegido

• Modo Real deshabilita estas mejoras para brindar

compatibilidad hacia atrás (DOS)



Modos de Operación

• Modo Real (procesador arranca en este modo)
• Modo Protegido
• System Managment Mode (SMM)

– Manejo de energía, mediante una interrupción
externa se accede a este modo y el procesador
brinda un espacio de memoria separado preservando
contexto

– Habilita correr software 8086 (16 bits) en un entorno

• Modo Virtual-8086

protegido
• Modo IA-32

– En arquitecturas de 64 bits, permite compatibilidad

con software 32bits



Modos de Operación



Protección

• Existen cuatros niveles de privilegio

– Numerados del 0 al 4 (a mayor número menores

privilegios

– Restringen acceso a memoria de datos, código, etc
– Restringen las instrucciones accesibles



Registros de Control

• Existen cinco registros de 32 bits, CR0 .. CR4, que

determinan:
– el modo de funcionamiento del procesado
– características de la actual tarea en ejecución

• CR0 controla el modo de operación y el actual estado

del procesador
• CR1 reservado
• CR2 y CR3 usado por el sistema de paginación de

memoria

• CR4 habilita diversas extensiones de la arquitectura
• Todos estos registros sólo pueden ser manipulados en

el nivel 0 de privilegio



Registros de Control

• Algunas banderas del CR0

– PG habilita la paginación de la memoria
– CD habilita la cache
– NW configura la cache
– AM habilita el chequeo automático de alineamiento a 16 bits.
– WP habilita la escritura de páginas read only por rutinas con

mayores privilegios

– NE numeric error FPU (Floating-point unit)
– ET en 1 en procesadores Pentium, en 386 y 486 indica el

soporte de instrucciones Intel 387 DX coprocesador matemático

– PE habilita el modo protegido (bit 0)



Registro de Banderas

• IF controlada por cli, sti, iret
• TF procesador genera una excepción de debug

para permitir correr paso a paso

• IOPL contiene el actual nivel de privilegio



Direccionamiento Segmentado de

Memoria (MMU)



Independientemente del modo se mantiene el concepto de
segmentos, a partir de los cuales se obtiene la dirección base de
memoria donde comienza cada segmento, y al que se le suma un
determinado offset

• Existen diversos registros que identifican los segmentos: CS, DS,

SS, ES, FS, GS

• Cada uno de ellos refiere a determinado tipo de segmento: code,

data, stack.

• Facilitan la separación lógica de la información de distintas tareas,
de forma que puedan correr en el mismo procesador sin interferir
unas con otras.



Direccionamiento Segmentado de

Memoria

• Modo Real, el registro de segmento contiene los

16 bits del alto orden de una dirección base
lineal de 20 bits

• Modo Protegido, el registro de segmento es un
índice en una tabla de estructuras de datos que
contiene diversas propiedades de cada
segmento
– Dirección base
– Límite
– Nivel de privilegio
– Otras propiedades



Direccionamiento Segmentado de

Memoria



Direccionamiento Segmentado de

Memoria

• Memoria física 232 bytes = 4 GigaBytes

– Pudiendo ser mapeada en memoria de

lectura-escritura, solo lectura, memoria I/O

• Existen dos nivel de transformaciones

para llevar de una dirección lógica a una
física:
– Logical address translation
– Linear address space paging (opcional)



Logical to linear address translation



Paging (demand paged virtual

memory)

• En modo protegido esta arquitectura permite que el espacio de
memoria lineal de 4GBytes sea mapeado directamente en una
memoria física del mismo tamaño o indirectamente mediante el
paginado en una memoria física de menor tamaño

• Páginas de largo fijo (4KBytes, 2MBytes o 4MBytes) que son

mapeadas en memoria o disco.

• Si en el momento de acceder a una página ésta no se encuentra en

memoria, se produce una excepción, permitiendo el manejo de un
sistema de memoria virtual.

• También se puede lograr con los segmentos.



Paging (virtual memory)

Linear to physical address translatioin



Direccionamiento de Memoria
Segmentación + Paginación



s
o

t


s
a
r
u

t
c
u
r
t
s
e


y

s
o
r
t
s
g
e
R


i

a
d



e
d



Registros de Organización de

Memoria

• System Table Registers

Contienen direcciones base y límites de las tablas que
controlan el manejo de memoria e interrupciones
– GDTR Global Descriptor Table Register
– IDTR Interrupt Descriptor Table Register

• System Segment Register

Contienen posiciones en la GDT
– LDTR Local Descriptor Table Register
– TR Task Register

• Las direcciones base de estas tablas tienen que estar

alineadas a fronteras de 8 bytes



Segment Descriptor Tables

• Son tablas de segment descriptors,

existen dos tipos: GDT y LDT



Segment register

• Existen seis registros de segmento de 16

bits: CS, DS, SS, ES, FS, GS



Tipos de segmentos



Interrupciones y Excepciones



Interrupciones
– Ocurren asincrónicamente por eventos de hardware y también

pueden ser invocadas por software

• Excepciones

– Procesador detecta condiciones de error al ejecutar una
instrucción (división por cero), violaciones de protección,
páginas faltantes, etc

– Se dividen en:

• Faults: excepción que puede ser corregida y volver luego al flujo

normal de ejecución (páginas faltantes). Se retorna a la instrucción
que provocó la excepción

• Traps: excepción reportada luego de ejecutar una instrucción, se

vuelve a la instrucción siguiente

• Aborts: excepción que no reporta precisamente el lugar que

provoco la propia excepción, no permiten retomar el flujo normal
(errores de hardware, valores ilegales en las tablas del sistema)



Interrupciones y Excepciones

• IDT Interrupt Description Table

– Contiene un arreglo de gate descriptors, los

cuales proveen acceso a las rutinas de
atención de interrupciones

– Se carga y recupera mediante las

instrucciones protegidas de sidt y lidt

– Los gate descriptors en esta tabla pueden ser

de los siguientes tipos: interrupt, trap o task
gate descriptors



Interrupciones y Excepciones



Call, interrupt y trap gates



Tasks

• Facilidades para el manejo de tareas
• Una tarea esta formada por:

– un entorno de ejecución

• CS, DS, SS (stacks separados para distintos niveles de protección)

– un TSS (Task-state segment)

• Especifica los segmentos que conforman el entorno de ejecución y
provee espacio de almacenamiento para guardar el estado de una
tarea.

• En ambientes multitarea brinda una forma de anidar tareas

• Cada tarea es identificada por el segment selector que

direcciona su TSS en el GDT

• Si se habilita la paginación CR3 se carga con la

dirección de directorio de paginas utilizado por la tarea



Tasks



Task-State Segment

• Contexto de una
tarea cargado y
salvado
automáticamente por
hardware

• Existen 3 niveles de
stack, de forma que
invocaciones desde
distintos niveles de
protección no
compartan el stack



Ejecución de una tarea

• Un software o el procesador puede despachar

una tarea en una de las siguientes formas:
– Software (explícito )

• Call a una tarea (call a un task-gate descriptor)
• Jump a una tarea (jmp a un task-gate descriptor)

– Procesador (implícito)

• Call del procesador a un interrupt-handler task
• Call del procesador a un exception-handler task
• Un iret cuando el NT en las flags está prendido

• Inicialmente se debe cargar en el TR (task

register) mediante la instrucción ldtr, el TSS de
la actual tarea



Referencias

• Intel, Intel® 64 and IA-32 Architectures

Software Developer’s Manual, Volume 3A,
System Programming Guide, Part 1, May
2007.



Preguntas
  • Links de descarga
http://lwp-l.com/pdf17549

Comentarios de: Modo Protegido Arquitectura Intel (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad