Aprendiendo Sistemas Operativos: Programación de Procesadores de Arquitectura IA-32



Documentos relacionados
6-REGISTROS DEL 8086 Y DEL 80286

Entorno de Ejecución del Procesador Intel Pentium

Mod. I, Unid. 1, Obj. 1 CRITERIO DE DOMINIO 1/1

Hardware: dentro de la caja. Introducción a la Informática

TEMA 4. Unidades Funcionales del Computador

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

La arquitectura del 8086/8088

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

INFORMÁTICA. Matemáticas aplicadas a la Informática


Anexo B. Comunicaciones entre mc y PC

Guía de selección de hardware Windows MultiPoint Server 2010

UD 1. Representación de la información

Curso S08 para Cavernícolas

PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

Capitulo V Administración de memoria

Tema 6. Gestión de la memoria

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS

ÍNDICE SISTEMAS OPERATIVOS... 5

La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador.

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

WINDOWS. Iniciando Windows. El mouse

picojava TM Características

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

1.2 Análisis de los Componentes. Arquitectura de Computadoras Rafael Vazquez Perez

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

13/10/2013. Clase 02: Sistemas de Numeración. Sistemas Digitales y Arquitectura de Computadoras. Ing. Christian Lezama Cuellar.

Introducción a la Firma Electrónica en MIDAS

TEMA 2: Representación de la Información en las computadoras

Informática I para Bachillerato

El ordenador es un dispositivo electrónico que permite almacenar información, modificarla y generar nueva información.

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Elementos requeridos para crearlos (ejemplo: el compilador)

TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

NOTAS TÉCNICAS SOBRE EL SIT: Definición y Configuración de Usuarios

SCT Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A.

Tema 11. Soporte del Sistema Operativo REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS MULTIPROGRAMACIÓN.

by Tim Tran:

Conmutación de Tareas

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

Unidad 1. La información

Guía rápida del usuario. Disco duro virtual.

Fundamentos de Programación. Sabino Miranda-Jiménez

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

Interoperabilidad de Fieldbus

MÓDULO 1: Sistemas de Cómputo

Unidad 1. Fundamentos en Gestión de Riesgos

Informática. Temas 27/03/2014. Carrera: Bioingeniería Profesora: Lic. S. Vanesa Torres JTP: Ing. Thelma Zanon

UNIDADES DE ALMACENAMIENTO DE DATOS

Funcionalidades Software SAT GotelGest.Net (Software de Servicio de Asistencia Técnica)

Oficina Online. Manual del administrador

Switch to Click. Versión 1.5

x

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

"Programación en Ensamblador del microprocesador Pentium (I)"

INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:

TECNOLOGÍAS DE LA INFORMACIÓN. La sociedad de la información y las nuevas tecnologías.

Windows Server 2012: Infraestructura de Escritorio Virtual

ITT-327-T Microprocesadores

INTRODUCCION A LA COMPUTACION

Modelando procesos. Introducción al modelamiento de procesos y BPM

Naturaleza binaria. Conversión decimal a binario

MÓDULO DE EXPANSIÓN DW-GSM. Manual de usuario

Tutorial 2 LAS UNIDADES (I)

CIRCUITOS ARITMÉTICOS

Anexo I. Politicas Generales de Seguridad del proyecto CAT

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

SARA SOFTWARE MANUAL DE USUARIO VERSION 1.0.7

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Para ello debemos ingresar al índice del curso y seleccionar recorrido por el curso, tal como se muestra en la siguiente diapositiva:

MODERNIZANDO PCN Y RECUPERACION DE DESASTRES UTILIZANDO VIRTUALIZACION Y LA NUBE

Workflows? Sí, cuántos quiere?

Unidad 1: Conceptos generales de Sistemas Operativos.

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS

SEGURIDAD Y PROTECCION DE FICHEROS

Estado actual de los procesadores

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

INFORME TECNICO ESTANDARIZACION DE SERVICIOS

Pilas y Colas. Capítulo 3

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

Figura No. IV-111. Página No. 125

Instituto Tecnológico de Celaya

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE

Procesador Intel Core 2 Extreme de 4 núcleos Traducción de Textos Curso 2007/2008

Introducción a la Programación 11 O. Humberto Cervantes Maceda

WINDOWS : COPIAS DE SEGURIDAD

CAPÍTULO 1 Instrumentación Virtual

SISTEMAS DE NUMERACIÓN. Sistema decimal

Versión 1.0. BOLETÍN (JUNIO 2009) a2móvil PC. a2 softway C. A.

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

Transcripción:

Aprendiendo Sistemas Operativos: Programación de Procesadores de Arquitectura IA-32 Este documento forma parte de la serie Aprendiendo Sistemas Operativos y sirve como una introducción a los aspectos básicos de la programación de procesadores de arquitectura IA-32. La serie Aprendiendo Sistemas Operativos puede ser usada en un entorno académico previa autorización del autor. La serie Aprendiendo Sistemas Operativos tiene derechos reservados del autor. Queda prohibida su reproducción total o parcial sin autorización expresa del autor. La serie Aprendiendo Sistemas Operativos no podrá ser usada para fines comerciales sin autorización expresa del autor y luego de pagar al mismo los costos de licenciamiento en las condiciones estipuladas para tal fin. El Autor no será bajo ninguna circunstancia responsable por perjuicios causados por el uso este material o por trabajos derivados y/o adaptaciones del mismo. Asimismo, EL Autor no se hace responsable por omisiones, errores o imprecisiones que puedan existir en el material. Los comentarios, correcciones y observaciones se pueden enviar a la información de contacto del autor que se encuentra al final de esta página. Las marcas y los nombres de procesadores, herramientas, y sistemas operativos mencionados en el documento tienen derechos reservados de sus titulares. Autor: Erwin Meza Vega emezav@gmail.com

1 Generalidades de la arquitectura IA-32 Intel, el fabricante de estos procesadores de arquitectura IA-32, ha decidido mantener compatibilidad hacia atrás para permitir que el código desarrollado para procesadores desde 386 o 486 pueda ser ejecutado en procesadores actuales. Lo anterior implica una serie de decisiones de diseño en la estructura interna y en el funcionamiento de los procesadores, que en ciertas ocasiones limita a los programas pero que también ofrece una ventaja competitiva relacionada con la adopción masiva este tipo de procesadores y la posibilidad de ejecutar programas creados para procesadores anteriores en las versiones actuales sin ninguna modificación. En los siguientes apartados se presentarán los aspectos generales de la arquitectura IA-32 requeridos para contar con una base sólida, que permita iniciar con el desarrollo de programas en ensamblador y en lenguaje C. 1.1 RESEÑA HISTÓRICA DE IA-32 Los procesadores Intel tienen sus orígenes en el 886 y el 888 (finales de los años 7). Implementaban la segmentación de memoria como una estrategia para referenciar direcciones de memoria mayores a las que se podían almacenar en un registro de propósito general. Usando la combinación de registros de segmento y registros de propósito general de 16 bits, estos procesadores podían referenciar hasta 1 MB de memoria. Intel introdujo los procesadores 286 a principios de los años 8. Estos procesadores fueron los primeros en implementar el modo protegido y el manejo de memoria virtual. En este modo protegido, los procesadores podían referenciar hasta 16 MB de memoria. La arquitectura IA-32 tiene su inicio oficial con el procesador 386, que fue introducido a mediados de los años 8. Este contaba con registros de propósito general de 32 bits, con lo cual desde el punto de vista teórico era posible referenciar hasta 4 GB (2 32 bytes) de memoria RAM. También incluía un modo especial, llamado Modo Virtual 886, que ofrecía compatibilidad para los programas desarrollados para procesadores anteriores. Adicionalmente el 386 implementaba un esquema más general de segmentación e implementaba la paginación, que consiste en dividir la memoria en regiones lógicas de igual tamaño denominadas páginas. A finales de los años 8 se introdujo el procesador 486, que marcó un hito en la historia del computador personal (PC). Unido a los primeros sistemas operativos para PC, este procesador fue uno de los principales promotores de la computación personal una escala no vista hasta entonces. El procesador 486 mejoraba el desempeño de su predecesor, incluyendo la capacidad de tener varias instrucciones en diferentes niveles de ejecución al mismo tiempo. También implementaba una memoria caché de primer nivel dentro del procesador, con lo cual se aumentaba la posibilidad de ejecutar una instrucción en un ciclo de reloj. Adicionalmente, el 486 incluía una unidad de punto flotante y capacidades para el manejo de la energía. A principios de los años 9 apareció el procesador Pentium, que por su diseño mejoró notablemente las capacidades del 486. Los aspectos más notables de los procesadores Pentium y

