MXPA04009350A - Tablas de pagina sombra para el cotnrol de traduccion de direccion. - Google Patents

Tablas de pagina sombra para el cotnrol de traduccion de direccion.

Info

Publication number
MXPA04009350A
MXPA04009350A MXPA04009350A MXPA04009350A MXPA04009350A MX PA04009350 A MXPA04009350 A MX PA04009350A MX PA04009350 A MXPA04009350 A MX PA04009350A MX PA04009350 A MXPA04009350 A MX PA04009350A MX PA04009350 A MXPA04009350 A MX PA04009350A
Authority
MX
Mexico
Prior art keywords
page
shadow
directory
memory
pages
Prior art date
Application number
MXPA04009350A
Other languages
English (en)
Inventor
S Cohen Ernest
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of MXPA04009350A publication Critical patent/MXPA04009350A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables

Abstract

En un sistema de computadora que emplea memoria virtual, se almacenan multiples versiones de una pagina dada: una version de directorio, una version de tabla y una version de datos. La version de datos contiene los datos que un objeto de software cree que se almacenan en la pagina. Las versiones de directorio y de tabla de la pagina contienen versiones de los contenidos de la pagina que han sido modificados de cierta manera para estar de acuerdo con una restriccion en el mapa de traduccion de direccion empleado por el sistema de direccion virtual. Cuando una pagina es utilizada por el sistema de direccion virtual como un directorio o tabla, entonces las versiones de directorio o tabla, respectivamente, de esa pagina, se utilizan. Cuando una pagina es el objetivo de una solicitud de lectura, se utiliza la version de la pagina.

Description

