Vous êtes sur la page 1sur 5

Modo protegido

El modo protegido es un modo operacional de los CPUs compatibles x86 de la serie 80286 y posteriores. El modo protegido tiene un nmero de nuevas caractersticas diseadas para mejorar lasmultitareas y la estabilidad del sistema, como proteccin de memoria, y soporte de hardware para memoria virtual as como de conmutacin de tareas. A veces es abreviado como p-mode y tambin llamado Protected Virtual AddressMode (Modo de Direccin Virtual Protegido) en el manual de referencia de programador del iAPX 286 de Intel, (Nota, iAPX 286 es solo otro nombre para el Intel 80286). En el 80386 y procesadores de 32 bits posteriores se agreg un sistema de paginacin que es parte del modo protegido. La mayora de los sistemas operativos x86 modernos corren en modo protegido, incluyendo Linux, FreeBSD, OpenBSD, NetBSD, y Microsoft Windows 3.0 y posteriores. (Windows 3.0 tambin corra en el modo real para la compatibilidad con las aplicaciones de Windows 2.x). El otro modo operacional principal del 286 y CPUs posteriores es el modo real, un modo de compatibilidad hacia atrs que desactiva las caractersticas propias del modo protegido, diseado para permitir al software viejo correr en los chips ms recientes. Como una especificacin de diseo, todos los CPUs x86 comienzan en modo real en el momento de carga (boot time) para asegurar compatibilidad hacia atrs con los sistemas operativos heredados, excepto el oscuro Intel 80376 diseado para aplicaciones en sistemas embebidos. Estos procesadores deben ser cambiados a modo protegido por un programa antes de que est disponible cualquier caracterstica de este modo. En computadores modernos, este cambio es generalmente una de las primeras tareas realizadas por el sistema operativo en el tiempo de carga. Mientras que la multitarea en sistemas corriendo en modo real es ciertamente posible mediada por software, las caractersticas de proteccin de memoria del modo protegido previenen que un programa errneo pueda daar la memoria "propia" de otra tarea o del ncleo del sistema operativo. El modo protegido tambin tiene soporte de hardware para interrumpir un programa en ejecucin ycambiar el contexto de ejecucin a otro, permitiendo pre-emptivemultitasking.

Niveles privilegiados
En modo protegido, hay cuatro niveles de privilegio o anillos, numerados de 0 a 3. El cdigo del ncleo (kernel) del sistema operativo, que necesita usar instrucciones privilegiadas corre en el anillo 0, y las aplicaciones del usuario corren normalmente en el anillo 3. El sistema operativo puede asignar los anillos 1 y 2 a servicios de sistema, como protocolos de red o la gerencia de ventanas, que las aplicaciones pueden llamar. El hacer esto, le permite a los servicios acceder directamente los datos de la aplicacin, mientras que se protegen de stas, as

como el ncleo queda protegido de los servicios. Sin embargo, esto requiere, al sistema operativo, especificar la proteccin de memoria a nivel de segmento (porque en el 80386, la proteccin de nivel de pgina no puede distinguir entre los anillos 0, 1, y 2) y puede ser difcil si el sistema operativo necesita ser portable a procesadores que soporten solamente dos anillos. En lugar de ello, un sistema operativo puede alcanzar una proteccin equivalente o ms fuerte al correr los servicios en el anillo 3 pero en un diferente espacio de direccin. Sin embargo, esto cuesta ms, al tener una conmutacin de contexto ms compleja a la hora de la llamada, a menos que al servicio le sea dado unTaskStateSegment (segmento de estado de tarea) separado, el procesador primero debe cambiar al anillo 0 para cambiar el espacio de direccin, y despus volver al anillo 3 para ejecutar el servicio. El procesador comprueba niveles de privilegio en las siguientes situaciones. Si el cdigo que corre no tiene suficientes privilegios, el resultado es generalmente una excepcin que el sistema operativo puede manejar; pero tambin estn las instrucciones que hacen los mismos chequeos sin levantar excepciones.  Instruccin privilegiada. Algunas instrucciones slo se pueden ejecutar en el anillo 0: por ejemplo LGDT (Load Global Descriptor Table) (Carga Tabla Global de Descriptores), que puede redefinir segmentos arbitrariamente y por lo tanto vencer el mecanismo de proteccin. POPF (Pop Flags desde la pila) siempre es permitido, pero slo puede cambiar el campo IOPL desde el anillo 0.  Entrada/salida. El nivel de privilegio requerido para las instrucciones de E/S y para modificar el flag de interrupcin es definido por medio del campo IOPL del registro EFLAGS. Incluso si el nivel actual de privilegios no es suficiente, todava puede permitir E/S a puertos especficos va el mapa de bits de permisos de I/O en el segmento de estado de tarea (no soportado por el 80286).  Cargar un registro de segmento, farjumps y llamadas a subrutinas. Cada segmento tiene un descriptor que define el descriptor privilegelevel (DPL) (nivel de privilegio del descriptor) requerido para usar ese segmento. El valor del selector cargado en un registro de segmento tambin codifica un requestor'sprivilegelevel (RPL) (nivel de privilegio del solicitante), que debe ser fijado con la instruccin ARP, para marcar los selectores recibidos desde cdigo menos privilegiado. El procesador hace diferentes comprobaciones para accesos de los datos, la conmutacin de la pila, transferencias de control directas, y transferencias de control indirectas por medio de una puerta.

