fbpx
Wikipedia

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 número de nuevas características diseñadas para mejorar la multitarea y la estabilidad del sistema, tales como la protección de memoria, y soporte de hardware para memoria virtual como también la conmutación de tarea. A veces es abreviado como p-mode y también llamado Protected Virtual Address Mode (Modo de Dirección 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 paginación que es parte del modo protegido.

La mayoría de los sistemas operativos x86 modernos se ejecutan en modo protegido, incluyendo GNU/Linux, FreeBSD, OpenBSD, NetBSD, Mac OS X y Microsoft Windows 3.0 y posteriores. (Windows 3.0 también se ejecutaba 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 atrás que desactiva las características propias del modo protegido, diseñado para permitir al software viejo ejecutarse en los chips más recientes. Como una especificación de diseño, todos los CPUs x86 comienzan en modo real en el momento de carga (boot time) para asegurar compatibilidad hacia atrás con los sistemas operativos heredados, excepto el Intel 80376 diseñado para aplicaciones en sistemas embebidos. Estos procesadores deben ser cambiados a modo protegido por un programa antes de que esté disponible cualquier característica 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 ejecutándose en modo real es ciertamente posible mediada por software, las características de protección de memoria del modo protegido previenen que un programa erróneo pueda dañar la memoria "propia" de otra tarea o del núcleo del sistema operativo. El modo protegido también tiene soporte de hardware para interrumpir un programa en ejecución y cambiar el contexto de ejecución a otro, permitiendo pre-emptive multitasking.

Compatibilidad con aplicaciones de modo real

El Manual de Referencia del Programador del iAPX 286 de Intel indica que el modo protegido es solo una cubierta sobre el conjunto de instrucciones del 80186, y de hecho, para los programadores de aplicaciones, el modo protegido 80286 no agregó mucho más allá de tener acceso de hasta 16 MiB de memoria física y de 1 GiB de memoria virtual (512 MiB global, 512 MiB local). También era compatible con el código del modo real a nivel binario, así que en teoría, el código de aplicación del 8086 y 80186 podía ejecutárse en modo protegido si seguía las siguientes reglas, (aunque se ejecutaría más lento que en el modo real porque la carga de registros de segmento es más lenta):

  • No aritmética de segmento
  • No uso de instrucciones privilegiadas
  • No acceso directo de hardware
  • No escritura al segmento de código (lo que significa que código automodificable nunca está permitido)
  • No ejecución de datos (eso, junto con la segmentación, proporciona una cierta protección de desbordamiento buffer)
  • No presunción que los segmentos se solapan

En realidad, casi todos los programas de aplicaciones del DOS violaron estas reglas, por la carencia de reemplazo de llamadas del DOS o del BIOS, o debido al insuficiente nivel de desempeño de tales llamadas. Las violaciones más comunes eran aritmética de segmento y el acceso directo del hardware. También algunas de las interrupciones del BIOS usaban números que fueron reservados por Intel. En otras palabras, el modo protegido era menos compatible con aplicaciones de DOS que con aplicaciones de modo real y por lo tanto había una necesidad del modo 8086 virtual, que vino con el 386.

Niveles privilegiados

En modo protegido, hay cuatro niveles de privilegio o anillos, numerados de 0 a 3. El código del núcleo (kernel) del sistema operativo, que necesita usar instrucciones privilegiadas se ejecuta en el anillo 0, y las aplicaciones del usuario se ejecutan 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 aplicación, mientras que se protegen de éstas, así como el núcleo queda protegido de los servicios. Sin embargo, esto requiere, al sistema operativo, especificar la protección de memoria a nivel de segmento (porque en el 80386, la protección de nivel de página no puede distinguir entre los anillos 0, 1, y 2) y puede ser difícil si el sistema operativo necesita ser portable a procesadores que soporten solamente dos anillos. En lugar de ello, un sistema operativo puede alcanzar una protección equivalente o más fuerte al ejecutar los servicios en el anillo 3 pero en un diferente espacio de dirección. Sin embargo, esto cuesta más, al tener una conmutación de contexto más compleja a la hora de la llamada, a menos que al servicio le sea dado un Task State Segment (segmento de estado de tarea) separado, el procesador primero debe cambiar al anillo 0 para cambiar el espacio de dirección, y después volver al anillo 3 para ejecutar el servicio.

El procesador comprueba niveles de privilegio en las siguientes situaciones. Si el código que se ejecuta no tiene suficientes privilegios, el resultado es generalmente una excepción que el sistema operativo puede manejar; pero también están las instrucciones que hacen los mismos chequeos sin levantar excepciones.

  • Instrucción privilegiada. Algunas instrucciones solo 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 protección. POPF (Pop Flags desde la pila) siempre es permitido, pero solo 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 interrupción es definido por medio del campo IOPL del registro EFLAGS. Incluso si el nivel actual de privilegios no es suficiente, todavía puede permitir E/S a puertos específicos vía 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, far jumps y llamadas a subrutinas. Cada segmento tiene un descriptor que define el descriptor privilege level (DPL) (nivel de privilegio del descriptor) requerido para usar ese segmento. El valor del selector cargado en un registro de segmento también codifica un requestor's privilege level (RPL) (nivel de privilegio del solicitante), que debe ser fijado con la instrucción ARP, para marcar los selectores recibidos desde código menos privilegiado. El procesador hace diferentes comprobaciones para accesos de los datos, la conmutación de la pila, transferencias de control directas, y transferencias de control indirectas por medio de una puerta.
  • Retornando a código 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 paginación (no soportada por el 80286). Un bit en cada entrada de tabla de página controla si la página se puede usar solamente en los anillos 0, 1, y 2 (modo supervisor), o también en el anillo 3 (modo usuario).

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

Extensiones del 386 al modo protegido

Éstas incluyen:

  • paginación
  • Offsets de segmento de 32 bits (estos segmentos y la paginación hicieron posible, en el 80386, hacer un espacio de dirección plano de 32 bits usado en sistemas operativos modernos)
  • Espacio de dirección físico de 32 bits (esta extensión no está presente en los procesadores 80386 que tienen un bus tipo 80286, por ejemplo el 80386SX)
  • Capacidad de retornar al modo real
  • Modo 8086 virtual
  • Bitmaps con permisos de I/O

Algunas de ellas usaron lo qué estaba documentado como bits reservados en el anterior procesador 286 en el manual de referencia del programador del iAPX 286 de Intel.

Véase también

Referencias

  • The Intel Microprocessors (8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium Pro Processor, Pentium II, Pentium II, Pentium III, and Pentium 4) Architecture, Programming, and Interfacing. Barry B. Brey
  • Intel Corporation (1985). iAPX 286/10 High Performance Microprocessor with Memory Management and Protection (80286-10, 80286-8, 80286-6). Order number 210253-009. In Intel Corporation (1986), Microsystem Components Handbook, Volume I: Microprocessors, ISBN 1-55512-001-6, order number 230843 (both volumes).

Enlaces externos

    •   Datos: Q841064

    modo, protegido, modo, protegido, modo, operacional, cpus, compatibles, serie, 80286, posteriores, modo, protegido, tiene, número, nuevas, características, diseñadas, para, mejorar, multitarea, estabilidad, sistema, tales, como, protección, memoria, soporte, h. El modo protegido es un modo operacional de los CPUs compatibles x86 de la serie 80286 y posteriores El modo protegido tiene un numero de nuevas caracteristicas disenadas para mejorar la multitarea y la estabilidad del sistema tales como la proteccion de memoria y soporte de hardware para memoria virtual como tambien la conmutacion de tarea A veces es abreviado como p mode y tambien llamado Protected Virtual Address Mode Modo de Direccion 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 agrego un sistema de paginacion que es parte del modo protegido La mayoria de los sistemas operativos x86 modernos se ejecutan en modo protegido incluyendo GNU Linux FreeBSD OpenBSD NetBSD Mac OS X y Microsoft Windows 3 0 y posteriores Windows 3 0 tambien se ejecutaba 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 atras que desactiva las caracteristicas propias del modo protegido disenado para permitir al software viejo ejecutarse en los chips mas recientes Como una especificacion de diseno todos los CPUs x86 comienzan en modo real en el momento de carga boot time para asegurar compatibilidad hacia atras con los sistemas operativos heredados excepto el Intel 80376 disenado para aplicaciones en sistemas embebidos Estos procesadores deben ser cambiados a modo protegido por un programa antes de que este disponible cualquier caracteristica 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 ejecutandose en modo real es ciertamente posible mediada por software las caracteristicas de proteccion de memoria del modo protegido previenen que un programa erroneo pueda danar la memoria propia de otra tarea o del nucleo del sistema operativo El modo protegido tambien tiene soporte de hardware para interrumpir un programa en ejecucion y cambiar el contexto de ejecucion a otro permitiendo pre emptive multitasking Indice 1 Compatibilidad con aplicaciones de modo real 2 Niveles privilegiados 3 Extensiones del 386 al modo protegido 4 Vease tambien 5 Referencias 6 Enlaces externosCompatibilidad con aplicaciones de modo real EditarEl Manual de Referencia del Programador del iAPX 286 de Intel indica que el modo protegido es solo una cubierta sobre el conjunto de instrucciones del 80186 y de hecho para los programadores de aplicaciones el modo protegido 80286 no agrego mucho mas alla de tener acceso de hasta 16 MiB de memoria fisica y de 1 GiB de memoria virtual 512 MiB global 512 MiB local Tambien era compatible con el codigo del modo real a nivel binario asi que en teoria el codigo de aplicacion del 8086 y 80186 podia ejecutarse en modo protegido si seguia las siguientes reglas aunque se ejecutaria mas lento que en el modo real porque la carga de registros de segmento es mas lenta No aritmetica de segmento No uso de instrucciones privilegiadas No acceso directo de hardware No escritura al segmento de codigo lo que significa que codigo automodificable nunca esta permitido No ejecucion de datos eso junto con la segmentacion proporciona una cierta proteccion de desbordamiento buffer No presuncion que los segmentos se solapanEn realidad casi todos los programas de aplicaciones del DOS violaron estas reglas por la carencia de reemplazo de llamadas del DOS o del BIOS o debido al insuficiente nivel de desempeno de tales llamadas Las violaciones mas comunes eran aritmetica de segmento y el acceso directo del hardware Tambien algunas de las interrupciones del BIOS usaban numeros que fueron reservados por Intel En otras palabras el modo protegido era menos compatible con aplicaciones de DOS que con aplicaciones de modo real y por lo tanto habia una necesidad del modo 8086 virtual que vino con el 386 Niveles privilegiados EditarEn modo protegido hay cuatro niveles de privilegio o anillos numerados de 0 a 3 El codigo del nucleo kernel del sistema operativo que necesita usar instrucciones privilegiadas se ejecuta en el anillo 0 y las aplicaciones del usuario se ejecutan 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 aplicacion mientras que se protegen de estas asi como el nucleo queda protegido de los servicios Sin embargo esto requiere al sistema operativo especificar la proteccion de memoria a nivel de segmento porque en el 80386 la proteccion de nivel de pagina no puede distinguir entre los anillos 0 1 y 2 y puede ser dificil si el sistema operativo necesita ser portable a procesadores que soporten solamente dos anillos En lugar de ello un sistema operativo puede alcanzar una proteccion equivalente o mas fuerte al ejecutar los servicios en el anillo 3 pero en un diferente espacio de direccion Sin embargo esto cuesta mas al tener una conmutacion de contexto mas compleja a la hora de la llamada a menos que al servicio le sea dado un Task State Segment segmento de estado de tarea separado el procesador primero debe cambiar al anillo 0 para cambiar el espacio de direccion y despues volver al anillo 3 para ejecutar el servicio El procesador comprueba niveles de privilegio en las siguientes situaciones Si el codigo que se ejecuta no tiene suficientes privilegios el resultado es generalmente una excepcion que el sistema operativo puede manejar pero tambien estan las instrucciones que hacen los mismos chequeos sin levantar excepciones Instruccion privilegiada Algunas instrucciones solo 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 proteccion POPF Pop Flags desde la pila siempre es permitido pero solo 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 interrupcion es definido por medio del campo IOPL del registro EFLAGS Incluso si el nivel actual de privilegios no es suficiente todavia puede permitir E S a puertos especificos via 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 far jumps y llamadas a subrutinas Cada segmento tiene un descriptor que define el descriptor privilege level DPL nivel de privilegio del descriptor requerido para usar ese segmento El valor del selector cargado en un registro de segmento tambien codifica un requestor s privilege level RPL nivel de privilegio del solicitante que debe ser fijado con la instruccion ARP para marcar los selectores recibidos desde codigo menos privilegiado El procesador hace diferentes comprobaciones para accesos de los datos la conmutacion de la pila transferencias de control directas y transferencias de control indirectas por medio de una puerta Retornando a codigo 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 alli por si mismos La paginacion no soportada por el 80286 Un bit en cada entrada de tabla de pagina controla si la pagina se puede usar solamente en los anillos 0 1 y 2 modo supervisor o tambien en el anillo 3 modo usuario El RPL en el registro CS segmento de codigo es siempre el nivel actual de privilegio La lectura de este registro no puede ser atrapada lo que complica la virtualizacion nativa de sistemas operativos puesto que estos normalmente esperan tener el anillo 0 para si mismos Ver virtualizacion x86 Extensiones del 386 al modo protegido EditarEstas incluyen paginacion Offsets de segmento de 32 bits estos segmentos y la paginacion hicieron posible en el 80386 hacer un espacio de direccion plano de 32 bits usado en sistemas operativos modernos Espacio de direccion fisico de 32 bits esta extension no esta presente en los procesadores 80386 que tienen un bus tipo 80286 por ejemplo el 80386SX Capacidad de retornar al modo real Modo 8086 virtual Bitmaps con permisos de I OAlgunas de ellas usaron lo que estaba documentado como bits reservados en el anterior procesador 286 en el manual de referencia del programador del iAPX 286 de Intel Vease tambien EditarModo real Modo irreal Modo 8086 virtual Modo protegido Modo de Gerencia del Sistema Modo largo x86 Lenguaje ensamblador x86 Anillo seguridad informatica Referencias EditarThe Intel Microprocessors 8086 8088 80186 80188 80286 80386 80486 Pentium Pentium Pro Processor Pentium II Pentium II Pentium III and Pentium 4 Architecture Programming and Interfacing Barry B Brey Intel Corporation 1985 iAPX 286 10 High Performance Microprocessor with Memory Management and Protection 80286 10 80286 8 80286 6 Order number 210253 009 In Intel Corporation 1986 Microsystem Components Handbook Volume I Microprocessors ISBN 1 55512 001 6 order number 230843 both volumes Enlaces externos Editarhttps web archive org web 20050616001715 http x86 ddj com articles pmbasics tspec a1 doc htm Datos Q841064Obtenido de https es wikipedia org w index php title Modo protegido amp oldid 128846177, wikipedia, wiki, leyendo, leer, libro, biblioteca,

    español

    , española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos