MXPA04004145A - Implementacion del control de acceso de la memoria utilizando optimizaciones. - Google Patents
Implementacion del control de acceso de la memoria utilizando optimizaciones.Info
- Publication number
- MXPA04004145A MXPA04004145A MXPA04004145A MXPA04004145A MXPA04004145A MX PA04004145 A MXPA04004145 A MX PA04004145A MX PA04004145 A MXPA04004145 A MX PA04004145A MX PA04004145 A MXPA04004145 A MX PA04004145A MX PA04004145 A MXPA04004145 A MX PA04004145A
- Authority
- MX
- Mexico
- Prior art keywords
- request
- page
- memory
- group
- address translation
- Prior art date
Links
- 238000005457 optimization Methods 0.000 title 1
- 238000013519 translation Methods 0.000 claims abstract description 71
- 230000008859 change Effects 0.000 claims abstract description 16
- 238000011156 evaluation Methods 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 50
- 230000009471 action Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 21
- 239000004020 conductor Substances 0.000 description 13
- 238000013507 mapping Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detergent Compositions (AREA)
Abstract
Se describen mecanismos que pueden permitir que ciertos algoritmos control de acceso a la memoria se implementen eficientemente. Cuando el control de acceso a la memoria esta basado en controlar los cambios a un mapa de traduccion de direcciones (o grupo de mapas), puede ser necesario determinar si un cambio de mapa particular permitira a la memoria ser accedida en una manera no permisible. Ciertos datos acerca del mapa pueden ser copiados en la memoria cache para permitir que la determinacion se haga mas eficientemente que realizar una evaluacion del mapa completo.
Description
IMPLEMENTACION DEL CONTROL DE ACCESO DE LA MEMORIA UTILIZANDO OPTIMIZACIONES
REFERENCIA CRUZADA CON CASOS RELACIONOOS
Esta solicitud reclama el beneficio de la Solicitud Provisional de E.U.A. No. 60/467,343, titulada "Técnicas para la Implementación Eficiente de Control al Acceso de la Memoria", presentada el 2 de Mayo del 2003.
CAMPO DE LA INVENCION
La presente invención se refiere en general al campo de la seguridad en las computadoras. Más específicamente, la invención se refiere a las técnicas eficientes para implementar una memoria aislada o "disimulada con cortinas" que utiliza un control de traducción de direcciones.
ANTECEDENTES DE LA INVENCION
En algunas circunstancias, es deseable tener una porción aislada o "disimulada con cortinas" de memoria, a la cual el acceso está restringido. Por ejemplo, una computadora puede corre dos sistemas operativos juntos, en donde un sistema operativo es seguro y el otro no !o es. En este caso, es deseable para un sistema operativo seguro tener una memoria disimulada con cortinas en la cual se pueda almacenar información que no puede ser accedida a través del sistema operativo no seguro. Una forma de implementar memoria disimulada con cortinas es a través del control de traducción de direcciones. Muchas computadoras modernas utilizan un sistema de memoria virtual, en el cual el software que corre en la computadora dirige la memoria utilizando direcciones virtuales, y una unidad de administración de memoria utiliza un grupo de mapas de traducción de direcciones para traducir las direcciones virtuales en las direcciones físicas. Típicamente, cada proceso tiene su propio mapa de traducción, por lo que el mapeo entre direcciones virtuales y físicas cambia de proceso a proceso. Es posible configurar un mapa de traducción de direcciones de un proceso dado de tal forma que el mapa del proceso no expone al proceso con ninguna dirección virtual para un bloque dado (por ejemplo, página) de la memoria física. De esta manera, al asegurar que solamente los procesos seguros tengan direcciones virtuales para un bloque dado de la memoria física, es posible implementar la memoria disimulada con cortinas controlando el contenido de los mapas de traducción de direcciones. Un problema que surge cuando dicho mecanismo se utiliza para implementar memoria disimulada con cortinas es que, ya que los mapas de traducción de direcciones se almacenan en la memoria, cada operación que escribe la memoria podría potencialmente afectar los mapas, y de esta manera podría causar que una dirección virtual para una memoria disimulada con cortinas fuera expuesta a un proceso que no debería tener acceso a la memoria disimulada con cortinas. Una forma de prevenir que dicha dirección virtual sea expuesta es verificar cada elemento de cada mapa cada vez que escribe una operación en la memoria es realizar con el fin de asegurar que ninguna página de la memoria disimulada con cortinas tenga una dirección virtual en el mapa de ningún proceso que podría no tener acceso a la memoria disimulada con cortinas. Sin embargo, dada la frecuencia de la escritura de operaciones, esta técnica es ineficiente. En vista de lo anteriormente mencionado, existe una necesidad de un mecanismo que supera los inconvenientes de la técnica anterior.
COMPENDIO DE LA INVENCION
La presente invención proporciona mecanismos para eficientemente controlar cambios a los mapas de traducción de direcciones. La memoria disimulada con cortinas puede ser implementada previniendo a los mapas de traducción de direcciones entrar a un estado en el cual una dirección virtual para un bloque de memoria disimulada con cortinas podría exponerse a un proceso (u otra entidad) que no tiene permiso para acceder la memoria disimulada con cortinas. Una "política" define que las operaciones de acceso a la memoria están permitidas, y un sistema de control de acceso a la memoria puede operar prohibiendo al mapa de traducción de direcciones de entrar ningún estado que viole la política. Los estados en los cuales dichas direcciones virtuales podrían estar expuestos pueden por lo general ser definidas con base en la intersección (o no intersección) de dos o más grupos que satisfacen una cierta propiedad, o número de páginas que satisfacen una cierta propiedad. La identidad de las páginas que son miembros de un grupo definido pueden ser almacenadas o creadas en copia caché, para que la membresía del grupo no tenga que ser calculada cada vez que una operación de escritura es realizada que pueda cambiar el estado de los mapas de traducción de direcciones. La identidad de las páginas en un grupo puede ser almacenada, por ejemplo, como un vector de bit, y grupo de operaciones tales como unión, intersección, etc., pueden ser realizadas eficientemente en dichos vectores de bit. En algunos casos, el grupo exacto que satisface una propiedad particular puede ser difícil de calcular, pero puede ser matemáticamente probable que cumpla con la política que puede ser asegurada utilizando subgrupos bien definidos o súper grupos como un Proxy para el grupo actual. Si el subgrupo o supergrupo es relativamente más fácil de calcular que el grupo actual, entonces el subgrupo o supergrupo puede ser utilizado en lugar del grupo actual.
Adicionalmente, la permisibilidad de algunas operaciones de escritura pueden ser definidas en términos de un conteo de algunas estadísticas, por ejemplo, el número de páginas que satisfacen una cierta propiedad, el número de referencias para una página dada, etc. Dichas estadísticas pueden ser efectivamente almacenadas o creadas en copia caché como un contador de referencia, el cual puede ser actualizado a través de operaciones de incremento o decremento. Los vectores de bits o contadores pueden ser actualizados cada vez que un mapa cambia su estado, y después utilizado eficientemente para evaluar una operación de acceso a la memoria bajo la política. Otras características de la invención se describirán más adelante.
BREVE DESCRIPCION DE LOS DIBUJOS
El compendio anterior, así como la siguiente descripción detallada de las modalidades preferidas, se entiende mejor cuando se leen en conjunción con los dibujos anexos. Para el propósito de ilustrar la invención, se muestran en los dibujos construcciones ilustrativas de la invención; sin embargo, la invención no está limitada a los métodos y medios descritos. En los dibujos: La Figura 1 es un diagrama de bloque de un ambiente de computación en el cual los aspectos de la invención pueden ser implementados. La Figura 2 es un diagrama de bloque de un sistema de memoria que implementa las direcciones virtuales a través de un mapa de traducción de direcciones; La Figura 3 es un diagrama de bloque de un cuadro de página de ejemplo que tiene atributos; La Figura 4 es un diagrama de bloque de dos grupos no intersectados representando una condición que puede ser utilizada para implementar control de acceso a la memoria; La Figura 5 es un diagrama de bloque de una gráfica etiquetada dirigida, la cual es representativa de un mapa de traducción de direcciones; y La figura 6 es un diagrama de flujo de un proceso de control del acceso a la memoria.
DESCRIPCION DETALLADA DE LA INVENCION
Configuración de Computación Ilustrativa La Figura 1 muestra un ambiente de computación ilustrativo en el cual los aspectos de la invención pueden ser implementados. El ambiente del sistema de computación 100 es solamente un ejemplo de un ambiente de computación adecuado y no pretende sugerir ninguna limitación al alcance del uso o funcionalidad de la invención.
Tampoco debe el ambiente de computación 100 ser interpretado como teniendo ninguna dependencia o requerimiento relacionado a ningún o combinación de componentes ilustrados en el ambiente operativo ilustrativo 100. La invención es operacional con otros numerosos ambientes de sistemas de computación o configuraciones de propósito general o de propósito especial. Ejemplos de sistemas, ambientes y/o configuraciones de computación conocidos que pueden ser adecuados para uso con la invención incluyen, pero no se limitan a, computadoras personales, computadoras servidor, dispositivos portátiles, sistemas multiprocesador, sistemas basados en microprocesador, cajas encima del televisor, electrónicos de consumidor programables, PCs en red, minicomputadoras, computadoras de marco principal, sistemas embebidos, ambientes de computación distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares. La invención puede 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 computación distribuidos en donde las tareas se realizan a través de dispositivos de procesamiento remotos que están enlazados a través de una red de comunicaciones u otros medios de transmisión de datos. En un ambiente de computación distribuido, los módulos de programa y otros datos pueden estar localizados en ambos medios de almacenamiento por computadora, local y remoto incluyendo dispositivos de almacenamiento de memoria. Con referencia a la Figura 1, un sistema ilustrativo para implementar la invención incluye un dispositivo de computación de propósito general 110. Los componentes de la computadora 110 pueden incluir, pero no estar limitados a, una unidad de procesamiento 120, una memoria del sistema 130, y un conductor común del sistema 121 que acopla varios componentes del sistema incluyendo la memoria del sistema a la unidad de procesamiento 120. El conductor común del sistema 121 puede ser cualquiera de 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 estructuras de conductores comunes. A manera de ejemplo, y no limitación, dichas arquitecturas incluyen el conductor común de Arquitectura Estándar de la Industria (ISA), el conductor común de la Arquitectura del Canal Micro (MCA), el conductor común Mejorado ISA (EISA), el conductor común local de la Asociación de Estándares Electrónicos de Video (VESA), y el conductor común de Interconexión del Componente Periférico (PCI) (también conocido como conductor común Mezanine). La computadora 110 típicamente incluye una variedad de medios legibles por computadora. Los medios legibles por computadora pueden ser cualquier medio disponible que pueda ser accedido por la computadora 110 e incluye medios volátiles y no volátiles, medios removibles y no removibles. A manera de ejemplo, y no 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 ambos medios volátiles y no volátiles, removibles y no removibles, en cualquier método o tecnología para el almacenamiento de información, tal como instrucciones ejecutables 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 no volátil, u otra tecnología de memoria, CDROM, discos versátiles digitales (DVD) u otro almacenamiento en disco óptico, casetes magnéticos, cinta magnética, almacenamiento en disco magnético y otros dispositivos de almacenamiento magnético, o cualquier otro medio que puede ser utilizado para almacenar la información deseada y que puede ser accedida por la computadora 100. Los medios de comunicación típicamente moralizan las 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 tipo de mecanismo de transporte e incluye cualquier medio de distribución de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características fijadas o cambiadas en tal forma que codifica la información en la señal. A manera de ejemplo, y no limitación, los medios de comunicación incluyen medios por cable tal como una red cableada o conexión directa-cableada, y medios inalámbricos tal como medios inalámbricos acústicos, RF, infrarrojos y otros medios inalámbricos. Las combinaciones de cualquiera de los anteriores también se pueden incluir dentro del alcance de los medios legibles por computadora.
La memoria del sistema 130 incluye medios de almacenamiento por computadora en la forma de memoria volátil y/o no volátil tales 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 ayudan a la transferencia de información entre elementos dentro de la computadora 110, tales como durante el arranque, se almacenan tópicamente en ROM 131. RAM 132 típicamente contiene datos y/o módulos de programa que son inmediatamente accesibles para y/o actualmente siendo operados por la unidad de procesamiento 120. A manera de ejemplo, y no 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 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 en el medio no removible, no volátil magnético, una unidad de disco duro magnética 151 que lee de o escribe en un disco magnético removible, no volátil 152, y una unidad de disco óptico 155 que lee de o escribe en una disco óptico no volátil 156, tal como un CD ROM u otro medio óptico. Otros medios de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles que pueden ser utilizados en el ambiente de operación ilustrativo incluyen, pero no se limitan a, casetes de cinta magnética, tarjetas de memoria no volátil, discos versátiles digitales, cintas de video digitales, RAM de estado sólido, ROM de estado sólido, y similares. La unidad de disco duro 141 está típicamente conectada al conductor común del sistema 121 a través de la interfase de memoria no removible tal como la interfase 140, una unidad de disco magnético 151 y una unidad de disco óptico 155 están típicamente conectados al conductor común del sistema 121 a través de la 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 la computadora 110. En la Figura 1, por ejemplo, la unidad de disco duro 141 está ilustrada como almacenando el sistema operativo 144, los programas de aplicación 145, otros módulos de programa 146, y los datos de programa 147. Observar que estos componentes pueden ya sea ser el mismo o diferentes del sistema operativo 134, programas de aplicación 135, oros módulos de programa 136 y datos de programa 137. Al sistema operativo 144, programas de aplicación 145, otros módulos de programa 146, y datos de programa 147 se les han dado números diferentes aquí para ilustrar que, al mínimo, son diferentes copias. Un usuario puede capturar comandos e información en la computadora 20 a través de los dispositivos de entrada tales como un teclado 162 y un dispositivo de apuntamiento 161, comúnmente referido como un ratón, seguibola o almohadilla sensible al tacto. Otros dispositivos de entrada (no mostrados) pueden incluir un micrófono, palanca de mandos, almohadillas de juegos, antena parabólica, escáner o similar. Estos y otros dispositivos de entrada por lo general están conectados a la unidad de procesamiento 120 a través de una interfase de usuario 160 que está acoplada al conductor común del sistema, pero pueden estar conectados a través de otras interfases y estructuras de conductores comunes, tales como un puerto paralelo, un puerto de juego o conductor común serial universal (USB). Un monitor 191 u otro tipo de dispositivo de pantalla también está conectado al conductor común del sistema 121 a través de una interfase, tal como una interfase de video 190. Además del monitor, las computadoras también pueden incluir otros dispositivos de salida periféricos tales como bocinas 197 y la impresora 196, los cuales pueden conectarse a través de una interfase periférica de salida 190.
La computadora 110 puede operar en un ambiente conectado en red utilizando conexiones lógicas a una o más computadoras remotas, tales como la computadora remota 180. La computadora remota 180 puede ser una computadora personal, un servidor, un direccionador, una PC en red, un dispositivo par u otro nodo de red común, y típicamente incluye muchos o todos los elementos descritos anteriormente con relación a la computadora 110, aunque solamente un dispositivo de almacenamiento de memoria 181 ha sido ¡lustrado en la Figura 1. Las conexiones lógicas descritas 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 conectados en red son lugares comunes de oficinas, redes de computadora a nivel empresa, intranets y el Internet. Cuando se utiliza en un ambiente conectado en LAN, la computadora 110 está conectada a la otra LAN 171 a través de una interfase de red o adaptador 170. Cuando se utiliza en un ambiente conectado en 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 estar conectado al conductor común del sistema 121 a través de una interfase de entrada de usuario 160, u otro mecanismo apropiado. En un ambiente conectado en red, los módulos de programa descritos con relación a la computadora 110, o porciones de los mismos, pueden almacenarse en el dispositivo de almacenamiento de memoria remoto. A manera de ejemplo, y no 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 en red mostradas son ilustrativas y que otros medios para establecer enlaces de comunicaciones entre las computadoras pueden utilizarse.
Acceso a la Memoria Utilizando Traducción de Direcciones Una memoria en un sistema de computadora (por ejemplo, RAM 132, mostrada en la Figura 1) tiene una dirección física para cada byte. De esta forma, los bytes que componen la memoria puede ser visualizados como estando numerados, en donde cada byte puede ser identificado de manera inequívoca a través de estos números. En este caso, el número constituye una dirección física. Por ejemplo, en una memoria de 256 bytes, los bytes pueden tener una clasificación de direcciones físicas de cero a 228 -1. Sin embargo, en sistemas de computadora modernos, la memoria generalmente no tiene acceso a través de sus direcciones físicas, sino a través de una dirección virtual. Un mapa de traducción de direcciones se utiliza para convertir las direcciones físicas en direcciones virtuales. La Figura 2 muestra un ejemplo de un mapa de traducción de direcciones, y se utiliza en un sistema de computadora actual. El mapa de traducción de direcciones ilustrativo que se muestra en la Figura 2 es un esquema de "paginación", en el cual la memoria se asigna en bloques llamados "páginas". La Figura 2 es representativa del esquema de paginación utilizado en el procesador INTEL x86. En la Figura 2, un directorio de páginas 202 contiene una serie de apuntadores a (es decir, direcciones de base físicas) cuadros de página, tales como los cuadros de páginas 204(1), 204(2) 204(3). Cada cuadro de página, a su vez, contiene una serie de apuntadores a las direcciones base de las páginas (por ejemplo, páginas 206(1), 206(2), 206(3), y 206(4)), y también puede contener información tai como el atributo de solo lectura/solo escritura, y bit presente/no presente, etc., como se describió anteriormente. Las páginas son porciones de longitud fija de RAM 132. Adicionalmente, el directorio de páginas y los cuadros de página también por lo general se almacenan en RAM 132. El esquema de paginación descrito en ía Figura 2 es un esquema de paginación de dos niveles, ya que es necesario pasar a través de ambos, el directorio de páginas (nivel 1) y el cuadro de páginas (nivel 2) con el fin de localizar una página particular. Se apreciará por aquellos con experiencia en la técnica que es posible diseñar un esquema de paginación con un número arbitrario de niveles, y la invención se aplica a todos los esquemas de paginación. También se sabe en la técnica que el procesador INTEL x86 típicamente utiliza el esquema de paginación de dos niveles mostrado en la Figura 2, pero también puede ser configurado para utilizar un esquema de paginación de dos niveles o de tres niveles. En el esquema de paginación de la Figura 2, cualquier byte en una página puede ser identificado a través de una dirección virtual 210, comprendiendo una compensación del directorio de páginas 211, una compensación del cuadro de páginas 212 y una compensación de páginas 213. De esta forma, con el fin de localizar una dirección física, una unidad de administración de memoria (MMU) 220 utiliza la compensación del directorio de páginas 211 para localizar una entrada particular en el directorio de páginas 202. Esta entrada es una dirección de base física de un cuadro de páginas, por lo que MMU 220 quita la referencia de esta dirección con el fin de localizar uno de los cuadros de páginas (por ejemplo, el cuadro de página 204(1)). MMU 220 entonces utiliza la compensación del cuadro de página 212 como un índice dentro de cuadro de página identificado, y recupera la entrada encontrada en esa compensación. La entrada es la dirección base física de una página (por ejemplo, página 206(1)), por lo que MMU agrega la compensación de página 213 a la dirección base de la página identificada para localizar un byte particular de la memoria física. MMU 202 también puede estar configurado para tomar en cuenta información tal como si una página ha sido marcada como solo de lectura o solo de escritura, si la página está marcada como presente o no presente, etc., como se describe más adelante en conexión con la Figura 3. El esquema de paginación de la Figura 2 también incluye un lugar de almacenamiento 201 que contiene un apuntador al directorio de páginas. MMU 220 utiliza este apuntador para localizar el directorio de páginas 202 cuando inicia la traducción de la dirección virtual 210. En el ejemplo de un procesador INTEL x86, el lugar de almacenamiento 201 corresponde al registro llamado CR3- es decir, en un procesador INTEL x86, el registro CR3 almacena la dirección física del directorio de páginas para el contexto actual. De esta forma, es posible construir grupos alternativos de cuadros de traducción (es decir, dos o más grupos de directorios de páginas y cuadros de páginas), y cambiar que grupo de cuadro de traducción se aplica simplemente escribiendo la dirección base de un nuevo directorio de páginas en el lugar del almacenamiento 201. Un uso común de esta técnica es para cada proceso que corre en una computadora para tener su propio directorio de páginas y cuadro de páginas, en donde un "intercambio de contexto" (es decir, una operación que, entre otras cosas, causa que el sistema de memoria virtual apunte al espacio de la dirección de un nuevo proceso) sea realizado escribiendo la dirección base del proceso del nuevo directorio de páginas en el lugar del almacenamiento 201. En el caso en donde cada proceso tiene su propio directorio de páginas, la identidad del proceso que está corriendo actualmente determina que valor es cargado en el lugar del almacenamiento 201. Además de contener apuntadores a las páginas, los cuadros de páginas y directorio de páginas también pueden contener "atributos" para las páginas. La Figura 3 muestra el detalle de un cuadro de páginas ilustrativo 204(1), el cual contiene ambos apuntadores y atributos. Cada entrada en el cuadro de páginas 204(1) incluye una dirección 302 de una página particular, un bit 304 indicando si la página apuntada a, mediante la entrada es de "solo lectura", y un bit 306 indicando si la página apuntada a, mediante la entrada está "presente". De esta manera, si la primera entrada 301 en el cuadro de página 204(1) apunta a la página 206(1) (mostrada en la Figura 2), entonces el bit 304 indica, dependiendo de si es un grupo a cero o no, si MMU 220 (mostrado en la Figura 2) puede permitir la página 206(1) para ser ambas, escrita y leída, o solamente leída. Similarmente, el bit 306 indica si la página 206(1) está presente en la memoria o no. (El bit 306 puede estar fijado a cero, indicando que no está presente, si, por ejemplo, el contenido de la página 206(1) ha sido movido al disco para hacer espacio para otras páginas en la memoria). Otros atributos también se pueden almacenar en el cuadro de página 204(1 ).
Utilización Mapas de Traducción de Direcciones para el Control de Acceso a la Memoria En un sistema en donde la memoria es accedida a través de direcciones virtuales, es posible implementar un sistema que limite el acceso al a memoria con base en la siguiente observación: si el mapa de traducción de direcciones está configurado de tal forma que no se traduce ninguna dirección virtual para una dirección física dada, entonces la memoria representada por esa dirección física es inaccesible. Por ejemplo, en el esquema de paginación descrito anteriormente en conexión con la Figura 2, una página dada de memoria (por ejemplo, página 206(1)) puede ser hecha inaccesible asegurando que no existe ninguna trayectoria que se dirija a través del mapa a esa página. En ausencia de dicha trayectoria, no habrá ninguna dirección virtual 210 que podría traducirse a esa página. En un sistema en donde todo el acceso a la memoria se hace a través de una dirección virtual, al ejercer control sobre el mapa de traducción de direcciones para negar direcciones virtuales a una página dada (u otra porción) de memoria efectivamente hace que la porción de memoria sea inaccesible. Aún en sistemas que permiten algún direccionamiento físico de memoria, la memoria puede ser hecha inaccesible suplementando control sobre el mapa de traducción de direcciones con control sobre aquellas solicitudes que están basadas en una dirección física.
La técnica de controlar el contenido de un mapa de traducción de direcciones con el fin de controlar el acceso a la memoria puede ser manifestado formalmente como sigue: Asumir que S es un grupo de fuentes que pueden potencialmente acceder una memoria. Asumir además que P es una política que define que porciones de la memoria pueden ser accedidas a través de cuales fuentes. De esta manera, si s e S es una fuente, entonces MP(s) denota la porción de memoria que es accesible para la fuente s a través del mapa de traducción de direcciones (por ejemplo, el grupo de ubicaciones de la memoria que tienen direcciones virtuales), y NA(P,s) denota las porciones de memoria que la fuente s no tiene permiso de acceder bajo la política P. (En el caso en donde cada proceso tiene su propio mapa de traducción de direcciones, cada proceso puede ser visto como una "fuente" diferente, aunque se entenderá que el concepto de una fuente generaliza más allá del ejemplo de un proceso). De esta forma, la aplicación de la política puede ser asegurada tanto como la condición: NA(P.s) n MP(s) = f, se satisface. Esta condición se describe en la Figura 4, la cual muestra la memoria 132 como un grupo de ubicaciones de memoria, MP(s) 402 como el grupo de ubicaciones de memoria que son visibles para la fuentes s a través de un mapeo de traducción de direcciones, y NA(P,s) 404 como el grupo de ubicaciones de memoria que esa fuente s no tiene permitido acceder bajo la política P. Ya que ninguna de las ubicaciones (MP(s)) que la fuente s puede dirigir a través de un mapeo de traducción de direcciones está incluida en el grupo de ubicaciones de memoria que esa fuente s tiene permiso de acceder bajo la política P, la condición descrita en la Figura 4 efectivamente hace cumplir la política P con respecto a la fuente s. De esta forma, el problema para controlar el acceso de una fuente s a las porciones de memoria 132 puede, en algunas situaciones de ejemplo, ser reducido para asegurar que la condición descrita en la Figura 4 siempre es verdadera. Una solución a este problema es evaluar cualquier operación (por ejemplo, una escritura en la memoria, una carga del registro CR3, etc.) que tiene el potencial de cambiar el mapeo de traducción de direcciones, la política, o la fuente actual. La presente invención proporciona técnicas . que permiten que dicha evaluación sea hecha eficientemente. Se entenderá que esa condición descrita en la Figura 4 es meramente ilustrativa de una condición que puede ser utilizada para implementar el control de acceso a la memoria. Otras variaciones del tema de la Figura 4 son posibles, tales como aquellas que involucran un grupo de ubicaciones de memoria incluidas en el mapa de traducción de direcciones, el grupo de ubicaciones de memoria que fuente tiene permiso de acceder pero no de escribir (o leer), etc. Se observará, sin embargo, que las condiciones para el control del acceso a la memoria típicamente incluyen la verificación de no intersección entre dos o más grupos de ubicaciones de memoria. Adicionalmente, mientras MP(s) puede ser vista como siendo "páginas mapeadas" visibles para la fuente s, se debe observar que el concepto del control de acceso a la memoria no está limitado a sistemas que emplean un esquema de paginación. En una implementación típica, la decisión de que ubicaciones de memoria una fuente tiene permitido el escribir bajo una política, o que ubicaciones de memoria están mapeadas a una fuente, se hacen sobre bases de por página. Sin embargo, la invención no está limitada al caso en donde la memoria está localizada sobre bases por página, o en donde el acceso a la memoria es permitido o restringido sobre bases por página.
Modelo Generalizado para la Traducción de Direcciones El mapa de traducción de direcciones mostrado en la Figura 2 y descrito anteriormente puede ser generalizado utilizando el modelo de una gráfica etiquetada dirigida. Lo siguiente describe un modelo generalizado para ciertos tipos de mapas de traducción de direcciones. En este modelo, B es el grupo base, y L es un alfabeto. Dando que B y L, G = (V,E) es una gráfica dirigida con etiquetas en las orillas, tales como V c B y E c { (v,w,l) : v <= V, w e V,1 e L}. Cualquier miembro de E puede ser interpretado como una orilla dirigida desde el vértice v al vértice w con la etiqueta 1. Los vértices también pueden ser etiquetados. La Figura 5 muestra una gráfica de acuerdo con el modelo descrito anteriormente. La gráfica 500 incluye los vértices 502, 504, 506, 508, 510, y 512. Estos vértices están conectados por las orillas 522, 524, 526, 528, 530, 532, y 534 en la forma mostrada. Cada orilla está etiquetada con un símbolo de un alfabeto. En este ejemplo, el alfabeto comprende los símbolos A, B, y C. De esta manera, las orillas 522 y 524 están etiquetadas con el símbolo A, las orillas 526, 528, y 532 están etiquetadas con el símbolo B, y las orillas 530 y 534 están etiquetadas con el símbolo C. También puede haber elementos del grupo de bases (por ejemplo, elementos 550 y 552) que no son vértices en la gráfica 500. Se debe apreciar que esos componentes de la gráfica 500 corresponden a ciertos componentes del mapa de traducción de direcciones mostrado en la Figura 2. Por ejemplo, en la Figura 2 el directorio de páginas 202, el cuadro de páginas 204(1 )-204(3), las páginas 206(1 )-206(4) pueden ser vistos como vértices en un gráfica. Los apuntadores que conectan estos vértices (por ejemplo, los apuntadores de las entradas en el cuadro de página 204(1) a las páginas 206(1) y 206(2) pueden ser vistos como orillas en la gráfica. Y, con respecto a la Figura 3, los atributos 304 y 306 de una entrada (por ejemplo, el de solo lectura y bits presentes) pueden ser vistos como una etiqueta para una orilla. De esta forma, el "alfabeto" es el grupo de posibles permutaciones de los atributos. (En el ejemplo de la Figura 3, en donde hay dos atributos binarios, hay cuatro posibles combinaciones, por lo que hay cuatro símbolos en el alfabeto). En el caso en donde los atributos no se utilizan, el alfabeto puede consistir de un símbolo "nil". Además, las páginas no localizadas de 'la memoria corresponden a los miembros del grupo base que no tienen orillas entrantes. Dentro del modelo de una gráfica como se describió anteriormente, es posible definir un "estado". Dando a B y L, un "estado" es par (R,G), en donde G es una gráfica etiquetada dirigida como se definió anteriormente, y R c V es un grupo de vértices de G. R representa un grupo de "vértices raíz". Los vértices raíz representan ese grupo de vértices en el grupo base que pueden legítimamente servir como raíces para la gráfica. En el ejemplo de la Figura 2, el grupo de directorio de páginas legales (es decir, aquellos valores que tienen permiso de ser cargados en el lugar del almacenamiento 201, tal como el registro CR3 en un procesador INTEL x86) es el grupo de "vértices raíz". Dando B y L, S es el grupo de todos los estados. De acuerdo con el modelo definido anteriormente, un mecanismo de traducción de dirección (ATM) puede ser modelado como: - un grupo base B de vértices - un alfabeto L (posiblemente vacío) - un estado inicial s0 e S (S siendo un estado) un grupo de reglas de transición de estado (posiblemente vacío) - una función de traducción de dirección - banderas globales Las reglas de transición de estado cambian el ATM de un estado a otro. De esta forma es posible definir un grupo de reglas de transición de estado r¡: S -» S (en donde i es algún índice), el cual cambia el estado actual del ATM. Los ATMs pueden tener cualquiera de los siguientes tipos de reglas de transición. - Cambiar (agregar, remover, re-etiquetar) orillas de G - Agregar o remover vértices de G - Cambiar el grupo raíz R Por ejemplo, en el ejemplo de las Figuras 2 y 3, al remover un apuntador a una página, o cambiar los atributos de la página, corresponde al cambio de una orilla en la gráfica. Agregar un nuevo directorio de páginas, nuevos cuadros de páginas, o nuevas páginas de datos corresponde a la adición o remoción de vértices. Definir un nuevo directorio de páginas cuya dirección base puede ser cargada en el lugar del almacenamiento 201 (por ejemplo, en el registro CR3) corresponde al un cambio del grupo raíz. En esencia, el estado actual define que ubicaciones de memoria son potencialmente accesibles a través de medios de traducción de direcciones. Como se describió anteriormente, el acceso a la memoria puede ser controlado imponiendo condiciones limitantes a un mapa de traducción de direcciones, tal como el mapa de traducción de direcciones no expone una fuente a ninguna dirección virtual para una porción de la memoria que la fuente no tiene permiso de acceder bajo la política. Además, como se observó previamente, la existencia continua de esas condiciones pueden ser evaluada en el momento en que una operación es realizada que puede potencialmente afectar la verdad de la condición. Una forma de ver esta técnica para el control de acceso a la memoria es que los estados legales de un ATM están restringidos a algunos grupos T de S, o que alguna propiedad (o pronóstico) P acerca del estado actual siempre debe ser verdadero. Dando alguna propiedad P (la cual es diferente de la política P, descrita anteriormente), una solicitud puede realizar una acción que podría cambiar el estado (ejecución de r¡, para algunas i) de s a r¡(s) puede ser evaluado para determinar si P(r¡(s)) es verdadero, es decir, si el nuevo estado (propuesto) que resultará de ejecutar r¡ tendrá la propiedad P. Si la aseveración de P implica que limita el acceso de la memoria no será violado, entonces la veracidad de P(r¡(s)) significa que el cambio de estado traído ejecutando r¡ debería ser permitido para proseguir. De otra manera, la operación no debe ser permitida para proseguir. Se debe observar que cada escritura de memoria puede potencialmente cambiar el estado de un ATM. De esta manera, dos observaciones se pueden hacer: - El algoritmo tiene que calcular P(s) - posiblemente frecuentemente - Típicamente, el nuevo estado s' derivado de un estado s antiguo. Si el estado antiguo tuvo la propiedad P, entonces puede ser posible reducir la complejidad de la decisión P(s') asumiendo que P(s) y analizando solamente si (número limitado de) ios cambios a s que produjeron s' pueden dirigirse a una violación de P. La invención proporciona técnicas para permitir que la veracidad de P sea calculada eficientemente. Como se describió anteriormente, en muchos casos esta eficiencia puede ser lograda almacenando (o creando copias caché) cierta información representativa acerca del estado actual del ATM, la cual más tarde puede ser utilizada para decidir que pruebas son necesarias realizar para confirmar la veracidad de P bajo una transición de estado, y que pruebas pueden ser evitadas.
Clases de Propiedad Ilustrativas Un tipo de propiedad P es una propiedad que puede ser expresada en términos de grupos de vértices. Por ejemplo, la condición mostrada en la Figura 4 y discutida anteriormente es esencialmente una propiedad en la cual los grupos MP(s) y NA(P,s) no se cruzan uno con el otro. Muchas propiedades que pueden ser expresadas en términos de grupos de vértices, y las relaciones entre estos grupos, pueden ser implementadas eficientemente a través del almacenamiento (o copia caché) de la identidad de los vértices en el grupo. Ejemplos de grupos que pueden ser útiles en la evaluación de si un ATM está en un estado que satisface una condición de control del acceso a la memoria son: 1. El grupo de vértices a distancia k de los vértices raíz. Más formalmente, si S es un grupo de vértices y w es un vértice, dejar que dk(S,w) denote el testimonio de que existe una trayectoria (dirigida de longitud k a partir del algún vértice en S al vértice w. Sd = { v e V : dk(S,v)) }. Entonces, si S es el vértice raíz, Sd se refiere al grupo de páginas a distancia d de la raíz. Por ejemplo, si el vértice 502 es la raíz de la gráfica 500, entonces el grupo de vértices que tienen una distancia 1 a partir del vértice raíz consiste de vértices 502 y 510, ya que cualquiera de estos vértices puede ser alcanzando a partir de la raíz atravesando una orilla. Con referencia al mapa de página mostrado en la Figura 2, el directorio de páginas 202 esta a una distancia 1 de la raíz, y los cuadros de página 204(1) a 204(3) están a una distancia 2 de la raíz. De esta forma, en el ejemplo de la Figura 2, las direcciones del directorio de páginas y los cuadros de página pueden ser creados en copia caché almacenando la identidad de esas páginas que están a una distancia 1 y 2, respectivamente de la raíz. 2. Grupos que se determinan mediante etiquetas de orilla. Por ejemplo, con referencia a la Figura 5, el grupo de vértices que tienen una orilla etiquetada "A" consisten de vértices 504 y 510, y el grupo de vértices con una orilla etiquetada "B" consiste de los vértices 504, 506, y 512. En el mapa de páginas de la Figura 2, en donde los atributos corresponden a las etiquetas de las orillas, se puede definir un grupo de esas páginas que tienen un atributo dado. Por ejemplo, puede ser útil definir (y crear una copia caché) el grupo de páginas que están marcadas como de solo lectura, en cuyo caso el grupo de páginas cuyo bit de solo lectura está "activado" (número de referencia 304, mostrado en la Figura 3) puede ser definido. (Es posible para una página que va a ser referenciada más de una vez en un mapa de páginas, en cuyo caso diferentes referencias a una página pueden tener sus atributos de solo lectura fijados de manera diferente; en este caso la definición del grupo podría resolver el conflicto, por ejemplo, la página está en el grupo si por lo menos una referencia a la página tiene el atributo de solo lectura, o si cada referencia a la página tiene el atributo de solo lectura, etc.). Una distinción se puede atraer entre propiedades locales y no locales. Las propiedades locales pueden ser calculadas a partir de las orillas que son incidentes en un vértice dado. Es decir, si es posible decidir si el vértice v tiene una propiedad P solamente para las orillas que son incidentes en v, decimos que P es local. En modo contrario, P no es local. Un ejemplo de una propiedad local es "El vértice tiene un orilla interna la cual está etiquetada leer-escribir". Un ejemplo de una propiedad no local es "La página (en una máquina x86) tiene mapeos leer-escribir. 3. El grupo de vértices que están activados de orillas k con alguna propiedad. Más formalmente, si P, Q son predicados y w es un vértice dejar que ln-degP,Q(w) = | { ve V:P(v) y (v,w,1) e E y Q(1) } | Un grupo puede ser definido como el grupo de vértices con un grado interno dado: { v e V : ln-degPjQ(v) = k } Analógicamente, los grupos también pueden ser definidos con base en la desigualdad, por ejemplo, el grupo de vértices que son los objetivos de más de (o menos de) las orillas k con alguna propiedad.
Por ejemplo, con referencia a la Figura 5, el grupo de vértices que tiene por lo menos una orilla interna etiquetada "C", consiste de los vértices 508 y 512. Con referencia al mapa de página de la figura 2, este tipo de grupo de definición puede ser utilizado para crear una copia caché de las categorías de las páginas, por ejemplo, el grupo de páginas con dos o más mapeos, el grupo de páginas con exactamente un mapeo de solo lectura, etc. 4. Un grupo similar puede ser definido con base en un grado externo, es decir, el grupo de vértices que tiene orillas k exteriores (o más de orillas exteriores k, o menos de orillas exteriores k) con alguna propiedad. Por ejemplo, con referencia a la Figura 5, el grupo de vértices que tiene exactamente dos orillas externas etiquetadas "A" consisten del vértice 502. La Figura 3 contiene ejemplos análogos, por ejemplo, el grupo de páginas que tienen por lo menos 3 orillas externas (es decir, referencias a otras páginas) incluye el directorio de páginas 202. Estos grupos pueden ser combinados a través de operaciones de grupo ordinarias (por ejemplo, unión, intersección, complemento, diferencia de grupo). Por ejemplo, si S2 es el grupo de páginas a una distancia 2 de la raíz, y el grupo de páginas con mapeos de lectura-escritura en ciertas configuraciones del CPU x86 puede se expresada como sigue: ( { x : x tiene una orilla interna grande } se cruza { x : x tiene una orilla interna l/e } se cruza con S2 ) unión ( { x : x tiene una orilla interna de página pequeña } se cruza { x : x tiene mapeo e/1 } se cruza con S3 ) Un algoritmo ingenuo puede recalcular estos grupos una vez que cada cambio de estado pase a través de cada vértice v y pruebe si pertenece al grupo. Esto puede ser costoso. Si un algoritmo calcula las propiedades de estado que pueden ser expresadas en términos de grupos del tipo descrito, puede tomar ventaja de los esquemas de copia caché, como se describe a continuación:
Esquemas de Copia Caché: Una variedad de esquemas pueden utilizarse para hacer copias caché de los datos para uso en la evaluación eficiente de los cambios de estado. Ejemplos de esquemas de copia caché se describen a continuación.
Esquema 1. Grupo de copia caché simple Este esquema explícitamente calcula el grupo y lo almacena (crea copia caché). Una vez que cada estado subsiguiente cambia, el algoritmo actualiza la copia caché. En un ejemplo, una copia caché puede ser mantenida para que exponga las siguientes operaciones de acceso: - InicioQ - inicializa la copia caché a algún valor bien definido, tal como el grupo vacío. - Agregar(S) - agrega S (un elemento individual o un grupo de elementos) a la copia caché - Remover(S) - agrega S (un elemento individual o un grupo de elementos) a la copia caché. - MostrarCopiaCaché(S) - devuelve todos los elementos que están actualmente copiados en el caché. La copia caché puede exponer operaciones de acceso adicionales (por ejemplo, para mejorar la eficiencia). Una manera de representar dicha copia caché es a través del vector bit. Por ejemplo, si un sistema tiene 216 páginas físicas de memoria, un vector que es de 216 bits de largo (es decir, 8Kbytes) puede representar un valor Boleano para cada una de las páginas. El bit na o está ya sea activado o desactivado, dependiendo de si la página nava está en un grupo definido. De esta manera, dad un grupo de páginas definido, la membresía en el grupo puede ser copiada en caché al costo de un bit por página. Se apreciará que las operaciones de grupo tales como unión e intersección son muy simples de realizar con este tipo de representación, utilizando los operadores "o" e "y" a nivel de bit.
Esquema 2: Configurando Súper grupos, Subgrupos Dependiendo de los detalles de algoritmo subyacente que implementa el control de acceso a la memoria, la copia caché puede no ser requerida para contener el grupo objetivo exacto. Por ejemplo, puede ser suficiente copiar en caché algún supergrupo o algún subgrupo del grupo objetivo. Esto puede reducir el costo de mantener la copia caché. En el ejemplo de la Figura 3, la condición del control del acceso a la memoria llama al MP(s) para que no se cruce con NA(P,s). Sin embargo, si es inconveniente o impráctico calcular los miembros exactos de NA(P,s), puede ser posible calcular y copiar en caché algún supergrupo de NA(P,s) y entonces asegurar que MP(s) no se cruza con el supergrupo calculado de NA(P,s). Esta técnica puede causar el rechazo de algunos cambios de estado que de otra manera podrían ser permitidos, peró no permitirá que ningún estado cambie que no estaría permitido, por lo tanto conservando las condiciones para el control del acceso a la memoria.
Esquema 3: Representación de Orilla Inversa Típicamente, las orillas se almacenan en, o con el vértice fuente. Por ejemplo, en la Figura 2, el directorio de páginas y los cuadros de páginas almacenan apuntadores a otras páginas, así como sus atributos. Dado un vértice, es típicamente fácil encontrar los objetivos de todas las orillas salientes. Al mismo tiempo, es típicamente costoso encontrar la fuente de todas las orillas internas. Como el vértice no lleva información acercad de sus orillas internas, una búsqueda exhaustiva de todas las orillas puede ser requerida para encontrar todas las orillas internas. Si el algoritmo requiere un acceso rápido a las orillas internas de los vértices, o a la información que puede derivarse de ellas, puede ser ventajoso explícitamente almacenar la información acerca de las orillas internas de cada vértice en una estructura de datos que de alguna manera está asociada con el vértice. El término "de alguna manera asociada" significa que, dato el vértice, es fácil encontrar la estructura de datos (por ejemplo, serie de búsqueda). En el caso más extremo, la estructura de datos almacena todas las orillas internas. En este caso, la estructura de datos puede ser una copia caché tal como la definida anteriormente, cuyos elementos son orillas. (También, las copias caché puede almacenar grupos o multigrupos). El almacenamiento producido por esta estructura es proporcional al número de orillas internas del vértice y, si las estructuras de este tipo son mantenidas para todos los vértices, el almacenamiento total es proporcional al número de orillas en la gráfica. Por lo general es suficiente almacenar información derivada, la cual puede requerir menos almacenamiento. Por ejemplo, el algoritmo puede solamente almacenar el número de orillas internas de cada vértice. En este caso, la copia caché puede ser implementad como un contador de referencia. Los contadores de referencia típicamente exponen las siguientes operaciones de acceso -lnicio() - inicializa la copia caché para algún valor bien definido, tal como 0. - IncrementoQ - DecrementoQ - ObtenerValor() Un uso común de los contadores de referencia (o estructuras de datos similares) es construir grupos. Por ejemplo, un algoritmo de control de acceso a la memoria puede tener que calcular el grupo de vértices sin orillas internas, es decir el grupo de vértices, cuyo contador de referencia es 0. La colección de contadores de referencias puede controlar una copia caché (Esquema 1) de este grupo como sigue: Siempre que el valor de un contador de referencia sea cambiado, el algoritmo prueba si se ha convertido en cero. Si es así, agrega el vértice a la copia caché. Similarmente, el algoritmo vigila para el caso en que un contador de referencia que fue cero obtenga un valor diferente. En este caso, el algoritmo remueve el vértice de la copia caché. Lo siguiente son algunos ejemplos del uso de creación de copias caché: - Copiando en caché súper grupos Sd' de Sd para d = 1,2,3 - Para d = 2,3: La copia caché puede ser (a) explícitamente almacenada, o (b) dirigida por un contador de referencia. - Calcular las propiedades de etiqueta locales: "tiene orillas internas de lectura-escritura" y "tiene orillas internas de páginas pequeña/grande". - Calcular propiedades no locales: "tiene mapeos de lectura-escritura" - Utilizar el contador de referencia para el número de orillas internas de lectura-escritura de los vértices en S2. Esta información puede ser utilizada para acelerar el cálculo de propiedades no locales "tiene mapeos de lectura-escritura".
Proceso Ilustrativo para el Control del Acceso a la Memoria
Utilizando Información Almacenada La Figura 6 muestra un proceso ilustrativo para realizar el control de acceso a la memoria, utilizando técnicas descritas aquí. Inicialmente, se recibe una solicitud para acceder la memoria
(602). Cuando la solicitud de acceso es recibida, el sistema de control de acceso a la memoria evalúa a solicitud para determinar sin la ejecución de la solicitud podría condescender con una política que gobierna el acceso a la memoria (604). Ejemplos de políticas de acceso a la memoria se discutieron anteriormente. Como un ejemplo, la política puede definir cierta páginas como fuera de los límites a un grupo de fuentes, y la política puede prohibir la solicitud de acceso que podría resultar en la creación, para una de las páginas fuera de límite, un mapeo que podría ser visible para una de las fuentes que no tiene permiso para acceder esa página. La evaluación de la solicitud puede ser auxiliada por información almacenada o copiada en caché (606). Esta información almacenada o copiada en caché puede contener información acerca del mapa(s) de la página, por ejemplo, el grupo de páginas que son conocidas que contienen directorios de páginas legítimos. Si se determina que al llevar a cabo la solicitud mantendrá la conformidad con la política (608), entonces la solicitud tiene permiso a proseguir (612). Por el contrario, la solicitud se bloquea, o se modifica en una forma que podría no violar la política (610). Un ejemplo de modificación de una solicitud a una forma que no viole la política es como sigue: si una solicitud busca escribir una entrada a un cuadro de página que podría resultar en un mapeo a una página fuera de los límites, la solicitud puede ser modificada para que la entradas sea escrita pero el bit "presente" de la página es desactivado. De esta manera, cualquier intento futuro para acceder la página recién mapeada generará una excepción, por lo que el manejador de excepción puede finalmente frustrar el acceso a la página fuera de los límites. Si la solicitud se modifica en esta forma (o en alguna otra forma), entonces la solicitud modificada tiene permiso para proseguir (614). Después de que ya sea la solicitud modificada o no modificada haya sido llevada a cabo, si la realización de la solicitud causa un cambio en la información de la copia caché, entonces la copia caché puede ser actualizada (616). Se observa que los ejemplos anteriores han sido provistos meramente para el propósito de explicación y no son en ninguna forma construidos como limitantes de la presente invención. Ya que 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 vez de palabras de limitaciones. Además, aunque la invención ha sido descrita aquí con referencia a medios, materiales, y modalidades particulares, la invención no pretende estar limitada a los particulares descritos aquí; en su lugar, la invención se extiende a toda la funcionalidad de las estructuras equivalentes, métodos y usos, las cuales están dentro del alcance de las reivindicaciones anexas. Aquellos con experiencia en la técnica, teniendo el beneficio de las enseñazas de esta especificación, pueden efectuar numerosas modificaciones a la misma y cambios hechos sin apartarse del alcance y espíritu de la invención en sus aspectos.
Claims (45)
1. Un medio legible por computadora codificado con instrucciones ejecutables por computadora para realizar un método para el procesamiento de una solicitud de acceso a la memoria, el método comprende: recibir una solicitud para acceder una porción de la memoria, dicha solicitud identificando la porción de la memoria que va a ser accedida a través de un identificador que es traducible a través de un mapa de traducción de direcciones; determinar, con base en la información copiada en el caché acerca de dicho mapa de traducción de direcciones, si la ejecución de dicha solicitud violará una política que limita el acceso a dicha memoria; si la ejecución de dicha solicitud no violará dicha política, entonces permitir el acceso a dicha memoria de acuerdo con dicha solicitud; y si la ejecución de dicha solicitud viola dicha política, entones ya sea: bloquear dicha solicitud; o modificar dicha solicitud de tal forma que dicha solicitud no viole la política, y llevar a cabo la solicitud modificada.
2. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicha solicitud comprende una solicitud para escribir dicha porción de dicha memoria.
3. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicho mapa de traducción de direcciones se almacene en dicha memoria, y en donde dicha solicitud comprende una solicitud- para escribir una porción de la memoria en la cual dicho mapa de traducción de direcciones está almacenado.
4. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicha información copiada en el caché incluye datos identificando un grupo de páginas en dicho mapa de traducción de direcciones que está localizado a una distancia predeterminada de una raíz de dicho mapa de traducción de direcciones.
5. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicha información copiada en el caché incluye datos identificando un grupo de páginas de dicho mapa de traducción de direcciones que tiene una propiedad predeterminada.
6. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicha información copiada en el caché incluye datos indicativos de un número de referencias a una página especificada.
7. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicha información copiada en el caché incluye datos indicativos de un número de referencias a una página especificada, en donde dichas referencias tienen un atributo especificado.
8. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicha información copiada en ei caché incluye datos indicativos de un número de páginas al cual una página especificada en dicho mapa de traducción de direcciones se refiere.
9. El medio legible por computadora de acuerdo con la reivindicación 1, en donde dicha información copiada en el caché incluye datos indicativos de un número de páginas al cual una página especificada en dicho mapa de traducción de direcciones se refiere, y al cual la página especificada asigna un atributo especificado.
10. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el cumplimiento de dicha política se determina en base a la membresía de la página en un grupo, en donde dicha información copiada en caché incluye un supergrupo apropiado de dicho grupo, y en donde dicha acción de determinar si la ejecución de dicha solicitud violará dicha política comprende la evaluación de si dicha página es un miembro de dicho supergrupo.
11. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el cumplimiento de dicha política se determina en base a la membresía de la página en un grupo, en donde dicha información copiada en caché incluye un subgrupo apropiado de dicho grupo, y en donde dicha acción de determinar si la ejecución de dicha solicitud violará dicha política comprende la evaluación de si dicha página es un miembro de dicho subgrupo.
12. Un método para manejar una memoria de computadora a la cual el acceso es provisto a través de un mapa de traducción de direcciones, el método comprende: almacenar información para acceder la memoria de la computadora; recibir una solicitud para tener acceso a la memoria de la computadora; determinar, con base en por lo menos en parte en la información almacenada, que lleva a cabo la solicitud que no violará la política que limita el acceso a la memoria de la computadora; permitir que la solicitud sea llevada a cabo; y actualizar la información almacenada para reflejar el estado del mapa de traducción de direcciones resultante de llevar a cabo la solicitud.
13. El método de acuerdo con la reivindicación 12, en donde dicha solicitud comprende una solicitud para escribir una porción de la memoria de computadora.
14. El método de acuerdo con la reivindicación 12, en donde el mapa de traducción de direcciones está almacenado en dicha memoria de computadora, y en donde dicha solicitud comprende una solicitud para escribir una porción de la memoria en la cual dicho mapa de traducción de direcciones está almacenado.
15. El método de acuerdo con la reivindicación 12, en donde la información almacenada incluye datos identificando un grupo de páginas en el mapa de traducción de direcciones que están ubicadas a una distancia predeterminada desde una raíz del mapa de traducción de direcciones.
16. El método de acuerdo con la reivindicación 12, en donde la información almacenada incluye datos identificando un grupo de páginas del mapa de traducción de direcciones que tiene una propiedad predeterminada.
17. El método de acuerdo con la reivindicación 12, en donde la información almacenada incluye datos indicativos de un número de referencias a una página especificada.
18. El método de acuerdo con la reivindicación 12, en donde la información almacenada incluye datos indicativos de un número de referencias a una página especificada, en donde dichas referencias tienen un atributo especificado.
19. El método de acuerdo con la reivindicación 12, en donde la información almacenada incluye datos indicativos de un número de páginas al cual una página especificada en el mapa de traducción de direcciones se refiere.
20. El método de acuerdo con la reivindicación 12, en donde la información almacenada incluye datos indicativos de un número de páginas al cual una página especificada en el mapa de traducción de direcciones se refiere, y al cual la página especifica asigna un atributo especificado.
21. El método de acuerdo con la reivindicación 12, en donde el cumplimiento con dicha política se determina con base en una membresía de la página en un grupo, en donde la información almacenada incluye un supergrupo apropiado de dicho grupo, y en donde dicha acción para determinar que al . llevar a cabo la solicitud no violará dicha política comprende la evaluación de si dicha página es un miembro de dicho supergrupo.
22. El método de acuerdo con la reivindicación 12, en donde el cumplimiento con dicha política se determina con base en una membresía de la página en un grupo, en donde la información almacenada incluye un subgrupo apropiado de dicho grupo, y en donde dicha acción para determinar que al llevar a cabo la solicitud no violará dicha política comprende la evaluación de si dicha página es un miembro de dicho subgrupo.
23. Un sistema para controlar el acceso a una memoria que es dirigida a manera de un mapa de traducción de direcciones, el sistema comprende: uno o más lugares de almacenamiento que almacenan una política que limita el acceso a la memoria; una copia caché que almacena la información acerca del mapa de traducción de direcciones; y lógica que recibe una solicitud para acceder la memoria, y que determina, con base en por lo menos parte de la información almacenada en la copia caché, si la solicitud es permisible bajo dicha política, dicha lógica permitiendo a la solicitud proseguir si dicha solicitud se determina que es permisible bajo la política, dicha lógica ya sea (1) bloquea dicha solicitud, o (2) modifica dicha solicitud en una forma que es permisible bajo la política, y permitiendo que la solicitud modificada prosiga, si dicha solicitud se determina que no es permisible bajo la política.
24. El sistema de acuerdo con la reivindicación 23, en donde dicha solicitud comprende una solicitud para escribir una porción de la memoria.
25. El sistema de acuerdo con la reivindicación 23, en donde dicha solicitud comprende una solicitud para escribir una porción de la memoria en la cual dicho mapa de traducción de direcciones está almacenado.
26. El sistema de acuerdo con la reivindicación 23, en donde la información almacenada en dicha copia caché comprende datos identificando un grupo de páginas en dicho mapa de traducción de direcciones que están localizadas a una distancia predeterminada de una raíz de dicho mapa de traducción de direcciones.
27. El sistema de acuerdo con la reivindicación 23, en donde la información almacenada en dicha copia caché comprende datos identificando un grupo de páginas en dicho mapa de traducción de direcciones que tienen una propiedad predeterminada.
28. El sistema de acuerdo con la reivindicación 23, en donde la información almacenada en dicha copia caché incluye datos indicativos de un número de referencias a una página especificada.
29. El sistema de acuerdo con la reivindicación 23, en donde la información almacenada en dicha copia caché incluye datos indicativos de un número de referencias a una página especificada, en donde dichas referencias tienen un atributo especificado.
30. El sistema de acuerdo con la reivindicación 23, en donde la información almacenada en dicha copia caché incluye datos indicativos de un número de páginas a la cuales la página especificad en dicho mapa de traducción de direcciones se refiere.
31. El sistema de acuerdo con la reivindicación 23, en donde la información almacenada en dicha copia caché incluye datos indicativos de un número de páginas a la cuales la página especificada en dicho mapa de traducción de direcciones se refiere, y al cual la página especificada asigna un atributo especificado.
32. El sistema de acuerdo con la reivindicación 23, en donde el cumplimiento con dicha política se determina con base en una membresía de grupo en una página, en donde la información almacenada en dicho copia caché incluye un supergrupo apropiado de dicho grupo, y en donde dicha lógica determina el permiso de dicha solicitud que violará dicha política evaluando si dicha página es un miembro de dicho supergrupo.
33. El sistema de acuerdo con la reivindicación 23, en donde el cumplimiento con dicha política se determina con base en una membresía de grupo en una página, en donde la información almacenada en dicha copia caché incluye un subgrupo apropiado de dicho grupo, y en donde dicha lógica determina el permiso de dicha solicitud que violará dicha política evaluando si dicha página es un miembro de dicho subgrupo.
34. El sistema de acuerdo con la reivindicación 23, en donde dicha lógica se implementa en por lo menos uno de hardware o software.
35. Un medio legible por computadora codificado con instrucciones ejecutables por computadora para llevar a cabo un método, el método comprende: almacenar información con respecto a una gráfica marcada dirigida que comprende una pluralidad de vértices y una pluralidad de orillas etiquetadas conectando los vértices, cada orilla siendo definida por un par ordenado de vértices y una etiqueta; realizar una primera operación que cambia dicha gráfica removiendo o agregando un vértice, removiendo o agregando una orilla, o cambiando la etiqueta de una orilla; actualizar dicha información para reflejar el cambio a dicha gráfica; y determinar si una segunda operación puede ser realizada con base en por lo menos una parte de dicha información.
36. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha gráfica es representativa de un mapa de traducción de direcciones que comprende una pluralidad de páginas, cada página en dicho mapa de traducción de direcciones correspondiendo a un vértice de dicha gráfica, cada referencia dentro de una página de dicho mapa de traducción de direcciones a otra página de dicho mapa de traducción de direcciones correspondiente a una orilla de dicha gráfica, y un atributo asociado con una referencia correspondiente a una etiqueta de la orilla correspondiente de referencia.
37. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha gráfica se almacena en una memoria de la computadora, y en donde dicha operación comprende una escritura en una porción de dicha memoria de computadora que almacena dicha gráfica.
38. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha información comprende datos identificando un grupo de vértices de dicho mapa de gráficas que está localizado a una distancia predeterminada a partir de un vértice raíz de dicha gráfica.
39. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha información comprende datos identificando un grupo de vértices de dicha gráfica que tienen una propiedad predeterminada.
40. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha información comprende datos indicativos de un número de orillas dirigiéndose dentro de un vértice especificado.
41. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha información comprende datos indicativos de un número de orillas que satisfacen una predicado especificado y que se dirigen dentro de un vértice especificado.
42. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha información comprende datos indicativos de un número de orillas que se dirigen lejos de un vértice especificado.
43. El medio legible por computadora de acuerdo con la reivindicación 35, en donde dicha información comprende datos indicativos de un número de orillas que satisfacen una predicado especificado y que se dirigen lejos de un vértice especificado.
44. El medio legible por computadora de acuerdo con la reivindicación 35, en donde si dicha segunda operación puede ser realizada depende de una membresía de vértice dada en un grupo, en donde dicha información contiene datos indicativos de un supergrupo apropiado de dicho grupo, y dicha acción de determinar si dicha segunda operación puede ser realizada comprende determinar si dicho vértice dado es un miembro de dicho supergrupo.
45. El medio legible por computadora de acuerdo con la reivindicación 35, en donde si dicha segunda operación puede ser realizada depende de una membresía de vértice dada en un grupo, en donde dicha información contiene datos indicativos de un subgrupo apropiado de dicho grupo, y dicha acción de determinar si dicha segunda operación puede ser realizada comprende determinar si dicho vértice dado es un miembro de dicho subgrupo.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US46734303P | 2003-05-02 | 2003-05-02 | |
US10/610,666 US7139892B2 (en) | 2003-05-02 | 2003-06-30 | Implementation of memory access control using optimizations |
Publications (1)
Publication Number | Publication Date |
---|---|
MXPA04004145A true MXPA04004145A (es) | 2005-07-05 |
Family
ID=32995081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
MXPA04004145A MXPA04004145A (es) | 2003-05-02 | 2004-04-30 | Implementacion del control de acceso de la memoria utilizando optimizaciones. |
Country Status (13)
Country | Link |
---|---|
US (2) | US7139892B2 (es) |
EP (1) | EP1473616B1 (es) |
JP (1) | JP4672281B2 (es) |
KR (1) | KR101024819B1 (es) |
CN (1) | CN100426262C (es) |
AU (1) | AU2004201803B2 (es) |
BR (1) | BRPI0401685A (es) |
CA (2) | CA2465255A1 (es) |
MX (1) | MXPA04004145A (es) |
MY (1) | MY138723A (es) |
RU (1) | RU2364932C2 (es) |
TW (1) | TWI346287B (es) |
ZA (1) | ZA200403291B (es) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050165837A1 (en) * | 2004-01-22 | 2005-07-28 | International Business Machines Corporation | System and method for embedded java memory footprint performance improvement |
US20050183077A1 (en) * | 2004-02-12 | 2005-08-18 | International Business Machines Corporation | System and method for JIT memory footprint improvement for embedded java devices |
US20050283770A1 (en) * | 2004-06-18 | 2005-12-22 | Karp Alan H | Detecting memory address bounds violations |
US7395422B2 (en) * | 2005-04-13 | 2008-07-01 | Hewlett-Packard Development Company, L.P. | Method and system of changing a startup list of programs to determine whether computer system performance increases |
US8301767B1 (en) * | 2005-12-21 | 2012-10-30 | Mcafee, Inc. | System, method and computer program product for controlling network communications based on policy compliance |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US7620787B2 (en) | 2006-01-26 | 2009-11-17 | Intel Corporation | Optimizing memory accesses for network applications using indexed register files |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US8180977B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US7886112B2 (en) * | 2006-05-24 | 2011-02-08 | Sony Computer Entertainment Inc. | Methods and apparatus for providing simultaneous software/hardware cache fill |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
US20080244262A1 (en) * | 2007-03-30 | 2008-10-02 | Intel Corporation | Enhanced supplicant framework for wireless communications |
CN101295265A (zh) * | 2007-04-25 | 2008-10-29 | 国际商业机器公司 | 全系统isa仿真系统及其识别进程的方法 |
US8725927B2 (en) | 2008-10-15 | 2014-05-13 | Micron Technology, Inc. | Hot memory block table in a solid state storage device |
US8462161B1 (en) | 2009-01-20 | 2013-06-11 | Kount Inc. | System and method for fast component enumeration in graphs with implicit edges |
CN101645054B (zh) * | 2009-08-25 | 2011-07-13 | 中兴通讯股份有限公司 | 一种数据采集卡、数据采集卡的扩展控制系统及其方法 |
US8635430B2 (en) * | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8650337B2 (en) * | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
US11636031B2 (en) | 2011-08-11 | 2023-04-25 | Pure Storage, Inc. | Optimized inline deduplication |
US8788788B2 (en) * | 2011-08-11 | 2014-07-22 | Pure Storage, Inc. | Logical sector mapping in a flash storage array |
FR2980905B1 (fr) * | 2011-09-29 | 2014-03-14 | Continental Automotive France | Procede d'effacement d'informations memorisees dans une memoire reinscriptible non volatile, support de memorisation et calculateur de vehicule automobile |
US9342704B2 (en) * | 2011-12-28 | 2016-05-17 | Intel Corporation | Allocating memory access control policies |
US8937317B2 (en) | 2012-12-28 | 2015-01-20 | Avogy, Inc. | Method and system for co-packaging gallium nitride electronics |
US9324645B2 (en) | 2013-05-23 | 2016-04-26 | Avogy, Inc. | Method and system for co-packaging vertical gallium nitride power devices |
US9324809B2 (en) | 2013-11-18 | 2016-04-26 | Avogy, Inc. | Method and system for interleaved boost converter with co-packaged gallium nitride power devices |
US9864691B1 (en) * | 2013-12-13 | 2018-01-09 | EMC IP Holding Company LLC | Deletion indication implementation based on internal model |
US9652434B1 (en) * | 2013-12-13 | 2017-05-16 | Emc Corporation | Modification indication implementation based on internal model |
US9886301B2 (en) * | 2015-05-04 | 2018-02-06 | Strato Scale Ltd. | Probabilistic deduplication-aware workload migration |
US10303621B1 (en) * | 2017-03-07 | 2019-05-28 | Amazon Technologies, Inc. | Data protection through address modification |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0256653A (ja) * | 1988-08-23 | 1990-02-26 | Toshiba Corp | 階層化メモリ管理方式 |
EP0481735A3 (en) * | 1990-10-19 | 1993-01-13 | Array Technology Corporation | Address protection circuit |
US5179441A (en) * | 1991-12-18 | 1993-01-12 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Near real-time stereo vision system |
JP2757777B2 (ja) * | 1994-05-26 | 1998-05-25 | 住友金属工業株式会社 | メモリの不正アクセス検出方法及びシステム |
US5845331A (en) * | 1994-09-28 | 1998-12-01 | Massachusetts Institute Of Technology | Memory system including guarded pointers |
US5892900A (en) | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
CN1869997A (zh) | 1995-02-13 | 2006-11-29 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
JPH0973412A (ja) * | 1995-06-30 | 1997-03-18 | Toshiba Corp | データ転送方法及びメモリ管理装置 |
US5729466A (en) * | 1996-04-03 | 1998-03-17 | Cadence Design Systems, Inc. | Optimization multiple performance criteria by simulating the behavior of a constraint graph expanded by subgraphs derived from PWL convex cost functions |
US5663891A (en) * | 1996-04-03 | 1997-09-02 | Cadence Design Systems, Inc. | Optimization of multiple performance criteria of integrated circuits by expanding a constraint graph with subgraphs derived from multiple PWL convex cost functions |
US5701460A (en) * | 1996-05-23 | 1997-12-23 | Microsoft Corporation | Intelligent joining system for a relational database |
US5991408A (en) * | 1997-05-16 | 1999-11-23 | Veridicom, Inc. | Identification and security using biometric measurements |
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6807537B1 (en) * | 1997-12-04 | 2004-10-19 | Microsoft Corporation | Mixtures of Bayesian networks |
US6271856B1 (en) * | 1998-11-19 | 2001-08-07 | Paraform, Inc. | Creating and modifying parameterizations of surfaces |
US6442664B1 (en) * | 1999-06-01 | 2002-08-27 | International Business Machines Corporation | Computer memory address translation system |
US6321314B1 (en) * | 1999-06-09 | 2001-11-20 | Ati International S.R.L. | Method and apparatus for restricting memory access |
US20020118207A1 (en) * | 2000-12-22 | 2002-08-29 | Nortel Networks Limited | Method and apparatus for determining graph planarity |
US6938138B2 (en) * | 2001-01-11 | 2005-08-30 | International Business Machines Corporation | Method and apparatus for managing access to memory |
WO2002057923A1 (fr) * | 2001-01-19 | 2002-07-25 | Sony Corporation | Dispositif de commande de protection de la memoire |
JP2002237142A (ja) * | 2001-02-09 | 2002-08-23 | Matsushita Electric Ind Co Ltd | 磁気記憶媒体、そのトラックピッチ制御方法、その媒体のための磁気記録装置 |
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 |
AU2002252297A1 (en) * | 2001-03-10 | 2002-09-24 | Bioinformatics Dna Codes, Llc | Methods and tools for nucleic acid sequence analysis selection and generation |
US6643759B2 (en) * | 2001-03-30 | 2003-11-04 | Mips Technologies, Inc. | Mechanism to extend computer memory protection schemes |
US20030079103A1 (en) * | 2001-10-24 | 2003-04-24 | Morrow Michael W. | Apparatus and method to perform address translation |
US7388988B2 (en) * | 2002-01-14 | 2008-06-17 | Hewlett-Packard Development Company, L.P. | Systems and methods for processing boundary information of a graphical object |
US7058768B2 (en) * | 2002-04-17 | 2006-06-06 | Microsoft Corporation | Memory isolation through address translation data edit control |
US6986006B2 (en) | 2002-04-17 | 2006-01-10 | Microsoft Corporation | Page granular curtained memory via mapping control |
US7565509B2 (en) | 2002-04-17 | 2009-07-21 | Microsoft Corporation | Using limits on address translation to control access to an addressable entity |
US7139890B2 (en) * | 2002-04-30 | 2006-11-21 | Intel Corporation | Methods and arrangements to interface memory |
US6963959B2 (en) * | 2002-10-31 | 2005-11-08 | International Business Machines Corporation | Storage system and method for reorganizing data to improve prefetch effectiveness and reduce seek distance |
US6986017B2 (en) * | 2003-04-24 | 2006-01-10 | International Business Machines Corporation | Buffer pre-registration |
US7085909B2 (en) * | 2003-04-29 | 2006-08-01 | International Business Machines Corporation | Method, system and computer program product for implementing copy-on-write of a file |
US7415618B2 (en) * | 2003-09-25 | 2008-08-19 | Sun Microsystems, Inc. | Permutation of opcode values for application program obfuscation |
-
2003
- 2003-06-30 US US10/610,666 patent/US7139892B2/en not_active Expired - Lifetime
-
2004
- 2004-04-27 CA CA002465255A patent/CA2465255A1/en not_active Abandoned
- 2004-04-27 CA CA2712081A patent/CA2712081A1/en not_active Abandoned
- 2004-04-28 JP JP2004134539A patent/JP4672281B2/ja not_active Expired - Fee Related
- 2004-04-28 TW TW093111902A patent/TWI346287B/zh not_active IP Right Cessation
- 2004-04-29 EP EP04010226.1A patent/EP1473616B1/en not_active Expired - Lifetime
- 2004-04-29 MY MYPI20041616A patent/MY138723A/en unknown
- 2004-04-29 AU AU2004201803A patent/AU2004201803B2/en not_active Ceased
- 2004-04-30 RU RU2004113567/09A patent/RU2364932C2/ru active
- 2004-04-30 ZA ZA2004/03291A patent/ZA200403291B/en unknown
- 2004-04-30 MX MXPA04004145A patent/MXPA04004145A/es active IP Right Grant
- 2004-05-03 BR BR0401685-8A patent/BRPI0401685A/pt not_active IP Right Cessation
- 2004-05-03 KR KR1020040031024A patent/KR101024819B1/ko active IP Right Grant
- 2004-05-08 CN CNB2004100456063A patent/CN100426262C/zh not_active Expired - Fee Related
-
2006
- 2006-07-28 US US11/494,907 patent/US7605816B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP1473616A3 (en) | 2008-05-07 |
JP2004334870A (ja) | 2004-11-25 |
US20040221126A1 (en) | 2004-11-04 |
AU2004201803B2 (en) | 2009-11-12 |
TW200508862A (en) | 2005-03-01 |
US20060265557A1 (en) | 2006-11-23 |
ZA200403291B (en) | 2005-03-30 |
EP1473616A2 (en) | 2004-11-03 |
RU2004113567A (ru) | 2005-10-27 |
KR20040094382A (ko) | 2004-11-09 |
CA2712081A1 (en) | 2004-11-02 |
CN1577295A (zh) | 2005-02-09 |
BRPI0401685A (pt) | 2005-01-18 |
EP1473616B1 (en) | 2017-09-27 |
US7605816B2 (en) | 2009-10-20 |
RU2364932C2 (ru) | 2009-08-20 |
CN100426262C (zh) | 2008-10-15 |
TWI346287B (en) | 2011-08-01 |
KR101024819B1 (ko) | 2011-03-31 |
JP4672281B2 (ja) | 2011-04-20 |
AU2004201803A1 (en) | 2004-11-18 |
CA2465255A1 (en) | 2004-11-02 |
US7139892B2 (en) | 2006-11-21 |
MY138723A (en) | 2009-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
MXPA04004145A (es) | Implementacion del control de acceso de la memoria utilizando optimizaciones. | |
US7650478B2 (en) | Using limits on address translation to control access to an addressable entity | |
EP1528474B1 (en) | Shadow page tables for address translation control | |
KR100915714B1 (ko) | 폴트 처리 장치, 폴트 처리 방법, 폴트 처리 시스템 및 머신 액세스 가능한 매체를 포함하는 제조물 | |
US7058768B2 (en) | Memory isolation through address translation data edit control | |
US8301863B2 (en) | Recursive logical partition real memory map | |
CN109002706A (zh) | 一种基于用户级页表的进程内数据隔离保护方法和系统 | |
CN111448555A (zh) | 代码领域 | |
CN115552382A (zh) | 转换表地址存储电路系统 | |
KR20230002806A (ko) | 메모리 시스템에 대한 액세스를 제어하기 위한 액세스 제어 정보를 제공하는 테이블 구조에 대한 가변 네스팅 제어 파라미터 | |
CN118627129A (zh) | 多用户共享存储场景下的oram优化策略 | |
Bird et al. | Lighthouse: Hardware Support for Enforcing Information Flow Control on ManyCore Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG | Grant or registration |