posteriores (Pentium II, III, etc.) fueron su capacidad para ejecutar varias instrucciones por ciclo de reloj, la introducción de un segundo nivel de caché y la adición de las extensiones MMX (diseñadas para acelerar el desempeño de la multimedia y las comunicaciones). Los procesadores posteriores hasta los que están disponibles hoy en día se dividen en familias que incluyen características entre las que sobresalen: múltiples núcleos de procesamiento (por ejemplo Dual Core, Core 2 duo o Xeon), arquitectura de 64 bits, mejoras en el caché, mejoras en la gestión de energía, características para movilidad y tecnologías de virtualización (VT). Las familias más importantes de procesadores Intel en la actualidad son: Pentium, Core, Core 2, Itanuim y Xeon. Cada procesador actual cuenta con algunas o todas las características de la arquitectura IA-32. Por ejemplo, algunos procesadores actuales poseen múltiples núcleos con registros de 32 bits o múltiples núcleos con registros de 64 bits. Por ejemplo, un procesador Intel Core 2 Duo cuenta con dos núcleos con registros de 32 bits, y un procesador Xeon generalmente incluye varios núcleos con registros de 64 bits. La generación actual de procesadores Intel Core (Core I3, Core I5 y Core I7) implementan arquitecturas de 2, 4 y hasta 6 núcleos con registros de 64 bits. No obstante, para mantener la compatibilidad hacia atrás, todos los procesadores inician en un modo en el cual se comportan como un procesador 886 muy rápido, con algunas extensiones que le permiten habilitar el modo de operación en el cual aprovechan todas sus características. Esto ofrece una posibilidad sin igual para el aprendizaje de la programación básica de procesadores de la arquitectura IA-32. 1.2 CARACTERÍSTICAS DE LA ARQUITECTURA IA-32 A continuación se enumeran las características más importantes que ofrece la arquitectura IA-32 para la ejecución de programas. 1.2.1 Modos de operación Los procesadores IA-32 pueden operar en varios modos, entre los que sobresalen: Modo protegido: Este es el modo nativo del procesador. Aprovecha todas las características de su arquitectura, tales como registros de 32 bits, y el acceso a todo su conjunto de instrucciones y extensiones. Modo real (Modo de direcciones reales): En este modo el procesador se encuentra en un entorno de ejecución en el cual se comporta como un 886 muy rápido, y sólo tiene acceso a un conjunto limitado de instrucciones que le permiten ejecutar tareas básicas y habilitar el modo protegido. La limitación más notable en este modo consiste en que sólo se puede acceder a los 16 bits menos significativos de los registros de propósito general, y sólo se pueden utilizar los 2 bits menos significativos del bus de direcciones. Esto causa que en modo real solo se pueda acceder a 1 Megabyte de memoria. Modo de mantenimiento del sistema: En este modo se puede pasar a un entorno de ejecución limitado, para realizar tareas de mantenimiento o depuración.

Modo Virtual 886: Este es un sub-modo al cual se puede acceder cuando el procesador opera en modo protegido. Permite ejecutar código desarrollado para 886 en un entorno multi-tarea y protegido. Modo IA32-e: Para procesadores de 64 bits, además de los modos anteriores existen otros dos sub-modos: modo de compatibilidad y modo de 64 bits. El modo de compatibilidad permite la ejecución de programas desarrollados para modo protegido sin ninguna modificación, y el modo de 64 bits proporciona soporte para acceder a los 64 bits de los registros y un espacio de direcciones mayor que 64 Gigabytes. 1.2.2 Entorno de ejecución Cualquier programa o tarea a ser ejecutado en un procesador de arquitectura IA-32 cuenta con un entorno de ejecución compuesto por un espacio de direcciones de memoria y un conjunto de registros. A continuación se describen estos componentes. 1.2.2.1 Espacio de direcciones de memoria En la arquitectura IA-32 la memoria puede ser vista como una secuencia lineal (o un arreglo) de bytes, uno tras del otro. A cada byte le corresponde una dirección única (Ver figura). size 1 byte 1 byte Siguiente dirección lineal Dirección lineal El código dentro de una tarea o un programa puede referenciar un espacio direcciones de hasta 4 Gigabytes. Este espacio lineal puede estar mapeado directamente a la memoria física, con lo cual se tendrá acceso a 4 Gigabytes de RAM (2 32 direcciones lineales diferentes). Si el procesador cuenta con las extensiones requeridas, es posible acceder a un espacio físico de hasta 64 Gigabytes.

1.2.2.2 Espacio de direcciones de Entrada / Salida Los procesadores IA-32 incluyen otro espacio de direcciones, diferente al espacio de direcciones lineal, llamado espacio de direcciones de Entrada / Salida. A este espacio de 65536 (64K) direcciones se mapean los registros de los controladores de dispositivos de entrada / salida como el teclado, los discos o el mouse (Ver figura). Su acceso se realiza a través de un par de instrucciones específicas del procesador (in y out). 65535 Espacio de direcciones de E/S Disco 1 byte 1 byte estado control Controlador del disco 1.2.2.3 Registros El procesador cuenta con una serie de registros en los cuales puede almacenar información. Estos registros pueden ser clasificados en: Registros de propósito general: Estos registros son utilizados para almacenar valores, realizar operaciones aritméticas o lógicas o para referenciar el espacio de direcciones lineal. En procesadores de 32 bits existen ocho (8) registros de propósito general, cada uno de los cuales tiene un tamaño de 32 bits. Estos registros son: EAX, EBX, ECX, EDX, ESI, EDI, ESP y EBO. A pesar que se denominan registros de propósito general, y pueden ser utilizados como tal, estos registros tienen usos especiales para algunas instrucciones del procesador. Registros de segmento: Estos registros permiten almacenar apuntadores al espacio de direcciones lineal. Los procesadores IA-32 poseen seis (6) registros de segmento. Estos son: CS (código), DS (datos), ES, S, GS (datos), y SS (pila). Su uso depende del modo de operación. En modo real, los registros de segmento almacenan un apuntador a la dirección lineal del inicio del segmento dividida en 16. En modo protegido se denominan

selectores, y contienen un apuntador a una estructura de datos en la cual se describe un segmento de memoria. Registro ELAGS: Este registro de 32 bits contiene una serie de banderas (flags) que tienen diversos usos. Algunas reflejan el estado del procesador y otras controlan su ejecución. Existen instrucciones específicas para modificar el valor de ELAGS. Registro EIP: Este registro almacena el apuntador a la dirección lineal de la siguiente instrucción que el procesador debe ejecutar. Registros de control: El procesador posee cinco (5) registros de control CR a CR5. Estos registros junto con ELAGS controlan la ejecución del procesador. Registros para el control de la memoria: Estos registros apuntan a las estructura de datos requeridas para el funcionamiento del procesador en modo protegido. Ellos son: GDTR, IDTR, TR y LDTR. Registros de depuración: Estos registros contienen información que puede ser usada para depurar el código que está ejecutando el procesador. Los procesadores IA-32 cuentan con ocho (8) registros de depuración, DR a DR7. Registros específicos: Cada variante de procesador IA-32 incluye otros registros, tales como los registros MMX, los registros de la unidad de punto flotante (PU) entre otros. Algunos registros de propósito general pueden ser sub-divididos en registros más pequeños a los cuales se puede tener acceso. Esto permite la compatibilidad con programas diseñados para procesadores anteriores. A continuación se presentan las posibles sub-divisiones de los registros de propósito general, considerando procesadores de hasta 64 bits: 64 bits 32 bits 16 bits 8 bits 8 bits RAX EAX AX AH AL RBX EBX BX BH BL RCX ECX CX CH CL RDX EDX DX DH DL RSI ESI SI No disponible RDI EDI DI No disponible RSP ESP SP No disponible RBP EBP BP No disponible A nivel de programación, es posible acceder a cada uno de estos sub-registros de acuerdo con el modo de operación. Por ejemplo, para modo de direcciones real, es posible usar los registros de 8 bits y los registros de 16 bits. En modo protegido se puede usar los registros de 8, 16 y 32 bits. Si el procesador cuenta con registros de 64 bits y se encuentra en el modo de 64 bits, es posible acceder a los registros de 8, 16, 32 y 64 bits. La siguiente figura muestra como se encuentran dispuestos los bits de los registros de propósito general. Los registros EBX, ECX y EDX se encuentran dispuestos de la misma forma que EAX. Los registros EDI, ESP Y EBP se disponen de la misma forma que ESI.