Retornando a cdigo menos privilegiado. El procesador limpia todos los registros de segmentos que contengan selectores que codifican en el nuevo nivel de privilegio que no hubieran podido cargarse all por s mismos.

La paginacin (no soportada por el 80286). Un bit en cada entrada de tabla de pgina controla si la pgina se puede usar solamente en los anillos 0, 1, y 2 (modo supervisor), o tambin en el anillo 3 (modo usuario).

El RPL en el registro CS (segmento de cdigo) es siempre el nivel actual de privilegio. La lectura de este registro no puede ser atrapada, lo que complica la virtualizacin nativa de sistemas operativos, puesto que stos normalmente esperan tener el anillo 0 para s mismos. Ver virtualizacin x86.

Modo 8086 virtual


En el microprocesador 80386 y posteriores, el modo 8086 virtual, tambin llamado modo real virtual o VM86, permite la ejecucin de aplicaciones de modo real que violan las reglas bajo control de un sistema operativo de modo protegido. El VM86 usaba la forma de segmentacin del modo real, pero usaba la direccin resultante de 20 bits (realmente 21 bits), tratndola como una direccin lineal, de tal manera que era sujeta apaginacin. Era usado para ejecutar programas DOS en Microsoft Windows/386, Windows 3.x, Windows 95, Windows 98, Windows Me, y OS/2 2.x y ms adelante, a travs de las mquinas DOS virtuales, tambin en SCO UNIX a travs de Merge, y en Linux por medio de dosemu. Los programas de DOS de modo protegido, tanto de 16 como de 32 bits, no se ejecutan en el modo 8086 virtual, sino en modo usuario, siempre y cuando fueran compatibles con DPMI. As que los emuladores arriba mencionados hacen de hecho ms que solo el soporte para el modo 8086 virtual.
[editar]Direccionamiento

de la memoria

El problema ms comn al correr cdigo del 8086 desde el modo protegido es el direccionamiento de memoria que es totalmente diferente entre el modo protegido y el modo real. Segn lo mencionado, al trabajar bajo el modo VM86 el mecanismo de segmentacin vuelve a trabajar como en el modo real, pero el mecanismo de paginacin sigue estando activo, y es transparente al cdigo de modo real, as

la proteccin de memoria es todava aplicable, y de esa manera tambin lo es el aislamiento del espacio de direcciones.
[editar]Interrupciones

Cuando las interrupciones tanto de hardware como de software e instrucciones inet ocurren, el procesador se sale del modo VM86 y retorna a trabajar en el modo protegido para manejar la interrupcin. Y antes de servir la interrupcin, los registros DS, ES, FS, y GS se guardan en el nuevo stack (con Push) y se ponen a cero.
[editar]

Modo real
El modo real (tambin llamado modo de direccin real en los manuales de Intel) es un modo de operacin del 80286 y anteriores CPUs compatibles de la arquitectura x86. El modo real est caracterizado por 20 bits de espacio de direcciones segmentado (significando que solamente se puede direccionar 1 MB de memoria), acceso directo del software a las rutinas del BIOS y el hardware perifrico, y no tiene conceptos de proteccin de memoria o multitarea a nivel de hardware. Todos los CPUs x86 de las series del 80286 y posteriores empiezan en modo real al encenderse el computador; los CPUs 80186 y anteriores tenan solo un modo operacional, que era equivalente al modo real en chips posteriores. La arquitectura 286 introdujo el modo protegido, permitiendo, entre otras cosas, la proteccin de la memoria a nivel de hardware. Sin embargo, usar estas nuevas caractersticas requiri instrucciones de software adicionales no necesarias previamente. Puesto que una especificacin de diseo primaria de los microprocesadores x86 es que sean completamente compatibles hacia atrs con el software escrito para todos los chips x86 antes de ellos, el chip 286 fue hecho para iniciarse en ' modo real ' - es decir, en un modo que tena apagadas las nuevas caractersticas de proteccin de memoria, de modo que pudieran correr sistemas operativos escritos para microprocesadores ms viejos. Al da de hoy, incluso los ms recientes CPUs x86 se inician en modo real al encenderse, y pueden correr el software escrito para cualquier chip anterior. Los sistemas operativos DOS (MS-DOS, DR-DOS, etc.) trabajan en modo real. Las primeras versiones de Microsoft Windows, que eran esencialmente un shell de interface grfica de usuario corriendo sobre el DOS, no eran realmente un sistema operativo por s mismas, corran en modo real, hasta Windows 3.0, que poda correr tanto en modo real como en modo protegido. Windows 3.0 poda correr de hecho en dos "sabores" de modo protegido - el "modo estndar", que corra usando modo protegido, y el "modo mejorado 386", que adems usaba direccionamiento de 32 bits y por lo tanto no corra en un 286

(que a pesar de tener modo protegido, segua siendo un chip de 16 bits; los registros de 32 bits fueron introducidos en la serie 80386). El Windows 3.1 removi el soporte para el modo real, y fue el primer ambiente operativo de uso masivo que requiri por lo menos un procesador 80286 (no contando con el Windows 2.0 que no fue un producto masivo). Casi todos los sistemas operativos modernos x86 (Linux, Windows 95 y posteriores, OS/2, etc.) cambian el CPU a modo protegido o a modo largo en el arranque.

Vous aimerez peut-être aussi