TABLAS DE PAGINA SOMBRA PARA EL CONTROL DE TRADUCCION DE DIRECCION CAMPO DE LA INVENCION La presente invención se refiere en general al campo de manejo de memoria en una computadora, y, más particularmente, al manejo de la tabla de traducción de dirección en un sistema de dirección virtual.
ANTECEDENTES DE LA INVENCION Los sistemas de computadora modernos típicamente proporcionan algún tipo de mecanismo de dirección virtual. Como es conocido en la técnica, cada unidad de memoria individualmente accesible asociada con un sistema de computadora tiene una dirección física que únicamente identifica esa unidad de memoria. Sin embargo, en un sistema de computadora que soporta dirección virtual,' es posible asignar direcciones virtuales a las ubicaciones físicas. El sistema de dirección virtual utiliza un mapa de traducción para traducir la dirección virtual a una dirección física. Una característica de un sistema de dirección virtual es que es posible configurar los mapas de traducción de dirección, de manera que ciertos grupos de direcciones físicas (por ejemplo, páginas de memoria física) no tienen ninguna dirección virtual. En un esquema de manejo de memoria a base de página, típico, el mapa de traducción de dirección traduce descripciones de página virtual a números de marco de página física. De esta manera, a todas las ubicaciones en un marco de página física se les puede negar direcciones virtuales asegurando que el mapa de traducción de dirección no conduce a ese marco de página. En general, muchos esquemas de dirección virtual marcan direcciones virtuales con accesos que pueden ser realizados a través de la dirección virtual (por ejemplo, lectura, lectura/escritura); se pueden evitar accesos seleccionados a una página (por ejemplo, escritura) asegurando que ningún mapa de dirección virtual a la página permite el acceso denegado. Esta faceta del mapa de traducción de dirección se puede utilizar para implementar una forma de protección de memoria. De esta manera, un objeto de software (por ejemplo, un sistema operativo, un procedimiento de nivel de aplicación, o cualquier otro tipo de objeto de software) se le puede negar el acceso a una página del espacio de dirección físico asegurando que cualquier mapa expuesto a ese objeto de software está en un estado que ningún mapeo de dirección virtual a la página en cuestión permite el acceso. Este tipo de esquema de protección de memoria es particularmente útil en la familia de procesadores IA32 (por ejemplo, los procesadores INTEL x86), ya que la arquitectura de los procesadores INTEL x86 es tal que cuando operan en un modo protegido (estado operativo normal del procesador), todas las peticiones de acceso a memoria van a través de la traducción de dirección virtual. Un esquema de protección de memoria que trabaja prohibiendo programas de modo de supervisor que modifiquen tablas de traducción en una forma que podrían permitir cierto acceso a ciertas direcciones físicas, es denominado como "control de traducción de dirección", o ATC. En arquitecturas típicas (como la de x86), la traducción de direcciones virtuales a físicas es dada por los contenidos de páginas de memoria ordinarias (las así llamadas páginas "de mapa de página"). Esto es conveniente para escribir sistemas operativos, ya que los mapas de dirección virtual pueden ser creados y modificados a través de operaciones de memoria ordinarias. Si el sistema operativo va a ser configurado utilizando el ATC, entonces el ATC puede evitar que el sistema operativo tenga un mapa que le permite escribir directamente en las páginas de mapa de página, ya que el sistema operativo puede utilizar escrituras en dichas páginas para crear mapas proporcionándoles acceso arbitrario a páginas de memoria físicas. De esta manera, además de prevenir la lectura-escritura de mapas en páginas que el objeto de software no tiene permitido escribir, el ATC tiene que evitar mapas "inseguros" que incluyan mapeos de lectura-escritura a páginas de mapa de página. Aunque el aislamiento de memoria a través de ATC es efectivo, un problema que surge es como tratar solicitudes escritas que crean mapas inseguros pero no por sí mismos violan la política de control de acceso. Una forma para tratar dicha solicitud de escritura es simplemente para que la solicitud falle; sin embargo, esto podría requerir de una revisión sustancial del sistema operativo. De esta manera, algunos algoritmos actuales de ATC modifiquen ya sea el valor escrito (por ejemplo, para cambiar un mapa de lectura-escritura a una página de mapa de página a un mapeo de solo lectura) o modificar otras páginas de mapa de página para hacer un mapa seguro. El problema con esta técnica es que el objeto de software ejecutará la solicitud de escritura creyendo que un valor especificado está siendo escrito en la ubicación objetivo cuando, en realidad, esa ubicación finalizará conteniendo un valor diferente. Esta discrepancia puede ser reverberada en varias formas, por ejemplo, un objeto de software puede generar una suma de verificación basándose en los valores que han sido almacenados en software, y estas sumas de verificación no violaran el valor modificado generado por el sistema de ATC. Un beneficio de una modalidad de la presente invención es proporcionar un ambiente en donde las escrituras que crean mapas inseguros (pero obedecen a la política de seguridad) aparezcan como no modificados exitosos (desde el punto de vista de objeto de software), pero cuando los mapas resultantes no puedan ser explotados para circunvenir la política de seguridad, superando así las desventajas de la técnica anterior.
COMPENDIO DE LA INVENCION La presente invención proporciona el uso de páginas sombra para soportar el control de traducción de dirección. En un sistema de dirección virtual típico, una página dada puede ser una página de mapa (conteniendo datos que son parte del mapa) o a una página de datos (el objetivo de algunas direcciones virtuales) o ambos. Las páginas de mapa y las páginas de datos son accesadas en diferentes contextos: Las entradas en páginas de datos son los objetivos de subrayar solicitudes de lectura o escritura; las entradas en páginas de mapa, por otro lado, son consideradas con el fin de ubicar otras páginas. La invención mantiene múltiples copias de página que corresponden a los diferentes contextos en donde una página puede ser utilizada (por ejemplo, como un directorio, una tabla, o una página de datos, como se explicará más adelante). Esta invención utiliza la copia apropiada de la página dependiendo del contexto en donde se está accesando la página. Algunos sistemas de dirección virtual (tales como el modo de dirección virtual más común utilizado en la familia de procesadores de INTEL x86) tienen dos tipos de páginas de mapa: directorios y tablas. Los directorios contienen referencias a tablas y páginas de datos grandes, y las tablas contienen referencias a páginas de datos pequeñas, (páginas "grandes" y "pequeñas" más particularmente se describen más adelante). De esta manera, desde el punto de vista del procedimiento de traducción de dirección, existen hasta tres diferentes contextos en donde una página dada puede ser accesada: como un directorio, como una tabla, o como datos objetivo. En una modalidad preferida, hasta tres versiones de una página dada son mantenidas: una versión de directorio, una versión de tabla, y una versión de datos. Cuando una página dada es accesada, ese directorio, tabla o versión de datos de la página se utiliza dependiendo del contexto en donde la página se está accesando. De acuerdo con ATC, el contenido de una página puede ocasionar violación de una política de acceso de memoria solamente si la página es utilizada como un directorio o tabla. Por ejemplo, una página puede comprender un enlace a una página fuera de límites. Sin embargo, el peligro de que esta página sea utilizada para accesar la página fuera de límites solamente está presente si el traductor de dirección en realidad está utilizando la página como parte de un mapa. Si la página más bien está siendo accesada como una página de datos, entonces no expone a una dirección virtual para la página fuera de límites. De esta manera, la copia de datos de la página puede contener los datos reales que el objeto de software cree que ha escrito en la página, aunque las copias de directorio y de tabla de la página pueden contener versiones modificadas que presentan un mapa de seguridad. Otros aspectos de la invención se describirán más delante.
BREVE DESCRIPCION DE LOS DIBUJOS El compendio anterior, así como la siguiente descripción detallada de las modalidades preferidas, se entenderán mejor cuando se lean junto con los dibujos anexos. Para propósitos de ilustración de la invención, se muestra en los dibujos construcciones ilustrativas de la invención; sin embargo, la invención no está limitada a los métodos específicos e instrumentalidades descritas. En los dibujos: La Figura 1 es un diagrama de bloque de un ambiente de cómputo ilustrativo en donde se pueden implementar los aspectos de la invención; La Figura 2 es un diagrama de bloque de un sistema de dirección virtual ilustrativo; La Figura 3 es un diagrama de bloque de una entrada ilustrativa en un mapa de traducción de dirección; La Figura 4 es un diagrama de bloque de una condición invariante ilustrativa para control de acceso de memoria a través del control de traducción de dirección; La Figura 5 es un diagrama de bloque de páginas que existen en versiones plurales, en donde una versión diferente de una página es empleada dependiendo del contexto en donde se utilice la página; La Figura 6 es un diagrama de flujo de un procedimiento ilustrativo para derivar la versión de di'rectorio de una página; y La Figura 7 es un diagrama de flujo de un procedimiento ilustrativo para derivar la versión de tabla de una página.
DESCRIPCION DETALLA DE LA INVENCION Vista General El control de traducción de dirección puede ser utilizado para ¡mplementar una política de control de acceso de memoria denegando efectivamente mapeos de dirección virtual que puedan ser utilizados para violar la política. En general, el control de traducción de dirección trabaja imponiendo límites sustantivos de intentos de evitar el mapa de traducción de dirección, de manera que el mapa siempre permanece seguro (en el sentido de que el mapa no se expone, a una entidad de software dada, enlaces (o enlaces que se pueden escribir) a páginas que están fuera de límites (o que no se pueden escribir) por esa entidad, y no permite que una entidad no confiable escriba en el mapa). Típicamente, estas restricciones sustantivas son impuestas evaluando solicitudes para editar el mapa para determinar si la realización de la solicitud podría colocar al mapa en un estado indeseable; si se presenta un estado indeseable, entonces la solicitud es modificada de manera que la realización de la solicitud deseada mantenga el estado deseado. (Por ejemplo, una solicitud para evitar un mapa que podría dar como resultado en una escritura/lectura en enlace a una página que se puede leer pero no se puede escribir de acuerdo con la política, puede ser modificada para marcar el enlace como solo lectura). El problema con esta técnica es que algunas veces el corregir el comportamiento del software depende de la memoria que contiene los valores que el software cree que ha escrito en la memoria, por ejemplo, en el caso de verificar una suma de verificación, y la modificación de una solicitud ocasionará que la memoria contenga un valor diferente que la que tiene el software que cree que ha escrito. La presente invención dirige este problema manteniendo diferentes versiones de páginas utilizadas como páginas de mapa de página: una versión de datos que es expuesta al objeto de software, y una o más versiones de mapa que pueden ser utilizadas como parte del procedimiento de traducción de dirección sin violar la seguridad del mapa. Los mapas para la versión de datos de dicha página se hacen de solo lectura, de manera que las escrituras en la página pueden ser interceptadas por el ATC, el cual puede editar las páginas con el fin de mantener la versión diferente sincronizada.
Disposición de Cómputo Ilustrativa La Figura 1 muestra un ambiente de cómputo ilustrativo en donde se pueden implementar los aspectos de la invención. El ambiente de sistema de cómputo 100 solamente es un ejemplo de un ambiente de cómputo adecuado y no pretende sugerir ninguna limitación al alcance de uso y funcionalidad de la invención. Ni el ambiente de cómputo 100 debe ser interpretado como teniendo alguna dependencia o requerimiento con relación a cualquiera o a alguna combinación de componentes ilustrados en el ambiente operativo 100 ilustrativo. La invención opera con numerosos otros ambientes o configuraciones del sistema de cómputo de propósito general o de propósito especial. Ejemplos de sistemas de cómputo, ambientes, y/o configuraciones bien conocidos que pueden ser adecuados para utilizarse con la invención incluyen, pero no se limitan a, computadoras personales, computadoras servidor, dispositivos portátiles, sistemas de multiprocesador, sistemas a base de microprocesador, cajas de TV por cable, electrónica de consumidor programable, PCs en red, minicomputadoras, macrocomptuadoras, sistemas embebidos, ambientes de cómputo distribuidos que incluyen cualesquiera de los sistemas o dispositivos anteriores, y similares. La invención será descrita en el contexto general de instrucciones ejecutables por computadora, tales como módulos de programa, siendo ejecutados por una computadora. En general, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstractos particulares. La invención también puede ser practicada en ambientes de cómputo distribuidos, en donde las tareas son realizadas a través de dispositivos de procesamiento remotos que están enlazados a través de una red de comunicaciones u otro medio de transmisión de datos. En un ambiente de cómputo distribuido, los módulos de programa y otros datos pueden ser localizados en medios de almacenamiento de computadora tanto locales como remotos, incluyendo dispositivos de almacenamiento de memoria. Con referencia a la Figura 1, un sistema ilustrativo para implementar la invención incluye un dispositivo de cómputo de propósito general en la forma de una computadora 110. Los componentes de la computadora 110 pueden incluir, pero no se limitan a, una unidad de procesamiento 120, una memoria de sistema 130 y un colector común de sistema 121, que acopla varios componentes del sistema incluyendo la memoria de sistema a la unidad de procesamiento 120. La unidad de procesamiento 120 puede representar múltiples unidades de procesamiento lógicas tales como aquellas soportadas en un procesador de hiios múltiples. El conductor común de sistema 121 puede ser cualquiera de los varios tipos de estructuras de conductor común, incluyendo un conductor común de memoria o controlador de memoria, un conductor común periférico, y un conductor común local utilizando cualquiera de una variedad de las arquitecturas de conductor común. A manera de ejemplo, y no de limitación, dichas arquitecturas incluyen el conductor común de Arquitectura Estándar de Industria (ISA), conductor común de Arquitectura de Microcanal (MCA), conductor común de ISA mejorado (EISA), conductor común local de Asociación de Estándares de Video Electrónica (VESA), y conductor común de Interconexión de Componente Periférico (PC) (también conocido como conductor común de Mezanine). El conductor común de sistema 121 también puede ser ¡mplementado como una conexión de punto a punto, fábrica de conmutación, o similares, entre los dispositivos de comunicación. La computadora 110 típicamente incluye una variedad de medios legibles por computadora. Los medios legibles por computadora pueden ser cualesquiera medios disponibles que puedan ser accesados por la computadora 110 e incluye tanto medios volátiles como no volátiles, medios removibles como no removibles.
A manera de ejemplo, y no de limitación, los medios legibles por computadora pueden comprender medios de almacenamiento por computadora y medios de comunicación. Los medios de almacenamiento por computadora incluyen medios tanto volátiles como no volátiles, removibles como no removibles, implementados en cualquier método o tecnología para el almacenamiento de información, tal como instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento por computadora incluyen, pero no se limitan a, RAM, ROM, EEPROM, memoria flash, u otra tecnología de memoria, CDROM, discos versátiles digitales (DVD) u otros almacenamientos de disco óptico, casetes magnéticos, cinta magnética, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que pueda ser utilizado para almacenar la información deseada y que pueda ser accesado por la computadora 110. Los medios de comunicación típicamente modalizan instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada tal como una onda portadora u otro mecanismo de transporte, e incluyen cualquier medio de suministro de información. El término "señal de datos modulada" dignifica una señal que tiene una o más de sus características fijadas o cambiadas de tal manera que codifica información en la señal. A manera de ejemplo, y no de limitación, los medios de comunicación incluyen medios mediante cables tales como una red con cables o una conexión de cable directo, y medios inalámbricos tales como medios acústicos, RF, infrarrojos, u otros medios inalámbricos. Las combinaciones de cualquiera de los anteriores también deben ser incluidas dentro del alcance de los medios legibles por computadora. La memoria de sistema 130 incluye medios de almacenamiento por computadora en la forma de memoria no volátil y/o volátil tal como memoria de solo lectura (ROM) 131 y memoria de acceso aleatorio (RAM) 132. Un sistema de entrada/salida básico 133 (BIOS), conteniendo las rutinas básicas que ayuda a transferir información entre elementos dentro de la computadora 110, tales como durante el arranque, típicamente se almacenan en la ROM 131. La RAM 132 típicamente contiene datos y/o módulos de programa que inmediatamente son accesibles a y/o actualmente se operan a través de una unidad de procesamiento 120. A manera de ejemplo, y no de limitación, la Figura 1 ilustra el sistema operativo 134, programas de aplicación 135, otros módulos de programa 136, y datos de programa 137. La computadora 110 también puede incluir otros medios de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles. A manera de ejemplo solamente, la Figura 1 ilustra una unidad de disco duro 140 que lee de o escribe a medios magnéticos no removibles, no volátiles, una unidad de disco magnético 151 que lee de o escribe a un disco magnético removible, no volátil 152, y una unidad de disco óptico 155 que lee o escribe a un disco óptico removible, no volátil 156, tal como CDROM u otro medio óptico. Otros medios de almacenamiento por computadora * removibles/no removibles, volátiles/no volátiles que pueden ser utilizados en ambiente operativo ilustrativo incluyen, pero no se limitan a casetes de cinta magnética, tarjetas de memoria flash, discos versátiles digitales, videocinta digital, RAM de esta sólido, ROM de estado sólido, y similares. La unidad de disco duro 141 típicamente está conectada al conductor común de sistema 121 a través de una interfase de memoria no removible tal como la interfase 140, y la unidad de disco magnético 151 y la unidad de disco óptico 155 típicamente están conectadas al conductor común de sistema 121 a través de una interfase de memoria removible, tal como la interfase 150. Las unidades y sus medios de almacenamiento por computadora asociados discutidos anteriormente e ilustrados en la Figura 1, proporcionan almacenamiento de instrucciones legibles por computadora, estructuras de datos, módulos de programa y otros datos para computadora 110. En la Figura 1, por ejemplo, la unidad de disco duro 141 se ilustra como el sistema operativo de almacenamiento 144, programas de aplicación 145, otros módulos de programa 146, y datos de programa 147. Observar que estos componentes pueden ser ya sea iguales o diferentes del sistema operativo 134, programas de aplicación 135, otros módulos de programa 136 y datos de programa 137. El sistema operativo 144, programas de aplicación 145, otros módulos de programa 146 y datos de programa 147 se les proporcionan números diferentes aquí para ¡lustrar que, a un mínimo, son diferentes copias. Un usuario puede introducir comandos e información a la computadora 20 a través de los dispositivos de entrada tales como un teclado 162 y un dispositivo de señalamiento 161, comúnmente denominado como un ratón, bola de seguimiento, o almohadilla táctil. Otros dispositivos de entrada (no mostrados) pueden incluir un micrófono, una palanca de juegos, una almohadilla de juegos, una antena de satélite, un explorador, o similares. Estos y otros dispositivos de entrada por lo regular están conectados a la unidad de procesamiento 120 a través de una interfase de entrada de usuario 160 que está acoplada al conductor común de sistema, pero se puede conectar a través de otra interfase y estructuras de conductor común, tales como un puerto paralelo, puerto de juegos o un conductor común en serie universal (USB). Un monitor 191 u otro tipo de dispositivo de presentación también está conectado al conductor común de sistema 121 a través de una interfase, tal como una interfase de vídeo 190. Además del monitor, las computadoras también pueden incluir otros dispositivos de salida periféricos tales como bocinas 197 e impresoras 196, los cuales pueden ser conectados a través de una interfase periférica de salida 195. La computadora 110 puede operar en un ambiente en red utilizando conexiones lógicas a una o más computadoras remotas, tales como una como una computadora remota 180. La computadora remota 180 puede ser una computadora personal, un servidor, un enrutador, una PC de red, o dispositivo par u otro nodo de red común, y típicamente incluye muchos o todos elementos descritos anteriormente con relación a la computadora 110, aunque solamente se ha ilustrado en la Figura 1 un dispositivo de almacenamiento de memoria 181. Las conexiones lógicas ilustradas en la Figura 1 incluyen una red de área local (LAN) 171 y una red de área amplia (WAN) 173, pero también pueden incluir otras redes. Dichos ambientes en red son lugares comunes en oficinas, redes de computadora de empresas, intranets e Internet. Cuando se utiliza en un ambiente en red de LAN, la computadora 110 se conecta a la LAN 171 a través de una interfase de red o adaptador 170. Cuando se utiliza en un ambiente en red de WAN, la computadora 110 típicamente incluye un módem 172 u otros medios para establecer comunicaciones a través de la WAN 173, tal como el Internet. El módem 172, el cual puede ser interno o externo, puede ser conectado al conductor común de sistema 121 a través de la interfase de entrada de usuario 160, u otro mecanismo apropiado. En un ambiente en red, los módulos de programa ilustrados con relación a la computadora 110, o sus porciones, pueden ser almacenados en un dispositivo de almacenamiento de memoria remoto. A manera de ejemplo, y no de limitación, la Figura 1 ilustra programas de aplicación remotos 185 como residentes en el dispositivo de memoria 181. Se apreciará que las conexiones de red mostradas son ilustrativas y que se pueden utilizar otros medios para establecer un enlace de comunicaciones entre las computadoras.
Esquema de Dirección Virtual Ilustrativo La Figura 2 muestra un ejemplo de un sistema de dirección virtual. El ejemplo ilustrado en la Figura 2 es un esquema de dirección virtual de tipo página, aunque se entenderá que la dirección virtual puede basarse en otros modelos, tales como la segmentación. El esquema mostrado en la Figura 2, es un esquema de dirección de dos niveles, tal como uno de los esquema de dirección virtual disponibles en el procesador INTEL x86. El esquema es de "dos niveles" en el sentido que uno debe utilizar dos niveles de indirección para traducir un identificador de página virtual a una página física, como se describe más adelante. En este esquema de paginación, el directorio de página 202 contiene un grupo de entradas. Una estructura ilustrativa de una entrada más particularmente se describe más adelante con relación a la Figura 3, pero, en esencia, cada entrada identifica la ubicación física (es decir, el número de marco de página o "PFN") de una tabla de página particular, tales como las tablas de página 204(1), 204(2), o 204(3). Cada tabla de página, a su vez, contiene un grupo de entradas, en donde cada entrada identifica la ubicación física (otra vez, el número de marco de página) de una página de datos particular, tal como las páginas 206(1), 206(2), 206(3), 0 206(4). Las páginas de datos son porciones contiguas de longitud definida de RAM 132. Las páginas de datos pueden almacenar cualquier tipo de datos, y, se debe observar que, además de almacenar datos ordinarios, también se pueden utilizar las páginas de datos para almacenar los contenidos de directorio de página 202 y páginas 204 (1) a la 204 (3). De esta manera, una página dada puede ser un directorio, una tabla, una página de datos, o puede jugar múltiples papeles como cualquier combinación de esas tres estructuras. El esquema de dirección virtual ilustrado en la Figura 2 es un esquema de dirección virtual de dos niveles, ya que es necesario ir a través tanto de un directorio de página (nivel 1) como una tabla de página (nivel 2) con el fin de ubicar una página particular. Se apreciará por aquellos en la técnica que es posible diseñar un sistema de dirección virtual con un número arbitrario de niveles, y los principios de la presente invención pueden ser aplicados a todos estos esquemas de dirección virtual. Como se muestra en la técnica, el procesador INTEL x86 soporta direcciones virtuales teniendo 1, 2, o 3 niveles, y típicamente emplea un esquema "híbrido", en donde páginas "pequeñas" (es decir, páginas que tienen una longitud de 4 kilobytes) utiliza direcciones virtuales de dos niveles, mientras que las páginas "grandes" (es decir, páginas con una longitud de 4 megabytes) utilizan direcciones virtuales de un nivel. En el esquema de paginación de la Figura 2, cualquier byte en una página puede ser identificado por una dirección virtual 210, que comprende un desplazamiento de directorio de página 211, un desplazamiento de tabla de página 212, y un desplazamiento de página 213. (Esta estructura de una dirección virtual se aplica a datos almacenados en páginas pequeñas; las páginas grandes se describen más adelante). De esta manera, con el fin de localizar una dirección física, una unidad de manejo de memoria (MMU) 220 que realiza la traducción de direcciones utiliza el desplazamiento de directorio de página 211 para localizar una entrada particular en el directorio de página 202. Por ejemplo, el desplazamiento 211 puede se igual a cero, indicando que la entrada de cero en el directorio de página 202 debe ser consultada. Esta entrada contiene el PFN en donde se almacena una tabla de página, de manera que la MMU 220 utiliza este PFN para localizar una de las tablas de página (por ejemplo, la tabla de página 204 (1)). La unidad MMU 220 después utiliza el desplazamiento de tabla de página 212 como un índice en la tabla de página identificada, y recupera la entrada encontrada en ese desplazamiento. La entrada contiene el PFN de una página de datos (por ejemplo, la página 206 (1)), De manera que la unidad MMU 220 agrega el desplazamiento de página 213 a la dirección de base de la página identificada con el fin de localizar un byte particular de memoria física. La unidad MMU 220 también puede ser adaptada para realizar otras varias funciones además de la mera traducción de direcciones: por ejemplo, la unidad MMU 220 puede cargar la página a partir de un disco si la entrada de la página en la tabla está marcada como "no presente"; la unidad MMU 220 puede rechazar el acceso escrito si la página está marcada como "solo lectura". Si la dirección virtual se refiere a una página grande, la estructura de una dirección virtual, y el procedimiento para, traducir esa dirección, son ligeramente diferentes de aquel descrito anteriormente. La dirección virtual contiene solamente un desplazamiento, el cual es un índice hacia el directorio. La entrada de directorio localizada en ese desplazamiento, en lugar de contener el PFN de una tabla de página, contiene el PFN de una página de datos grande. La entrada de directorio también tiene un bit que se determina para indicar que la entrada se refiere a una página grande en lugar de a una tabla de página. Cuando el bit de la página grande se determina, la dirección virtual no contiene un índice hacia una tabla de página, de manera que no se utiliza ninguna tabla de página en el procedimiento de traducción; más bien, el resto de la dirección virtual (es decir, la porción distinta al índice hacia el directorio) es tratada como un índice hacia la página grande. El nivel de tabla de página es derivado, de manera que solamente se presenta un nivel de traducción. En el esquema de dirección virtual de la Figura 2, la ubicación (es decir, el PFN) del mismo directorio de página se almacena en una ubicación de almacenamiento 201. La unidad MMU 220 utiliza los contenidos de esta localización de almacenamiento para localizar el directorio de página 202 cuando comienza a traducir la dirección virtual 210. De esta manera, existen múltiples mapas de página en existencia, y un mapa particular puede ser seleccionado para uso real determinado los contenidos de la ubicación de almacenamiento 201 para que contengan el PFN de un directorio de página de mapa. En el ejemplo de un procesador de INTEL x86, la ubicación de almacenamiento 201 corresponde al registro denominado como CR3.
Como se observó anteriormente, cada entrada en una tabla de página o directorio de página contiene el PFN de una página física particular, y también puede contener ciertos otros datos. La Figura 3 muestra una estructura ilustrativa para una entrada 300 en una tabla de página o directorio de página. La entrada 300 incluye el PFN 302 de una página física particular. Por ejemplo, si la entrada 300 es parte de un directorio de página, entonces el PFN 302 es el PFN de la tabla de página que debe ser consultada en el siguiente nivel del procedimiento de traducción de dirección (o, en el caso de un enlace de página grande, la entrada simplemente contiene el PFN de la página de datos grande a la cual se refiere la entrada). Además, la entrada 300 contiene un bit 304 indicando si la entrada es para una página grande o una página pequeña. (Este bit tendrá significado solamente cuando la entrada 300 sea parte de un directorio de página. Por simpleza, el formato de una entrada puede ser igual si la entrada es parte de un directorio o una tabla, aunque en el caso de una tabla, el significado del bit 304 será indefinido). El bit de sólo lectura 306 indica si la página de datos que es el último objetivo de la entrada va a ser tratada como lectura/escritura (bit aclarado) o solo lectura (bit determinado). Si la página de datos objetivo es de solo lectura, entonces las solicitudes de escritura a esa página fallarán. (La unidad MMU 220 puede ser utilizada para reforzar el estado de solo lectura de una página). El bit de solo lectura puede existir en las entradas tanto de directorio como de tabla; si los enlaces de directorio y tabla que finalmente conducen a una página de datos tienen determinaciones en conflicto de sus bits de sólo lectura respectivos, se puede utilizar una regla de resolución de conflicto para determinar si la página de datos objetivo esté lectura/escritura o sólo de lectura. Por ejemplo, la regla de conflicto puede establecer que, con el fin de que una página sea tratada como de lectura/escritura, tanto los enlaces de directorio como de tabla que conducen a esa página deben ser marcados como lectura/escritura (es decir, el bit de sólo lectura 306 en ambas entradas debe ser eliminado). La misma página puede volverse a buscar a través de diferentes trayectorias a través del mapa, y si la página es tratada como lectura/escritura o como solo lectura, puede depender de que si la trayectoria se utiliza para buscar esa página. El bit 308 presente indica si la página de datos objetivo está actualmente presente en la memoria física, o necesita ser copiada a la memoria a partir de un disco. Por ejemplo, si el bit 308 presente está eliminado (indicando que la página objetivo no está presente), una solicitud de acceso en esta página puede generar una falla de página, la cual después es manejada a través de una rutina de servicio de interrupción que copia los contenidos de la página del disco a la memoria física y ajusta el mapa de traducción de dirección para reflejar la ubicación física de la página. Cuando el bit presente se determina en forma diferente en el directorio de página y la tabla de página entra a un mapeo dado, el conflicto entre estos bits puede ser resuelto a través de una regla de resolución de conflicto similar a aquella discutida anteriormente para el bit de lectura/escritura, por ejemplo, el mapeo es tratado como presente si y solamente si tanto las entradas de directorio como de tabla se marcan como presentes.
Control de Acceso de Memoria Utilizando el Control de Edición de Entrada de Tabla de Traducción de Dirección (ATO Una característica del esquema de dirección virtual descrito con relación a las Figuras 2-3, es que es posible que exista una porción de memoria física para la cual no exista ninguna dirección virtual correspondiente. Una consecuencia natural de esta observación es que, dada cualquier porción de memoria, es posible restringir el acceso a esa porción de memoria asegurando que el mapa de traducción de dirección no conduce a esa porción de memoria. En efecto, una ubicación de memoria se hace fuera de límites ya que la ubicación de memoria no tiene una dirección virtual. (En muchos sistemas, por ejemplo, el procesador (INTEL x86, casi todas las solicitudes de acceso de memoria se hacen a través de la dirección virtual; para esas circunstancias limitadas en donde las solicitudes de acceso se hacen a través de la dirección física, se puede utilizar un mecanismo de control de acceso paralelo). La forma en la cual el ATC se utiliza para lograr un control de acceso de memoria se explica en término de la siguiente notación: NA ("no acceso") es el grupo de páginas a las cuales se rechaza el acceso bajo alguna política. MP ("páginas mapeadas") es el grupo de páginas que son accesibles a través del mapa de traducción de dirección, es decir, el juego de páginas para las cuales existe una dirección virtual. El acceso a las páginas que son miembros de NA puede ser evitado, siempre que la condición NA n MP = ? continúe siendo verdadera. Esta condición de ilustra en la Figura 4 como un diagrama de Venn: es decir, las páginas 406 son el grupo de páginas físicas disponibles en la máquina; MP 402 es el grupo de páginas para las cuales existen direcciones virtuales; NA 404 es el grupo de páginas para las cuales el acceso no está permitido de acuerdo con la política. Siempre que la condición en la Figura 4 continúe siendo verdadera, no será posible utilizar direcciones virtuales para tener acceso a páginas que están fuera de límites de acuerdo con la política, ya que el mapa no conduce a estas páginas (es decir, las páginas no tienen dirección virtual). De esta manera, la condición ilustrada en la Figura 4 puede ser usada para lograr un control de acceso de memoria a través de ATC. Esta condición se denomina como una "invariante", ya que el objetivo del ATC es limitar los cambios al mapa de traducción de dirección con el fin de prevenir que la condición cambie de un estado de verdadero a un estado de no verdadero. La Figura 4 ilustra una condición invariante simple que puede ser utilizada para el control de acceso de memoria, y se muestra solamente para propósito de ilustración. Son posibles condiciones más complejas, dependiendo del ambiente en donde se presenta el control de acceso. Por ejemplo, es posible fijar reglas específicas con respecto a que entradas pueden estar contenidas en un directorio (o en una tabla), y para refinar el control de acceso utilizando los bits de sólo lectura y/o presentes para ayudar a reforzar la condición de control de acceso. Por ejemplo, lo siguiente describe un ejemplo de un grupo de reglas que pueden ser utilizadas para lograr un control de acceso de memoria a través de ATC en un procesador de INTEL x86: D1 es el grupo de páginas que pueden ser utilizadas como directorios de página. D2 es el grupo páginas que pueden ser utilizadas como tablas de página. D = D1 u D2. Cada entrada en un directorio de página o tabla de página que se marca como "presente" (es decir, cuyo bit presente está determinado) se denomina como un "enlace". Una página en D2 es "de escritura activa" si existe un pequeño enlace de lectura-escritura de alguna página en D1 a la página D2 en cuestión. (Un enlace "pequeño" es un enlace de un directorio hacia una tabla, es decir, un enlace en un directorio que finalmente conducirá a una página pequeña. Un enlace "grande" es un enlace en un directorio que señala a una página grande). Se asume que existe una política que define las páginas a las cuales se permite alguna entidad para que tenga acceso de lectura y/o escritura. Se mantienen las siguientes invariantes: CR3 está en D1 ; todas las páginas de D1 y D2 se pueden leer de acuerdo con la política relevante; - cada enlace pequeño de una página de D1 señala una página de D2; los enlaces de las páginas D2 señalan a una página que se puede leer de acuerdo con la política; cada enlace de lectura-escritura de una página D2 de escritura activa señala una página que se puede escribir de acuerdo con la política y que no está en D; cada página pequeña contenida en el objetivo de página grande un enlace grande de una página D1 se puede leer de acuerdo con la política; si el enlace es de lectura-escritura, entonces la página pequeña también se puede escribir de acuerdo con la política y no está en D. El ATC se utiliza para asegurar que los cambios al mapa de traducción de dirección que pueden violar las invariantes anteriores se pueden evitar. El mantenimiento de estas invariantes asegura que la entidad en cuestión no puede violar la política. Sin considerar que invariante ha sido impuesta, la verdad de la variante puede ser mantenida evaluando cada solicitud de acceso para determinar si la solicitud, en realidad se realiza, puede dar como resultado un estado bajo el cual la invariante continua siendo soportada. Si el estado resultante puede satisfacer la invariante, entonces la solicitud es realizada. Sin embargo, si la invariante falla, entonces existen por lo menos dos opciones: - (1 ) negar la solicitud; o - (2) modificar la solicitud a una forma que continuará satisfaciendo la invariante.
La opción (1) tiene la desventaja que, en la práctica, un gran número de solicitudes de acceso necesita ser negado, lo cual daña o interrumpe el funcionamiento de un sistema de computadora. Con la opción (2), sin embargo, un objeto de software escribirá un valor en una ubicación de almacenamiento, y la ubicación de almacenamiento puede finalizar almacenando un valor modificado que es diferente del valor que el objeto de software cree que escribió; como se observó previamente, el funcionamiento correcto del software (por ejemplo, verificación de suma de verificación) puede depender de la memoria que almacena los valores reales que el software cree que escribió en la memoria, y de esta manera la opción (2) también puede interrumpir el funcionamiento del software. La invención dirige este problema almacenando múltiples versiones de una página. Una versión contiene los datos exactos que el programa cree que está escribiendo en la página. Otras opias de la página contienen versiones de los datos que, si se utilizan el procedimiento de traducción de dirección, ocasionarán que la condición invariante relevante sea mantenida.
Páginas Sombra De acuerdo con una característica de la invención, puede haber múltiples representaciones de una página. Las múltiples representaciones de la misma página aseguran que existe una versión de la página que contiene los datos que un programa en realidad escribe en la página, y otras versiones ("sombra") de la página que son seguras para utilizarse en el procedimiento de traducción de dirección como directorio de página y tablas de página. "Seguro de utilizarse", en este contexto, significa que el uso de una página sombra como un directorio (o tabla, como podría ser el caso) no ocasionará que la invariante aplicada por el sistema ATC sea violada. Preferiblemente, una página x dada, existe en tres versiones de esa página, las cuales deben ser denominadas como d(x), t(x) y m(x). d(x) es la versión de "directorio" de la página, es decir, la versión de la página que es adecuada para utilizarse como un directorio de página en el procedimiento de traducción de dirección descrito anteriormente. t(x) es la versión de la página que es segura para utilizarse como una tabla de página. m(x) es la versión de "memoria" de la página, es decir, la versión que contiene los datos reales que han sido escritos a la página por uno o más programas. En la descripción de la presente, el término "d(x)" puede referirse ya sea a los contenidos de la versión de directorio de la página x, o cualquiera del PFN en donde se almacena la versión de directorio de la página x. Asimismo, es para t(x) y m(x). Si los términos d(x), t(x) y m(x) se refieren a contenidos de una página, o su PFN, se eliminarán del contexto, o cualquier parte será específicamente indicada. La Figura 5 muestra como d(x), t(x) y m(x) se utilizan en el procedimiento de traducción de dirección. La Figura 5 se refiere a tres páginas, marcadas como x, y, y z (con los números de referencia 502, 504, 506, respectivamente). La página x es un directorio de página, la página y es una tabla de página, y la página z es una página de datos, Se debe observar que las páginas x, y, y z pueden jugar múltiples papeles. De esta manera, x puede funcionar ya sea como un directorio de una página o una página de datos, dependiendo de las circunstancias. La página y puede funcionar como una tabla de página en algunos contextos y un directorio de página en otros contextos. Sin embargo, se asume para el propósito de la Figura 5 que una dirección virtual particular está siendo traducida, y, para el propósito de ilustrar esa dirección, las páginas x, y, y z toman los papeles de página de directorio, de tabla y de datos, respectivamente. La página x existe en las versiones d(x), t(x) y m(x). Con el fin de traducir la dirección en cuestión, la versión de directorio de la página x (es decir, d(x)) es consultada. Como en un directorio, las entradas en x contienen los PFNs de las tablas de página objetivo, y la principal diferencia entre x y d(x) es que para cada objetivo t¡ en el directorio de página x, x contiene el PFN de t¡, mientras que d(x) contiene el PFN de t(t¡), en otras palabras, d(x) se modifica para señalar a las versiones de tabla de las páginas objetivo en lugar de las versiones originales de esas páginas. Cuando d(x) se consulta, la entrada relevante en d(x) (es decir, la entrada indicada por la porción de desplazamiento de directorio de la dirección virtual, elemento 211 en la Figura 2) señala a la página t(y). La página t(y) después es consultada para localizar una página de datos particular. Las entradas en t(y) contienen los PFNs de páginas de datos objetivo. La relación entre t(y) e y es análoga a la relación entre d(x) y x. Para cada páginas de datos d¡ referida por y, t(y) contiene el PFN de m(d¡) en lugar del PFN de d¡. (Sin embargo, se debe observar que el PFN de m(d¡) generalmente es igual como el PFN de d¡, ya que el almacenamiento de la versión de datos de una página en la ubicación original de la página generalmente es el uso más eficiente de memoria). Al utilizar el desplazamiento indicado por el campo de desplazamiento de tabla de la dirección virtual (por ejemplo, elemento 212 en la Figura 2), se localiza la entrada apropiada en la tabla t(y). Esa entrada se refiere al PFN de una página de datos particular, la cual, en este ejemplo es m(z). Después de que se identifica la página m(z), la unidad apropiada de datos en la página m(z) es accesada, basándose en el desplazamiento de página indicada en la dirección virtual (elemento 213 en la Figura 2). De esta manera, en un procedimiento de traducción de dirección convencional, la trayectoria hacia la página de datos conduce de la página x a la página y a la página z. Cuando se utilizan tablas de página sombra de acuerdo con la invención, la página de traducción conduce de la página d(x) a la página t(y) a la página m(z).
Creación de las Páginas d(x), t(x) y m(x) Las páginas d(x), t(x) y m(x) son creadas realizando transformaciones definidas en la página x. Lo siguiente es una descripción de una modalidad preferida de esas transformaciones. De preferencia, m(x) representa los datos reales que programas escriben en la página x, sin ningún tipo de modificación o filtración. En otras palabras, la transformación de x a m(x) es esencialmente la transformación de identidad. Preferiblemente, d(x) y t(x) son creados de acuerdo con las siguientes reglas. d(x) es igual que x, excepto para cada página t¡ referida como una entrada de la página x que está marcada como presente, la entrada correspondiente en d(x) se refiere al PFN de t(t¡) en lugar del PFN de t;. t(x) es igual que x, excepto que, para cada página d¡ denominada en una entrada de la página x que está marcada como presente, t(x) se refiere al PFN de m(d¡) en lugar del PFN de d¡. Además, si la página objetivo se puede leer, pero no se puede escribir de acuerdo con la política relevante, o si la página objetivo es un directorio de página o una tabla de página, entonces la entrada es marcada como sólo lectura. Los siguiente es una descripción más formal de cómo d(x) y t(x) son creados. Para el propósito de esta descripción, D1 es el grupo de PFNs que se pueden utilizar como directorios de página, y D2 es el grupo de PFNs que se pueden utilizar como tablas de página. La declaración D1.x significa que x es un miembro de D1, y D2.x significa que x es un miembro de D2. Dejar que M sea el mapa de memoria, como se puede ver por el objeto de software relevante en donde se refuerza un esquema de control de acceso de memoria. M.x.e se refieren ai valor almacenado en la entrada e de la página física cuyo PFN es x. R.x significa que x puede ser leído de acuerdo con la política relevante, y W.x significa que x puede ser escrita de acuerdo con la política relevante, m, t, d, y P son tal como lo siguiente sostiene ( en cada caso, dejar que v sea M.x.e., y dejar que D.x = D1.x V D2.x): - si -, R.x, m.x = t.x = d.x = no definido, en donde "no definido" es un pfn de una página que no está en la memoria física. - d.x = si D.1.x entonces x está no definida. D2.x = t.x = no definida - P.(m.x).e = v (es decir, en P, m.x se parecen exactamente a x en M) - d.x ? no definido => P.(d.x).e = si v presente entonces v [pfn - t.(v.pfm)], entonces v - t.x ? no definido = P.(t.x).e = si v presente entonces v [pfn -t.(v.pfm)], rw - (v.rw ? (R. (v.pfn) = W.(v.pfn)) ? -, D.(v.pfn))] entonces v. En otras palabras, la versión de directorio de x se ve justo como la versión de memoria de x, pero con los pfns redirigidos a las versiones de tabla; la versió'n de tabla de x se ve como la versión de memoria de x, pero con los pfns redirigos a versiones de lectura, y con los bits de lectura-escritura eliminados para objetivos que puedan ser leídos pero que no puedan ser escritos, o en D (o cualesquiera bits de solo lectura fijados para dichos objetivos, dependiendo si la representación de una entrada incluye un bit de lectura/escritura o un bit de solo lectura). Observar que para los directorios, se mantiene la versión de directorio de x en x, pero para tablas, se mantiene la versión de lectura de x en x para reducir al mínimo el costo de la remoción de x de D2 (por ejemplo, para descargar al disco). Si las versiones suceden para mantener los mismos datos (por ejemplo, para directorios y tablas que pueden permitir ATC), comparten la misma página física, de manera que un objeto de software que trata de hacer escrituras que ATC podrían rechazar o modificar, no se necesita crear ninguna página sombra. Las Figuras 6 y 7 muestran procedimientos ilustrativos para crear d(x) y t(x), respectivamente. Haciendo referencia ahora a la Figura 16, se asume que hay una página x es parte de un mapa (es decir, el mapa M, como se describe anteriormente), y se desea crear la página de (x) basándose en x. En primer lugar, se determina (602) si la página x se puede leer de acuerdo con la política relevante. Si x no se puede leer, entonces d(x) queda indefinido (606), y el procedimiento termina. Si x se puede leer, entonces se determina (604) si x es un miembro de D1, es decir, si x ha sido designado como utilizable como un directorio de página. Si x no es un miembro de D1, entonces d(x) queda indefinido (606). Si x es un miembro de D1, entonces la página d(x) es creada, de manera que contiene el mismo contenido como la página x, excepto que los campos PFN en las entradas marcados como presentes son cambiados al punto de las versiones de tabla de sus objetivos. Este resultado puede ser logrado fijando n = 0 (607), y después, para un valor dado de n, determinar si la entrada n es x y está marcada en, presente (608). Si la entrada n en x no está marcada como presente, entonces la entrada n en d(x) puede fijarse igual a la entrada n en x (610). Si la entrada n en x está marcada como presente, entonces la entrada n en d(x) se fija igual a la entrada n en x, excepto que el campo PFN es cambiado en el punto a la versión de tabla (612), es decir, si P.n.pfn se refiere al campo PFN de la página P, y si v tiene el significado descrito anteriormente, entonces d(x).n.pfn = t(v.pfn). Después de que la entrada n en d(x) ha sido fijada, n se incrementa (614), y el procedimiento regresa a 608 para fijar la siguiente entrada. Haciendo referencia ahora a la Figura 7, otra vez se asume que existe una página x que es parte de un mapa, y que se desea crear la página t(x). Inicialmente, se determina (702) si x se puede leer de acuerdo con la política relevante. Si x no se puede leer, entonces t(x) se fija a un valor indefinido (706), y el procedimiento termina. Si x se puede leer de acuerdo con la política, entonces se determina (704) si x es un miembro de D2. Si x no es un miembro de D2, entonces t(x) se fija a un valor indefinido (706). Si x.es un miembro de D2, entonces la página d(x) es creada, de manera que los valores en las entradas son iguales a aquellos en x, excepto que los PFNs de las páginas marcadas como presentes se ajustan de manera que señalan a la versión de memoria de la página objetivo, y se ajustan ciertos enlaces de lectura/escritura para hacerlos de solo lectura. Con el fin de crear este contenido para la página t(x), inicialmente un contador n se fija en cero (708). Después determina que la entrada n en la página x está marcada como presente. Si la entrada no está marcada como presente, entonces ia entrada n en t(x) se fija igual a la entrada n en x (712). Si la página n está marcada como presente, entonces la entrada n en la página t(x) es igual a la entrada n en x, excepto que el campo PFN de la entrada se fija para señalar hacia la versión de memoria de la página objetivo (714), es decir, si la página objetivo de la entrada n en x tiene PFN = A, entonces el campo PFN en la entrada n en t(x) se fija igual a m (A). (Como se, observó anteriormente, el PFN de m (A) por lo regular es igual al PFN de A). Después, se determina (716) si la página objetivo de la entrada n es una página que puede ser leída pero que no puede escribirse de acuerdo con la política relevante. Si la página objetivo se puede leer pero no se puede escribir, entonces la entrada n en t(x) es marcada como solo lectura (720). De otra manera, se determina (718) si la página objetivo de la entrada n en x es un miembro de D1 o D2. Si es así, entonces la entrada n en t(x) es marcada como sólo lectura (720). El contador n después es incrementado (722) y el procedimiento regresa a 714 para crear la siguiente entrada en t(x).
Almacenamiento de Páginas Sombra Es posible almacenar tres copias de cada página (es decir, d(x), t(x), y m(x), aunque existen ciertas optimizaciones que permiten que las páginas sean representadas más eficientemente. En primer lugar, una página sombra no necesita ser creada si los algoritmos escritos anteriormente pueden dar como resultado la creación de una página sombra que es idéntica a una versión que ya se almacenó. De esta manera, para la mayoría de las páginas, solamente se necesitará almacenar una versión de la página, en cuyo caso, para dicha página x, los PFNs de d(x), t(x), y m(x) todos son iguales. En segundo lugar, para todas páginas distintas a los directorios, se prefiere que la copia original de la página x sirva como la versión de datos de la página. De esta manera, para las páginas que no son de directorio (es decir, las páginas cuyo número de marco no es un miembro de D1), el PFN de m(x) es igual al PFN de x; las versiones de directorio y de tabla de x podrían ser almacenadas en cualquier parte. En el caso de páginas de directorio, sin embargo, se prefiere (y, en algunos casos, es necesario) que la ubicación original de la página sierva como la versión de directorio de la página. Ya que el grupo D1 se define en términos de los PFNs de las páginas que se les permite que sirvan como directorios (por ejemplo, en el procesador INTEL x86, aquellas páginas cuyos PFNs pueden ser cargados en CR3), no es práctico mover la versión de directorio a otro PFN: ya que CR3 necesita ser cargado por un objeto de software que puede no estar al pendiente de la existencia de páginas sombra (por ejemplo, CR3 puede ser cargado por un sistema operativo cuyo acceso de memoria está siendo restringido por un sistema de ATC), las páginas de directorio pueden necesitar ser ubicadas en los PFNs en donde el objeto de software cree que aquellas páginas están ubicadas.
Utilización de Páginas Sombra con Páginas Grandes Como se discutió anteriormente, el procesador INTEL x86 (así como varios otros procesadores) soporta el uso de páginas grandes, en cuyo caso, no está involucrada ninguna tabla de página en la traducción de una dirección virtual a una dirección física. Con el fin de trabajar con páginas grandes en el mecanismo de sombra descrito anteriormente, se puede crear una tabla de página de sombra para una página grande, aunque esta tabla de página sombra no corresponda a ninguna tabla de página real. De esta manera, cuando un directorio de página x contiene un enlace grande, la versión de directorio de esa página (es decir, d(x)) puede ser creada y que contenga un enlace pequeño en la entrada que corresponda al enlace grande de x. Este enlace pequeño señala a una tabla de página sombra (es decir, t(x)), que contienen enlaces a las páginas pequeñas individuales que forman una página grande. Ya que parte del algoritmo de sombra descrito anteriormente involucra hacer ciertas páginas como sólo de lectura, la ruptura de una página grande a páginas pequeñas evita tener que marcar toda la página grande como una página de solo lectura. Las páginas pequeñas individuales que son parte de la página grande pueden ser marcadas como solo lectura si es necesario. (La desventaja para hacer una página grande como sólo lectura es que cada solicitud de escritura para dicha página podría genera una sección y podría tener que ser evaluada por un componente más privilegiado (por ejemplo, el componente que realiza ATC) para determinar si la escritura puede presentar sin violar la invariante aplicable. La solicitud de cada solicitud de escritura para una página grande que será tratada de esta manera, puede degradar significativamente el funcionamiento del sistema). Se puede observar que los ejemplos anteriores han sido provistos meramente con el propósito de explicar y de ninguna manera están construidos como limitantes de la presente invención. Aunque la invención ha sido descrita con referencia a varias modalidades, se entiende que las palabras que han sido utilizadas aquí son palabras de descripción e ilustración, en lugar de palabras de limitación. Además, aunque la invención ha sido descrita con referencia a medios particulares, materiales y modalidades, la invención no pretende ser limitada a los particulares aquí descritos; más bien, la invención se extiende a todas ias estructuras, métodos y usos funcionalmente equivalentes, que estén dentro del alcance de las reivindicaciones anexas. Aquellos expertos en la técnica que tienen el beneficio de las enseñanzas de esta especificación pueden efectuar numerosas modificaciones en la misma y se pueden hacer cambios sin apartarse del apartarse del alcance y espíritu de la invención en sus aspectos.

Claims (24)

REIVINDICACIONES
1.- Un medio legible por computadora que tiene instrucciones ejecutables por computadora en el mismo codificadas para realizar un método para crear páginas sombra para un mapa de traducción de dirección, el mapa de traducción de dirección comprende un directorio de página y una pluralidad de tablas de página, el directorio de página comprende enlaces a la pluralidad de tablas de página, cada una de las tablas de página comprendiendo enlaces a una pluralidad de páginas de datos, el directorio de página y las tablas de página cada una siendo almacenadas en una de las páginas de datos, el método comprende: para por lo menos una de la pluralidad de tablas de página, crear una primera tabla de página sombra basándose en una de la pluralidad de tablas de página, la primera tabla de página sombra difiere de la primera de la pluralidad de las tablas de página en por lo menos uno de los siguientes aspectos: por lo menos una entrada en la primera tabla de página sombra se enlaza a una página de datos diferente que aquella del enlace que corresponde a una entrada en la primera de una pluralidad de tablas de página; y la primera tabla de página sombra contiene uno o más enlaces de solo lectura cuyos enlaces correspondientes en la primera de la pluralidad de tablas de página se leen/escriben; y crear un directorio de página sombra basándose en el directorio de página, ei directorio de página comprendiendo un enlace a una de la pluralidad de tablas de página, el directorio de página sombra comprendiendo un enlace a la tabla de página sombra en lugar del enlace a una de la pluralidad de tablas de página.
2.- El medio legible por computadora de acuerdo con la reivindicación 1, en donde una política gobierna el acceso a una memoria, en donde el acceso a dicha memoria se basa en el mapa de traducción de dirección aplicado a la dirección virtual dando como resultado la violación de dicha política, y en donde el acceso a la memoria basándose en el directorio de página sombra y la primera tabla de página sombra siendo aplicada a la dirección virtual que no da como resultado la violación de dicha política.
3. - El medio legible por computadora de acuerdo con la reivindicación 1, en donde cada una de las páginas de datos se almacena en un marco particular de la memoria, en donde el directorio de página se almacena en un primer marco, y en donde el método además comprende: mantener una copia del directorio de página en un segundo marco diferente del primer marco; y almacenar el directorio de página sombra en el primer marco.
4. - El medio legible por computadora de acuerdo con la reivindicación 1, en donde el directorio de página comprende un enlace a una primera página dimensionada, la primera página dimensionada comprende una pluralidad de segundas páginas dimensionadas, y en donde el método además comprende: crear una segunda tabla de página sombra que comprende enlaces a la pluralidad de segundas páginas dimensionadas, en donde el directorio de página sombra comprende un enlace a la segunda tabla de página sombra.
5.- Un sistema para manejar el uso de una memoria, que comprende: una memoria que comprende una pluralidad de componentes individualmente dirigibles que pueden ser leídos y escritos, cada uno de los componentes individualmente dirigibles teniendo una dirección física asociada con los mismos; una estructura de datos de traducción de dirección que define un mapeo entre direcciones virtuales y las direcciones físicas de los componentes individualmente dirigibles; un administrador de memoria que recibe una solicitud para tener acceso a un primer componente individualmente dirigible, dicha solicitud identificando al primero de los componentes individualmente dirigibles basándose en una dirección virtual, y el administrador de memoria traduciendo la dirección virtual a la dirección física del primero de los componentes individualmente accesibles basándose en los datos que comprenden una representación sombra de la estructura de traducción de dirección.
6.- El sistema de acuerdo con la reivindicación 5, en donde la memoria está organizada en una pluralidad de páginas, el primero de los componentes individualmente dirigibles estando ubicado dentro de una de la pluralidad de páginas, en donde la estructura de traducción de dirección comprende: (1) una pluralidad de tablas de página que contiene enlaces para la pluralidad de páginas, y (2) un directorio de página que contiene enlaces a la pluralidad de tablas de página, y en donde la representación sombra de la estructura de traducción de dirección difiere de la estructura de traducción de dirección con respecto a por lo menos un enlace.
7. - El sistema de acuerdo con la reivindicación 6, en donde cada uno de los enlaces contenidos en el directorio de página y las tablas de página contiene uno o más atributos, en donde por lo menos un enlace en la representación sombra difiere de un enlace correspondiente en la estructura de traducción de dirección con respecto a por lo menos un atributo.
8. - El sistema de acuerdo con la reivindicación 6, en donde el directorio de página y cada una de las tablas de página se almacenan en una de la pluralidad de páginas, cada una de las páginas teniendo un descriptor de ubicación física asociado con la misma, cada uno de los enlaces en el directorio de página y las tablas de página identificando una de las páginas basándose en el descriptor de ubicación física.
9.- El sistema de acuerdo con la reivindicación 8, en donde la representación sombra incluye una versión alternativa de por lo menos una de directorio de página o una de las tablas de página, y en donde la versión alternativa se almacena en una página que tiene un descriptor de ubicación físico diferente de la página en donde se basa la versión alternativa.
10.- El sistema de acuerdo con la reivindicación 5, en donde una política gobierna la capacidad de acceso de la memoria, en donde la estructura de traducción de dirección, expone la memoria a violación de la política, y en donde el sistema además comprende: un administrador de control de acceso de memoria que crea la representación sombra basándose en la estructura de traducción de dirección y asegura que la representación sombra, si se utiliza para accesar a la memoria basándose en direcciones virtuales, no da como resultado la violación de la política.
11.- El sistema de acuerdo con la reivindicación 10, en donde la política define una porción de la memoria como inaccesible, y en donde el administrador de control de acceso de memoria asegura que la representación sombra no expone una dirección virtual para dicha porción de la memoria.
12.- El sistema de acuerdo con la reivindicación 10, en donde la política define una porción de la memoria como siendo legible pero no escribible, y en donde el administrador de control de acceso de memoria asegura que la representación sombra contiene uno o más atributos que marcan la porción de memoria como siendo solo lectura.
13.- El sistema de acuerdo con la reivindicación 10, en donde el administrador de control de acceso de memoria asegura que la representación sombra contiene uno o más atributos que marcan como solo lectura aquellas porciones de la memoria que almacenan por lo menos uno de: (1) la estructura de traducción de dirección; y (2) la representación sombra.
14. - Un método para ejecutar una solicitud de acceso de memoria que comprende: recibir una solicitud para leer o escribir una unidad de una memoria, la solicitud identificando la unidad de la memoria basándose en una dirección virtual; accesar dicha unidad de memoria basándose en una representación de un mapa que define una relación entre direcciones virtuales y direcciones físicas, el mapa estando almacenado en una o más páginas de la memoria, la representación del mapa comprendiendo por lo menos una página sombra que se basa en una primera de las páginas, el mapa incluyendo por lo menos un aspecto que, si se utiliza para tener acceso a la memoria basándose en la dirección virtual, podría dar como resultado la violación de una política de acceso de memoria, dicha página sombra difiere de la primera de una o más páginas en tal forma que utiliza la representación del mapa para tener acceso a la memoria basándose en la dirección virtual que ño viola la política de acceso de memoria; y realizar la lectura o escritura especificada en la solicitud de acceso.
15. - El método de acuerdo con la reivindicación 14, en donde la política de acceso de memoria define una porción de la memoria como siendo inaccesible, en donde el mapa expone enlaces que se pueden escribir a porciones de la memoria que definen mapeos de dirección virtual, y en donde la representación del mapa no expone enlaces que se pueden escribir a porciones de la memoria que definen mapeos de dirección virtual.
16. - El método de acuerdo con la reivindicación 14, en donde el mapa comprende: (1) una pluralidad de tablas que contienen enlaces para un grupo de una o más páginas, y (2) un directorio que contiene enlaces para la pluralidad de tablas, por lo menos una página sombra comprendiendo un directorio sombra que difiere del directorio en por lo menos el aspecto de que por lo menos un enlace en el directorio sombra señala a una tabla de página sombra en lugar de una de la pluralidad de tablas.
17. - El método de acuerdo con la reivindicación 14, en donde el mapa comprende una pluralidad de tablas que contienen enlaces para un grupo de una o más páginas, en donde la página sombra comprende una representación basada en una de las tablas, y en donde la página sombra contiene una representación de un primer enlace que existe en una de las tablas, en donde el primer enlace es un enlace de lectura/escritura en una de las tablas, y en donde la página sombra difiere de una de las tablas en que la representación de la página sombra de dicho primer enlace está marcada como solo lectura.
18. - El método de acuerdo con la reivindicación 14, en donde la página sombra contiene un directorio, en donde la unidad de memoria es abarcada por una primera página dimensionada que comprende una pluralidad de segundas páginas dimensionadas, en donde el mapa comprende un directorio que contiene un enlace a la primera página dimensionada, en donde la página sombra se basa en el directorio, y en donde la página sombra difiere del directorio en que la página sombra contiene un enlace para una tabla en lugar de un enlace para una primera página dimensionada, en donde la tabla contiene enlaces a las segundas páginas dimensionadas que están incluidas dentro de la primera página dimensionada.
19.- El medio legible por computadora que tiene codificada en el mismo una estructura de datos que es representativa de un mapa de traducción de dirección, el mapa de traducción de dirección comprende un directorio de página, el directorio comprende enlaces a una pluralidad de tablas de página, cada una de las tablas de página estando almacenada en un marco particular dentro del medio legible por computadora, cada una de las tablas de página comprendiendo enlaces a una pluralidad de páginas del medio legible por computadora, la estructura de datos comprende: una tabla de página sombra que se basa en una primera de la pluralidad de tablas de página; un directorio de página sombra que se basa en el directorio de página, el directorio de página comprende una primera entrada que contiene un enlace a la primera de la pluralidad de tablas de página, la tabla de página sombra comprendiendo una segunda entrada que corresponde a la primera entrada, la segunda entra'da contiene un enlace a la tabla de página sombra en lugar de un enlace a la primera de la pluralidad de tablas de página.
20. - El medio legible por computadora de acuerdo con la reivindicación 19, en donde la primera de la pluralidad de tablas de página se almacena en un primer marco, en donde la tabla de página sombra se almacena en un segundo marco, y en donde el directorio de página sombra difiere del directorio de página con respecto a que un enlace en el directorio de página contiene un identificador dei primer marco y el enlace correspondiente en el directorio de página sombra contiene un identificador del segundo marco.
21. - Ei medio legible por computadora de acuerdo con la reivindicación 19, en donde la primera de la pluralidad de tablas de página contiene un enlace a una primera de las páginas, en donde la tabla de página sombra contiene un enlace a una representación basándose en la primera de las páginas en lugar del enlace a la primera de las páginas, la representación basándose en la primera de las páginas que está almacenada en un marco diferente de la primera de las páginas.
22. - El medio legible por computadora de acuerdo con la reivindicación 21, en donde la primera de la pluralidad de páginas almacena ya sea el directorio de página o la primera de la pluralidad de tablas de página.
23. - El medio legible por computadora de acuerdo con la reivindicación 22, en donde la primera de la pluralidad de tablas de página contiene un enlace que especifica la primera de la pluralidad de páginas como siendo legible y escribible, y en donde el enlace correspondiente en la tabla de página sombra especifica la primera de la pluralidad de páginas como siendo sólo legible.
24.- El medio legible por computadora de acuerdo con la reivindicación 19, en donde el directorio de página en la primera de la pluralidad de tablas de página contiene por lo menos una característica, de manera que, si se utiliza para tener acceso a una memoria basándose en una dirección virtual podría dar como resultado una violación de una política de acceso de memoria, y en donde el directorio de página sombra y la tabla de página sombra contienen datos de manera que tienen acceso a la memoria a través del directorio de página sombra y de la tabla de página sombra basándose en la dirección virtual y no da como resultado la violación de dicha política de acceso de memoria.
MXPA04009350A 2003-10-30 2004-09-24 Tablas de pagina sombra para el cotnrol de traduccion de direccion. MXPA04009350A (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/697,197 US7310721B2 (en) 2003-10-30 2003-10-30 Shadow page tables for address translation control

Publications (1)

Publication Number Publication Date
MXPA04009350A true MXPA04009350A (es) 2005-05-04

Family

ID=34423388

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA04009350A MXPA04009350A (es) 2003-10-30 2004-09-24 Tablas de pagina sombra para el cotnrol de traduccion de direccion.

Country Status (10)

Country Link
US (1) US7310721B2 (es)
EP (1) EP1528474B1 (es)
JP (1) JP4928721B2 (es)
KR (1) KR101150079B1 (es)
CN (1) CN1612112B (es)
AU (1) AU2004218602B2 (es)
BR (1) BRPI0404279A (es)
CA (1) CA2482872C (es)
MX (1) MXPA04009350A (es)
RU (1) RU2373566C2 (es)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430570B1 (en) 2003-04-28 2008-09-30 Ibrix, Inc. Shadow directory structure in a distributed segmented file system
WO2004107130A2 (en) * 2003-05-28 2004-12-09 Caymas Systems, Inc. Multilayer access control security system
TWI249670B (en) * 2004-04-29 2006-02-21 Mediatek Inc System and method capable of sequentially writing a flash memory
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7721094B2 (en) * 2005-05-06 2010-05-18 Microsoft Corporation Systems and methods for determining if applications executing on a computer system are trusted
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
EP1883865A4 (en) * 2005-05-24 2010-12-15 Marathon Techn Corp FAULT TOLERANT COMPUTER SYSTEM WITH SYMMETRIC MULTIPROCESSOR
US7657725B2 (en) 2005-06-24 2010-02-02 Sigmatel, Inc. Integrated circuit with memory-less page table
US7814287B2 (en) * 2005-07-15 2010-10-12 Xensource, Inc. Using writeable page tables for memory address translation in a hypervisor environment
US7681200B2 (en) * 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
CA2632235A1 (en) * 2005-12-02 2007-06-07 Citrix Systems, Inc. Method and apparatus for providing authentication credentials from a proxy server to a virtualized computing environment to access a remote resource
WO2008011030A2 (en) * 2006-07-17 2008-01-24 Xensource, Inc Tracking current time on multiprocessor hosts and virtual machines
US7739466B2 (en) * 2006-08-11 2010-06-15 Intel Corporation Method and apparatus for supporting immutable memory
GB2442495B (en) * 2006-10-02 2009-04-01 Transitive Ltd Method and apparatus for handling dynamically linked function cells with respect to program code conversion
US7885932B2 (en) * 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units
US7865589B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance
US7853678B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7870277B2 (en) 2007-03-12 2011-01-11 Citrix Systems, Inc. Systems and methods for using object oriented expressions to configure application security policies
US7853679B2 (en) 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
JP4897578B2 (ja) * 2007-06-06 2012-03-14 株式会社日立製作所 仮想計算機の制御プログラムおよび仮想計算機システム
JP5260081B2 (ja) 2008-02-25 2013-08-14 パナソニック株式会社 情報処理装置及びその制御方法
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8024546B2 (en) * 2008-10-23 2011-09-20 Microsoft Corporation Opportunistic page largification
US8301863B2 (en) * 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US8135937B2 (en) * 2008-11-17 2012-03-13 International Business Machines Corporation Logical partition memory
US10255463B2 (en) 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
US8225069B2 (en) 2009-03-31 2012-07-17 Intel Corporation Control of on-die system fabric blocks
US20100262722A1 (en) * 2009-04-10 2010-10-14 Christophe Vauthier Dynamic Assignment of Graphics Processing Unit to a Virtual Machine
JP4915756B2 (ja) * 2009-12-16 2012-04-11 インターナショナル・ビジネス・マシーンズ・コーポレーション アドレス変換を高速化する方法及びシステム
US8812907B1 (en) 2010-07-19 2014-08-19 Marathon Technologies Corporation Fault tolerant computing systems using checkpoints
US8954697B2 (en) * 2010-08-05 2015-02-10 Red Hat, Inc. Access to shared memory segments by multiple application processes
US8364932B2 (en) * 2010-10-29 2013-01-29 Vmware, Inc. System and method to prioritize large memory page allocation in virtualized systems
US9606936B2 (en) * 2010-12-16 2017-03-28 Advanced Micro Devices, Inc. Generalized control registers
US20130013605A1 (en) 2011-07-08 2013-01-10 Stanfill Craig W Managing Storage of Data for Range-Based Searching
WO2013048943A1 (en) 2011-09-30 2013-04-04 Intel Corporation Active state power management (aspm) to reduce power consumption by pci express components
US9135161B2 (en) 2012-06-12 2015-09-15 International Business Machines Corporation Flash translation layer system for maintaining data versions in solid state memory
US9122581B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation Data versioning in solid state memory
US9122582B2 (en) * 2012-06-12 2015-09-01 International Business Machines Corporation File system for maintaining data versions in solid state memory
US9116793B2 (en) * 2012-06-12 2015-08-25 International Business Machines Corporation Maintaining versions of data in solid state memory
US9798695B2 (en) * 2012-08-07 2017-10-24 Nokia Technologies Oy Access control for wireless memory
US9251002B2 (en) 2013-01-15 2016-02-02 Stratus Technologies Bermuda Ltd. System and method for writing checkpointing data
US9436844B2 (en) 2013-08-29 2016-09-06 Microsoft Technology Licensing, Llc Access enablement security circuit
US9716708B2 (en) 2013-09-13 2017-07-25 Microsoft Technology Licensing, Llc Security certificates for system-on-chip security
WO2015102875A1 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Checkpointing systems and methods of using data forwarding
JP6518672B2 (ja) 2013-12-30 2019-05-22 ストラタス・テクノロジーズ・バミューダ・リミテッド 動的チェックポインティングシステムおよび方法
EP3090345B1 (en) 2013-12-30 2017-11-08 Stratus Technologies Bermuda Ltd. Method of delaying checkpoints by inspecting network packets
US9805194B2 (en) 2015-03-27 2017-10-31 Intel Corporation Memory scanning methods and apparatus
US9836410B2 (en) * 2015-04-15 2017-12-05 Qualcomm Incorporated Burst translation look-aside buffer
US10387325B2 (en) 2017-11-28 2019-08-20 International Business Machines Corporation Dynamic address translation for a virtual machine
CN109388524B (zh) * 2018-10-09 2021-10-01 郑州云海信息技术有限公司 虚拟磁盘格式的寻址方法和计算机可读存储介质
CN111290714B (zh) * 2020-02-06 2023-09-05 北京百度网讯科技有限公司 数据读取方法和装置
CN112988508B (zh) * 2021-03-04 2022-03-18 浙江中控研究院有限公司 一种基于内存隔离的可信plc嵌入式系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6299844A (ja) * 1985-10-28 1987-05-09 Hitachi Ltd アドレス変換装置
JP3102495B2 (ja) * 1989-12-28 2000-10-23 株式会社日立製作所 仮想記憶管理方法
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
DE69638018D1 (de) * 1995-02-13 2009-10-15 Intertrust Tech Corp Systeme und Verfahren zur Verwaltung von gesicherten Transaktionen und zum Schutz von elektronischen Rechten
US5960463A (en) * 1996-05-16 1999-09-28 Advanced Micro Devices, Inc. Cache controller with table walk logic tightly coupled to second level access logic
JPH10312338A (ja) * 1997-05-13 1998-11-24 Toshiba Corp メモリ制御装置、及びメモリ制御方法
US6105103A (en) * 1997-12-19 2000-08-15 Lsi Logic Corporation Method for mapping in dynamically addressed storage subsystems
US6233668B1 (en) * 1999-10-27 2001-05-15 Compaq Computer Corporation Concurrent page tables
US6889296B2 (en) 2001-02-20 2005-05-03 International Business Machines Corporation Memory management method for preventing an operating system from writing into user memory space
JP2003256278A (ja) * 2002-02-28 2003-09-10 Hitachi Ltd 情報保護方法及びその実施装置並びにその処理プログラム
US7003702B2 (en) * 2002-03-18 2006-02-21 Emc Corporation End-to-end checksumming for read operations
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US7565509B2 (en) * 2002-04-17 2009-07-21 Microsoft Corporation Using limits on address translation to control access to an addressable entity
US7478235B2 (en) * 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems

Also Published As

Publication number Publication date
AU2004218602A8 (en) 2010-01-07
CN1612112A (zh) 2005-05-04
RU2004131609A (ru) 2006-04-10
EP1528474B1 (en) 2017-11-15
CN1612112B (zh) 2011-09-28
CA2482872A1 (en) 2005-04-30
US20050097298A1 (en) 2005-05-05
RU2373566C2 (ru) 2009-11-20
AU2004218602B2 (en) 2010-01-21
EP1528474A3 (en) 2008-07-02
CA2482872C (en) 2013-07-30
EP1528474A2 (en) 2005-05-04
KR20050041868A (ko) 2005-05-04
JP2005135396A (ja) 2005-05-26
JP4928721B2 (ja) 2012-05-09
BRPI0404279A (pt) 2005-06-21
AU2004218602A1 (en) 2005-05-19
KR101150079B1 (ko) 2012-06-01
US7310721B2 (en) 2007-12-18

Similar Documents

Publication Publication Date Title
MXPA04009350A (es) Tablas de pagina sombra para el cotnrol de traduccion de direccion.
US5809546A (en) Method for managing I/O buffers in shared storage by structuring buffer table having entries including storage keys for controlling accesses to the buffers
EP1536341B1 (en) Lazy flushing of translation lookaside buffers
KR100975981B1 (ko) 보안 실행 모드 하에서 보안 커넬을 사용하는 트러스트된클라이언트
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
JP4672281B2 (ja) 最適化を用いたメモリアクセス制御の実装
US8954695B1 (en) Secure pool memory management
US7058768B2 (en) Memory isolation through address translation data edit control
US5390310A (en) Memory management unit having cross-domain control
US6745306B1 (en) Method and system for restricting the load of physical address translations of virtual addresses
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
US5724551A (en) Method for managing I/O buffers in shared storage by structuring buffer table having entries include storage keys for controlling accesses to the buffers
US5900019A (en) Apparatus for protecting memory storage blocks from I/O accesses
US5787309A (en) Apparatus for protecting storage blocks from being accessed by unwanted I/O programs using I/O program keys and I/O storage keys having M number of bits
KR101460451B1 (ko) 프로세스 주소 공간을 제어하는 장치 및 방법
US5802397A (en) System for storage protection from unintended I/O access using I/O protection key by providing no control by I/O key entries over access by CP entity
US5873128A (en) Data processing system with dynamic address translation function
CN115238297B (zh) 多层级权限控制内存保护方法和装置
KR20240045550A (ko) 데이터 보호 시스템
Bartelma Simple Sharing and Enforced Modularity Access Control in a Segmented Memory System

Legal Events

Date Code Title Description
FG Grant or registration