Registros EAX, EBX, ECX, EDX 63 31 15 7 AH AL Modo real RAX EAX AX 32 bits 64 bits Registros ESI, EDI, ESP, EBP 31 15 7 No se ESI SI pueden sub-dividir en 8 bits RSI El formato de almacenamiento de la arquitectura IA-32 es Little-Endian, lo cual significa que los bits menos significativos de un número se almacenan en las posiciones menores de la memoria y de los registros, y los bits más significativos se almacenan en posiciones superiores (Ver figura). Número hexadecimal: 7C Binario más significativo Bit 15 (menos significativo) Bit Registro: 1 1 1 1 1 7 C Memoria: 7C (mayor posición) (menor posición)

La siguiente figura muestra la disposición de los bits (flags) dentro de registro ELAGS. Este registro almacena el estado y parte del control del procesador. El manual de arquitectura de sistema de Intel ofrece una descripción detallada de cada uno de los bits. ELAGS 31 23 I D V I P V I A C V R M 15 N T IO PL O D I T 7 S Z A P 1 C ID lag Virtual Interrupt Pending Virtual Interrupt lag Alignment Check Virtual 886 Mode Resume lag Nested Task I/O Privilege Level Overflow lag Direction lag Interrupt lag Trap lag Sign lag Zero lag Auxiliary Carry lag Parity lag Carry lag Los bits del registro ELAGS se pueden clasificar en: Bits de estado: Reflejan el estado actual del procesador. Son bits de estado: O, S, Z, A y P. Bits de control: Controlan de alguna forma la ejecución del procesador. Dentro de ELAGS se encuentra el bit D, que permite controlar la dirección de avance en las operaciones sobre cadenas de caracteres. Bits del sistema: Los bits ID, VIP, VI, AC, VM, R, NT, IOPL, I y T son usados por el procesador para determinar condiciones en su ejecución, o para habilitar / deshabilitar determinadas características. Por ejemplo, estableciendo el bit I en 1 se habilitan las interrupciones, mientras un valor de en este bit deshabilita las interrupciones. Bits reservados: Estos bits marcados con un color diferente se reservan por la arquitectura IA-32 para futura expansión. Deben permanecer con los valores que se muestran en la figura (cero o uno). No se deben usar, ya que es posible que en versiones posteriores de los procesadores IA-32 tengan un significado específico. A continuación se ilustra la disposición de los bits dentro del registro CR (Control Register ).

Control Register CR 31 3 29 23 18 16 15 7 P G C D N W A M W P N E E T T S E M P M P E Paging Cache Disable Non-write through Alignment Mask Write Protect Numeric Error Extension Type Task Switched Emulation Monitor Coprocessor Protection Enable Los bits más importantes de CR desde el punto de vista de programación son el bit (Protection Enable PE), y el bit 31 (Paging PG). Estos permiten habilitar el modo protegido y la paginación, respectivamente. No obstante antes de pasar a modo protegido y de habilitar la paginación se deben configurar unas estructuras de datos que controlan la ejecución del procesador. El paso a modo protegido y las estructuras de datos asociadas se presentarán más adelante en este documento. 1.2.3 Organización de la memoria La memoria en los procesadores de arquitectura IA-32 se puede organizar y manejar en tres formas básicas: Modo segmentado, modo real de direcciones y modo plano. A continuación se muestran los detalles de cada modo de organización de memoria. 1.2.3.1 Modo segmentado Este es el modo por defecto de organización de memoria. En este modo, la memoria se aprecia como un grupo de espacios lineales denominados segmentos. Cada segmento puede ser de diferente tipo, siendo los más comunes segmentos de código y datos. Para referenciar un byte dentro de un segmento se debe usar una dirección lógica, que consiste en un par selector: offset 1. Con el selector se puede determinar la dirección lineal de inicio del segmento, y el offset determina el número de bytes que se debe desplazar desde el inicio del segmento. Así se obtiene una dirección lineal en el espacio de direcciones de memoria. A continuación se presenta una figura que ilustra cómo realiza este proceso. 1 Se usarán la palabras offset y desplazamiento de forma indiscriminada.

2 32-1 Espacio lineal Dirección lógica selector : offset Segmento en memoria Con el selector se halla la dirección lineal de inicio del segmento (base) offset byte Dirección lineal base 1.2.3.2 Modo real de direcciones El modo real de direcciones es el modo inicial de todo procesador IA-32 luego de ser encendido o reiniciado. Se usa para ofrecer compatibilidad con procesadores de generaciones que abarcan hasta el propio 886. En modo real de direcciones el espacio lineal de direcciones se encuentra dividido en segmentos con un tamaño máximo de 64 Kilobytes. Adicionalmente sólo es posible usar los 16 bits menos significativos de los registros para referenciar una dirección lineal. Las direcciones lógicas en modo real de direcciones también están conformadas por un selector y un offset. Tanto el selector como el desplazamiento tienen un tamaño de 16 bits. Con el fin de permitir el acceso a un espacio de direcciones lineal mayor, el selector almacena la dirección de inicio del segmento dividida en 16. Para traducir una dirección lógica a lineal, el procesador toma el valor del selector y lo multiplica por 16, para hallar la base del segmento. Luego a esta base le suma el offset. La siguiente figura ilustra el proceso de transformar una dirección lógica a lineal en el modo real de direcciones.

2 2-1 Dirección lógica selector : offset Segmento en memoria (max. 64 KB) El selector almacena la base del segmento dividida en 16 offset byte Dirección lineal base Dada una dirección lógica en modo real, el procesador realiza automáticamente la siguiente operación: El valor del selector se multiplica por 16 (se desplaza 4 bits hacia la izquierda) para hallar la base del segmento Selector (16 bits) + base + Desplazamiento dentro del segmento (16 bits) offset Dirección lineal de 2 bits = Por las características especiales del modo real, solo es posible acceder a los primeros 2 2 bytes del espacio lineal de direcciones. En la práctica esto significa que en modo real sólo se puede tener acceso al primer Megabyte de memoria. 1.2.3.3 Modo plano (lat) El modo plano es otro caso especial del modo segmentado. La memoria en este modo se presenta como un espacio continuo de direcciones (espacio lineal de direcciones). Para procesadores de 32 bits, este espacio abarca desde el byte hasta el byte 2 32 (4GB). En la práctica, el modo plano se puede activar al definir segmentos que ocupan todo el espacio lineal (con base = y un tamaño igual al máximo tamaño disponible).

Dado que en este modo se puede ignorar la base del segmento (al considerar que siempre inicia en ), el desplazamiento en una dirección lógica es igual a la dirección lineal (Ver figura). Dirección lógica selector : offset 2 32-1 Segmento memoria en (Mismo tamaño del espacio lineal) En el modo plano el selector siempre referencia un segmento con base offset byte Dirección lineal base offset = Dirección lineal 1.2.3.4 Modo de organización de memoria vs. Modo de operación El mapeo entre modo de organización de memoria y modo de operación del procesador se da de resume en la siguiente tabla: Organización de Modo IA32-e Modo protegido memoria/ Modo real de 32 bits Modo de Operación Modo de 64 bits compatibilidad Modo segmentado NO SI SI NO Modo real SI SI 2 SI (igual que en NO modo protegido de 32 bits) Modo plano NO 3 SI SI SI 2 En modo protegido de 32 bits es posible acceder al modo real de organización de memoria sólo en el submodo Virtual 886 3 Cuando el procesador opera en modo real, se puede activar un modo especial en el cual es posible acceder a un pseudo-modo llamado modo unreal. En este pseudo-modo la memoria se organiza de forma similar al modo plano.