ES2312119T3 - Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes. - Google Patents

Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes. Download PDF

Info

Publication number
ES2312119T3
ES2312119T3 ES06708695T ES06708695T ES2312119T3 ES 2312119 T3 ES2312119 T3 ES 2312119T3 ES 06708695 T ES06708695 T ES 06708695T ES 06708695 T ES06708695 T ES 06708695T ES 2312119 T3 ES2312119 T3 ES 2312119T3
Authority
ES
Spain
Prior art keywords
data
entry
division
entries
processes
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
ES06708695T
Other languages
English (en)
Inventor
Frederick C/O Office Mediteraneen De Brevets D'invention Cabinet Hautier Ros
Rudy C/O Office Mediteraneen De Brevets D'invention Cabinet Hautier Daniello
Luc C/O Office Mediteraneen De Brevets D'invention Cabinet Hautier Isnardy
Claudine C/O Office Mediteraneen De Brevets D'invention Cabinet Hautier Reynaud
Wayne C/O Office Mediteraneen De Brevets D'invention Cabinet Hautier Rubenstein
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amadeus SAS
Original Assignee
Amadeus SAS
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 Amadeus SAS filed Critical Amadeus SAS
Application granted granted Critical
Publication of ES2312119T3 publication Critical patent/ES2312119T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

Método para mantener la coherencia como mínimo de una memoria cache o antememoria (150) accesible por una serie de procesos independientes (200) que pueden compartir datos comunes (210), efectuando dicha serie de procesos operaciones de búsqueda (900) simultáneas de dichos datos seguidos opcionalmente de una puesta a disposición (1010), de una extracción (1020) o de una inserción (1030) de dichos datos, dichas operaciones de búsqueda, de extracción y de inserción se ejecutan exhaustivamente una vez que han sido iniciadas por dicha serie de procesos independientes, se ejecutan exclusivamente una de otra cuando operan sobre dichos datos comunes y son cada una de ellas completamente reversibles, en cuyo método: dichas operaciones de búsqueda seguidas opcionalmente de una de dichas operaciones puesta a disposición, de extracción o de inserción de dichos datos tienen una duración finita o limitada de ejecución.

Description

Método y sistema para mantener la coherencia de una memoria cache utilizada por múltiples procesos independientes.
Campo técnico de la invención
La presente invención se refiere a la ingeniería informática en general y describe más particularmente un método y un sistema para mantener a largo plazo la coherencia de los datos en una memoria cache o antememoria compartida por procesos independientes en un entorno informático que exige una disponibilidad permanente de de estos datos y que asegura tiempo de acceso cortos a los mismos.
Estado de la técnica
Si la potencia de cálculo de los ordenadores y de su unidad central de tratamiento (UC o CPU es decir "Central Processing Unit" en la literatura técnica inglesa) no cesa de aumentar considerablemente al pasar los años, aplicaciones lógicas cada vez más exigentes llegan al mismo tiempo a utilizar este aumento de potencia de tratamiento utilizando de manera creciente estas unidades centrales. Es en particular el caso cuando estas deben acceder a datos disponibles en una memoria centralizada que puede tener que reagrupar enormes cantidades de información como por ejemplo las bases de datos que reúnen las ofertas mundiales del tráfico aéreo. Estas deben poder ser consultadas de modo permanente a partir de innumerables agencias de viajes y puntos de ventas siendo actualizadas por las compañías aéreas en todo el mundo 7 días sobre 7 y 24 horas sobre 24.
Cualesquiera que sean las configuraciones, redes de ordenadores y soluciones informáticas utilizadas para obtener este resultado, los rendimientos esperados, en especialmente tiempos de acceso corto a las informaciones buscadas, pasan siempre por la utilización de una jerarquía de memorias. Efectivamente, las informaciones buscadas deben ser llevadas a una memoria a la que las unidades centrales puedan acceder de manera suficientemente rápida incluso si dicha memoria no puede contener el conjunto de informaciones susceptibles de ser buscadas. Este tipo de memoria es el que se llama memoria cache o antememoria. La memoria cache sirve para almacenar los datos a los que acude con mayor frecuencia un sistema en un momento dado, permitiendo de está manera reducir los estados de espera de las unidades centrales y procesadores de los ordenadores.
Las dimensiones necesariamente limitadas de una memoria cache deben poder ser compartidas entre los diferentes procesos independientes que se deben ejecutar simultáneamente en las unidades centrales. Además, cuando trabajan sobre datos comunes, las múltiples tareas independientes deben poder hacerlo preferentemente sin tener que duplicar estos datos.
La gestión de una memoria cache compartida entre múltiples procesos es por lo tanto un asunto complejo. En particular, es imperativo mantener la coherencia de los datos comunes a varios procesos. Si uno de ellos debe modificar los datos indicados es particularmente importante que otro proceso no los pueda utilizar antes de que hayan sido modificados por completo y puestos al día. Si bien es conocido que esto se puede conseguir por el intercambio de mensajes entre procesos, se trata en este caso de un método que incide no obstante de manera grave en los comportamientos de acceso a estos datos en razón del tiempo necesario para el intercambio de los mensajes.
Otro método habitualmente practicado consiste en permitir que un proceso obtenga solo, temporalmente, el derecho de acceso a datos compartidos bloqueando de esa manera el acceso de otros procesos que deben esperar. No obstante, una vez que un proceso ha obtenido este derecho de acceso exclusivo puede tener también que esperar por su parte que otro proceso libere datos que también debe utilizar. Existen por lo tanto evidentemente casos en los que dos o más procesos se bloquean. Uno de ellos espera que el otro termine y recíprocamente. Las tareas que deben ejecutar estos procesos no adelantan. Hay bloqueo.
Se debe entender que se pueden tener, tanto memorias cache como procesos. Existe por lo tanto replicación de los datos comunes en la memoria cache, lo que se desea evitar en primer lugar con la finalidad de utilizar lo mejor posible el espacio de memoria disponible y que plantea nuevamente el problema de la coherencia de las replicaciones en el interior de esta última.
Por otra parte, una memoria cache no contiene solamente datos de trabajo utilizados por los procesos en si mismos, sino que debe estar estrictamente organizada. Una memoria cache es efectivamente en todos los casos una vista parcial, altamente dinámica, en el conjunto de datos presentes en la memoria más lenta, económica, pero de gran tamaño y situada como reserva, de manera típica, baterías de discos magnéticos que pueden almacenar teraoctetos (10^{12} octetos) de datos. Estos datos de trabajo son en todo caso potencialmente accesibles por los procesos en un momento determinado después de su transferencia en la memoria cache compartida. Los datos de organización de la memoria cache deben permitir por lo tanto el mantener la coherencia entre los datos de trabajo efectivamente presentes en un momento determinado en la memoria cache y su correspondencia en la memoria situada como reserva. No obstante, si un proceso se ha interrumpido antes de su final normal (por ejemplo, simplemente por el hecho de que un operario ha finalizado prematuramente una petición) o bien si se ejecuta incorrectamente en razón de una debilidad de programación del programa, puede ocurrir que los datos de organización de la memoria cache no sean actualizados completamente o que los sean de manera incorrecta. Las tablas de control que contienen estos datos de organización pasan entonces a ser parcialmente alteradas o adulteradas. Si, de modo general, los programas de aplicación están concebidos para tener tolerancia a las averías y errores con la finalidad de evitar que alteraciones o corrupciones parciales comporten consecuencias importantes, su acumulación en un sistema que debe ser operativo las 24 horas del día degrada a largo plazo los rendimientos y la eficacia de la memoria cache en particular reduciendo la dimensión efectivamente utilizable de esta, lo que ya no permite gestionar el número de datos de trabajo compartibles por el conjunto de los procesos que se deben desarrollar en un momento dado para satisfacer las múltiples solicitudes procedentes de los ordenadores que deben acceder de muy grandes bases de datos como las que contiene las informaciones sobre el tráfico aéreo mundial o las reservas de grandes cadenas hoteleras.
La dimensión efectivamente utilizable de una memoria cache es por lo tanto un parámetro clave de su funcionamiento. Su llenado debe ser óptimo. En particular un proceso debe poder siempre gestionar datos de trabajo nuevos para satisfacer nuevas peticiones de clientes y ello incluso si la memoria cache se encuentra ya llena. Esto no se puede hacer entonces más que liberando espacio y por lo tanto sacando de la memoria los datos de trabajo menos susceptibles de ser reutilizados o los que ya no son válidos. Esta gestión se complica por el hecho de que los procesos son completamente independientes unos de otros. Una solución habitualmente utilizada consiste entonces en tener una tarea de fondo que se realiza además en todos los procesos para actualizar las tablas de control en la memoria cache y liberar los datos de trabajo que ya no son válidos o demasiado viejos. Esta solución presenta el grave inconveniente de que si la tarea de fondo no se ejecuta normalmente la memoria cache pasa rápidamente a ser inutilizable puesto que se llena de datos no válidos. Además la tarea de fondo no podrá en general liberar datos alterados por un proceso que no se ha ejecutado completamente o normalmente.
En un sistema que debe funcionar 24 horas al día y que por lo tanto no vuelve a arrancar en ningún momento, la fiabilidad no debe basarse en el buen funcionamiento de un elemento único típicamente, la tarea de fondo descrita en lo anterior tal como es frecuentemente el caso.
Un mecanismo que tiende a solucionar algunas de las debilidades de la técnica anterior y que se han descrito en lo anterior, ha sido propuesto en una solicitud de patente ante la oficina americana de patentes o USPTO (United States Patent and Trademark Office) con el número 2003/0195866. Publicada el 16 de octubre del 2003 con el título "Transasction-aware caching for access control metadata" esta solicitud de patente no se dedica a describir un mecanismo específico para liberar sitio en una memoria cache que ya se encuentra llena. Operación por lo tanto muy frecuentemente necesaria después de un cierto tiempo de utilización en un sistema que no vuelve a ponerse en marcha en ningún momento y en el que las peticiones sucesivas tienden a acumular constantemente datos en la memoria cache.
El objeto de la invención es por lo tanto el de solucionar en general las limitaciones de la técnica anterior y aportar mejoras que se refieren a la gestión de una memoria cache y que impide cualquier bloqueo de los procesos en especial para permitir liberar espacio cuando esta debe recibir nuevos datos.
Resumen de la invención
La invención describe un mecanismo para mantener la coherencia de una memoria cache, accesible por procesos independientes. Los procesos pueden compartir datos comunes. Los procesos efectúan operaciones simultáneas de búsqueda de datos seguidas opcionalmente por una puesta a disposición de los datos a los procesos, de una extracción de estos o de la inserción de nuevos datos. Las operaciones de búsqueda, de extracción y de inserción se realizan exhaustivamente una vez que han sido iniciadas por los procesos independientes. Se ejecuta exclusivamente una de otra cuando deben operar sobre datos comunes. Las operaciones de extracción o de inserción son completamente reversibles cada una de ellas. Dentro de este ámbito, la invención prevé que las operaciones de puesta a disposición, extracción o inserción de datos tienen una duración finita o limitada de ejecución con la finalidad de impedir bloqueos. En especial, la operación de inserción que comprende una etapa de liquidación de una entrada cuando un compartimiento de la memoria cache se encuentra lleno, se requiere recorrer todo el compartimiento con la finalidad de realizar una elección, es no obstante interrumpido posiblemente si se alcanza un tiempo de recorrido máximo. En este caso, la entrada más apropiada entre las entradas ya recorridas queda liberada. Las entradas del compartimiento son recorridas exhaustivamente lo que se obtiene memorizando la última dirección consultada del compartimiento después de cada liberación.
Breve descripción de las figuras
Las finalidades, objetivos y características y ventajas de la invención resultarán mejor de la descripción detallada de una forma preferente de realización de esta última que se muestra mediante los dibujos adjuntos siguientes en los cuales:
La figura 1 describe el entorno en el que se pone en práctica la invención.
La figura 2 muestra la división de una ELC por procesos independientes.
La figura 3 describe el caso en el que varios ELC reciben acceso de procesos independiente.
La figura 4 describe la estructura de las tablas de datos de una ELC.
La figura 5 describe la tabla de control asociada a las tablas de datos.
La figura 6 muestra un ejemplo del contenido de una parte de la tabla de control.
La figura 7 describe la estructura de la tabla de divisiones.
La figura 8 describe la estructura y el direccionado de la tabla de corte.
La figura 9 describe el método de búsqueda de los datos en una ELC.
La figura 10 describe los métodos para la puesta a disposición, extracción, sustitución e inserción de datos en una ELC.
La figura 11 describe el método para liberar una entrada en una tabla de datos llena.
La figura 12 describe las etapas de la ejecución de un proceso que sirve para mantener la coherencia de las tablas.
Descripción detallada de la invención
Tal como se ha indicado en la figura 1 la invención se sitúa en el contexto de un sistema (100) que comprende una o varias unidades centrales (UC) de ordenadores (110) que comparten un medio de almacenamiento rápidamente accesible (120). Aunque limitada en dimensiones la memoria compartida (MP) puede acceder por su parte a una o varias memorias de masa (MM) situadas en segundo plano y constituidas en general por las baterías de discos magnéticos (130) que pueden memorizar grandes cantidades de datos. En especial bases de datos tales como, por ejemplo, las que deben ser consultadas por las agencias de viaje en todo el mundo y que reúnen el conjunto de las informaciones sobre el tráfico aéreo mundial o los estados de reservas de las cadenas hoteleras internacionales. Las unidades centrales operan bajo el control de un sistema de explotación. Por ejemplo, UNIX es un sistema de explotación frecuentemente utilizado puesto que permite tratar no solamente numerosos usuarios (140) simultáneamente sino que es así mismo capaz de gestionar un gran número de tareas o procesos que operan independientemente en el mismo tiempo. Por lo tanto, en la memoria compartida que comprende un orden de control (125), el sistema de explotación, directamente o por intermedio de capas lógicas suplementarias integradas al sistema de explotación, permite definir una o varias entidades lógicas de cache (ELC). Tal como ya se ha indicado en el párrafo correspondiente al estado de la técnica, el objetivo de estas memorias cache o antememorias (150) es de poder llevar a una memoria de acceso rápido, la memoria compartida (120) desde la memoria de masa (130), los datos sobre los que deben poder trabajar en un instante dado los procesos independientes iniciados por las unidades centrales (110).
La figura 2 describe más particularmente un aspecto nuevo de la invención que permite que procesos independientes (200), en este ejemplo la referencias del 1 a 5, puedan compartir una entidad de datos comunes (210) después de que uno solo de estos procesos, el que lleva el número 3 en este ejemplo, haya tenido necesidad de recuperar los datos en la memoria de masa (230) y haya tenido que efectuar las conformaciones y cálculos necesarios (220) para su utilización efectiva por el conjunto de procesos susceptibles de tener que trabajar sobre estos datos en un instante determinado. Esta forma de proceder conduce a minimizar notablemente las necesidades de almacenamiento en las memorias cache contenidas en la memoria compartida aumentando para igualdad de dimensiones su eficacia y descargando mucho las unidades centrales puesto que los cálculos de conformaciones no son efectuados más que por el único proceso que lleva el número 3 en este ejemplo.
La figura 3 tiene por objeto mostrar que si los datos pueden ser ventajosamente compartidos entre los procesos en una misma ELC la invención permite también, en el caso en el que coexisten varias ELC (300) en a memoria compartida, que en los procesos (310) no tengan obligatoriamente acceso a todas las ELC. Por lo tanto, en este ejemplo en particular, el proceso 1 tiene acceso a las ELC A y C mientras que el proceso 2 tiene acceso a las ELC B y C. Solamente los datos presentes en las ELC C son por lo tanto comunes a los procesos 1 y 2 porque se puede demostrar útil para impedir, por ejemplo, que el proceso 2 pueda alterar los datos que solamente el proceso 1 está autorizado para modificar, datos que se dan contenidos entonces preferentemente en la ELC A.
Las figuras siguientes describen las diferentes tablas utilizadas por una ELC para recuperar y actualizar los datos contenidos en un momento dado en la memoria cache. La figura 4 describe la organización de una tabla de datos. Tal como sugiere el nombre, una tabla de datos (400) sirve en primer lugar para memorizar los datos del usuario así como la clave única o identificativo asociado a estas y los parámetros descritos a continuación. El número máximo de tablas de datos que pueden encontrarse presentes en una ELC es parametrizable en la configuración del sistema. Por ejemplo, se podrá autorizar la creación de un centenar de tablas de datos. Además cada una de esas tablas podrá comprender un número variable de entradas (410), en número de cuatro en este ejemplo, que son de dimensiones especificables en la configuración con la finalidad de adaptar mejor las tablas a los datos de los usuarios que deben acoger en una aplicación específica de la invención. El formato de cada una de las entradas de una tabla de datos comprende cuatro campos que contienen:
-
las dimensiones de la clave (420).
-
Las dimensiones de los datos de usuario (430).
-
La clave única que identifica los datos (440). De manera típica, esta clave es un campo de algunas decenas de octetos que incluyen de manera suficiente información para identificar el tipo de datos asociado.
-
Los datos de usuario propiamente dichos (450). Por ejemplo, serán las tarifas practicadas por una compañía aérea para un destino determinado y un periodo dado.
\vskip1.000000\baselineskip
La figura 5 describe la tabla de control utilizada para hacer el seguimiento de los datos de usuario que se encuentran presentes en un instante dado en una ELC. Existe correspondencia uno a uno entre las entradas de la tabla de control (500) y las de los datos (510, 520). El número de entradas en la tabla de control es por lo tanto el mismo que el número máximo de tablas de datos que ha sido especificado en un momento de la configuración, multiplicado por el número de entradas en cada una de estas tablas. En el ejemplo simple de la figura 5, que muestra solamente dos tablas de datos, la primera (510) comprende cuatro entradas y en la segunda (520) cinco, comprendiendo entonces la tabla de control asociada (500) un total de nueve entradas activas.
Se observa que la entrada 0 de estas tablas está inutilizada en todos los casos para permitir que los campos 0 tengan una significación particular: la de indicar la ausencia de referencia en una entrada.
Cada entrada de la tabla de control comprende las informaciones siguientes:
-
El valor de corte de la clave asociada a los datos.
-
La fecha de inserción de los datos.
-
La fecha de caducidad o expiración de los datos.
-
Las dimensiones de los datos memorizados en la entrada correspondiente de la tabla de datos.
-
La entrada siguiente en la lista encadenada de las entradas (libres o utilizadas) de las tablas de control y de datos o el valor 0 si no hay otra entrada encadenada.
-
La entrada encadenada precedente o el valor 0 si no hay otra entrada encadenada.
-
La entrada correspondiente de la tabla de corte que se ha descrito con la figura 8 o el valor 0 si se trata de la lista encadenada de las entradas libres.
-
El número de la tabla de datos asociada a esta entrada de la tabla de control.
-
La entrada correspondiente en la tabla de datos.
-
El contado de utilización (para determinar cual de las entradas ha sido menos utilizada recientemente).
-
Parámetros diversos que comprenden en especial un indicador binario para indicar que la entrada correspondiente se encuentra libre y puede ser utilizada.
\vskip1.000000\baselineskip
La figura 6 facilita un ejemplo de lo que podría contener la parte de la tabla de control correspondiente a la tabla de datos (1) de la figura 5. Con un objetivo de claridad los parámetros de esta lista no aparecen en su totalidad en la tabla de la figura 6.
En este ejemplo las entradas 2 y 4 son libres (600). Están doblemente encadenadas para poder recorrer la lista en las dos direcciones y podrían ser utilizadas para memorizar datos de usuarios. La entrada libre 2 indica por lo tanto la entrada libre siguiente, que es la 4 (610). Está ultima indica la entrada libre precedente que es la 2 (620).
Las entradas utilizadas 1 y 3 pertenecen en este caso a una misma lista encadenada que sirve para resolver las colisiones que proceden del corte idéntico de claves que no obstante son distintas. Indican una entrada específica de la tabla de corte (630), la entrada (123). La tabla de corte y el corte de las claves de identificación se explican en detalle en la siguiente figura 8. Igual que la lista de las entradas libres, la destinada a resolver las colisiones está también doblemente encadenada: la entrada 1 indica la entrada utilizada siguiente (640), la 3 que por su parte indica la precedente (650) de la lista, la 1.
Como se ha explicado los valores nulos de las columnas "entrada siguiente" y "entrada precedente" no hace referencia a ninguna entrada y empiezan o terminan una lista encadenada.
La figura 7 describe la tabla de divisiones (700). Tal como sugiere su nombre la tabla de divisiones sirve para almacenar las informaciones necesarias para determinar como se organizan y dividen la tabla de control y la de datos. Existen por lo tanto tantas entradas (710) en la tabla de divisiones como tablas de datos, siendo dos en el ejemplo de las figuras anteriores. Cada una de las entradas de la tabla de divisiones, que referencia la tabla de datos correspondiente (la primera entrada de referencia de la tabla número 1 y después así sucesivamente) comprende los parámetros siguientes, que a efectos de claridad no aparecen en todos los casos en el esquema de la tabla de divisiones de la figura 7:
-
Índice en la tabla de control de la primera entrada de la división correspondiente (720).
-
Índice de la última entrada (730).
-
Número de entradas de esta división.
-
Dimensión de las entradas en esta división.
-
Número de entradas libres.
-
Primera entrada de la lista encadenada de las entradas libres (740).
-
Indicador de bloqueo de la división.
-
Índice de la tabla de control de donde deberá empezar la próxima búsqueda de una entrada susceptible de ser extraída.
La figura 8 describe la tabla de división (800) que es el punto de entrada para cualquier búsqueda en una ELC.
El punto de entrada en la tabla de división (810) es el valor resultante de la división de la clave de identificación de los datos. Clave única, asociada a los datos y que se ha descrito en las figuras precedentes. Por las razones ya mencionadas la entrada 0 debe continuar inutilizada y la función de división debe devolver un valor comprendido entre 1 y el límite superior de direccionado de la tabla de división. La tabla de división es parametrizable en la configuración del sistema. La invención no supone la utilización de una función de división particular. Con la finalidad de intentar obtener un mínimo de colisiones, objetivo final de cualquier función de división, eventualmente en función de la estructura de las claves, se podrá escoger una u otra de las numerosas funciones y métodos de división que han sido propuestos en la abundante literatura técnica que trata de este tema. La función de división deberá ser escogida, no obstante o adaptada para que el valor 0 quede siempre excluido.
En una forma preferente de puesta en práctica de la invención representada en la figura 8, la clave única de identificación (840) que requiere de forma típica de 50 a 100 octetos sufre una primera división (850) para obtener un valor que se inscribe, por ejemplo, dentro de un campo de 64 bits y denominado a continuación H[int]. No obstante, al no poder comprender la tabla de división en la práctica 2^{64} entradas, se efectúa una segunda división (860) de H[int] para obtener una tabla (800) de dimensiones razonables. Por ejemplo, se podrá desear llevar al campo de 64 bits a un campo de 18 bits es decir aproximadamente 256 kilo entrada (2^{18}). La ventaja de proceder a una doble división es la de conciliar una tabla de división de dimensiones razonables permitiendo la comparación para evitar dudas en caso de colisión en la tabla de división en un campo de bits (64 bits) rápidamente manipulable por un procesador. Una elección razonable de la primera función de división permite en efecto obtener una probabilidad de colisión casi nula incluso cuando las colisiones serán menos numerosas después de una reducción suplementaria por ejemplo, a 18 bits. Por lo tanto no se deberá hacer una comparación completa de las claves, que comprenden de 50 a 100 octetos casi en ningún caso más de una vez tal como se ha comentado anteriormente con la figura 9.
Si se hace referencia de nuevo a la figura 6 es por lo tanto el valor de división intermedio H[int] que comprende 64 bits en el ejemplo anterior, el que se encuentra presente en la tabla de control (660) y que será utilizado en primer lugar con la finalidad de acelerar las comparaciones.
El valor final de división (810) de la clave asociada a los datos H[CLEF] es utilizado para consultar la tabla de división. La entrada correspondiente contiene las informaciones siguientes:
-
Un indicador de bloqueo (V) de la entrada para permitir que un solo proceso pueda modificar a la vez la lista encadenada (820) empezando en esta entrada de la tabla de división. Este aspecto de la invención es comentado más adelante en la descripción.
-
La primera entrada en la tabla de control de la lista encadenada utilizada para resolver las posibles colisiones resultantes de la división de las claves. Se debe entender, que si la división de las claves de datos no facilita ninguna colisión en una entrada particular de la tabla de división, la lista encadenada correspondiente se reducirá a un solo elemento.
Los valores nulos en la tabla de división (830) no dan referencia de ninguna entrada de la tabla de control. Ninguna de las claves de datos da un valor de división para esta entrada.
La figura 9 describe el método de acceso (900) a los datos de una ELC. La búsqueda de datos en una ELC empieza por la división de la clave (910) asociada a los datos buscados. El valor obtenido sirve para direccionar la tabla de división precedentemente descrita (920). Si la entrada correspondiente es nula la búsqueda puede ser declarada a continuación infructuosa (932). Este resultado es indicado inmediatamente (940) al proceso buscando los datos para informar que no se encuentran presentes en la ELC interrogada.
Si la entrada direccionada no es nula (934), la tabla de control de la ELC debe ser leída en la entrada referenciada por la tabla de división (950). Esta entrada contiene el primer elemento, posiblemente el único, de una lista encadenada de entradas susceptibles de contener la información buscada.
Esta consulta de la tabla de control no se hará no obstante inmediatamente si la entrada correspondiente está bloqueada por otro proceso (945). Será necesario entonces esperar a que esté último desbloquee la entrada para continuar. El proceso en curso, si es susceptible de comportar una modificación de las tablas (extracción o inserción) bloquea a su vez la entrada de la tabla de división (947).
Se lleva a cabo (960) una primera comparación de los valores de división de la clave. Es decir se compara de inmediato el valor de la división de la clave buscada al extraído de la tabla de control. Tal como se ha explicado en la figura 8, en la forma preferente de realización de la invención, la comparación se efectúa sobre un valor intermedio de división H[int].
Si difieren (974) la búsqueda debe continuar recorriendo la lista encadenada (980) si contienen más de un elemento. Si existe solamente un elemento o si se ha conseguido el último elemento de la lista (982) la búsqueda debe ser declarada infructuosa (940).
Si los valores de división son no obstante idénticos (972) la clave buscada ha sido posiblemente hallada. Sin importar que función de división pueda no obstante devolver dos valores idénticos de división, partiendo de claves distintas, ello debe ser verificado. Para evitar dudas, las claves deben ser comparadas (990). En una forma preferente de realización de la invención, para acelerar la comparación, la dimensión de la clave buscada es comparada en primer lugar a la que es memorizada en la tabla de datos (en la entrada correspondiente a la de la tabla de control). Si las claves son de dimensiones distintas no pueden ser idénticas y la búsqueda debe continuar (994), tal como en lo anterior, recurriendo la lista encadenada si contiene más de un elemento. De lo contrario la búsqueda debe ser declarada infructuosa (940).
Si las dimensiones de las claves son iguales se efectúa finalmente una comparación completa de estas. Si las claves son efectivamente idénticas (992) la búsqueda es fructuosa. Los datos buscados se encuentran presentes en la tabla de datos. Si las claves difieren la búsqueda debe continuar tal como en el caso anterior, recorriendo la lista encadenada.
Se observará que frecuentemente será necesaria una sola comparación completa de las claves (de 50 a 100 octetos) cuando los datos han sido efectivamente hallados. La probabilidad de tener que hacer más de una comparación completa de las claves depende de la eficacia de la primera función de división que se ha conservado para minimizar las colisiones y que se ha descrito en la figura 8. Tal como se ha explicado esta probabilidad es casi nula.
La figura 10 describe diferentes acciones que siguen a la búsqueda de datos en una ELC.
En todos los casos, si la búsqueda es infructuosa el proceso en el origen de la búsqueda recibe información de ello (1000).
Si la búsqueda es positiva y ha sido iniciada por un proceso para consultar los datos, estos son extraídos de la tabla de datos y puestos a disposición del proceso en el origen de la petición (1010).
Si la búsqueda es positiva y ha sido iniciada por un proceso con el objetivo de extraer (1020) los datos correspondientes de la ELC, la tabla de control debe ser modificada (1025). La entrada correspondiente de la división debe ser extraída de la lista encadenada de las entradas utilizadas de esta división y añadida a la de las entradas libres. La extracción de una entrada de la lista encadenada de las entradas utilizadas se hace evidentemente reconstituyendo en caso necesario, la lista encadenada por modificación de los campos de entrada "siguiente" y "precedente" tal como se ha indicado en la figura 6.
Si el desarrollo de la inserción de nuevos datos (1030) en una ELC depende en primer lugar del hecho de que la clave y se encuentra presente o no, la inserción requiere en todos casos que la dimensión requerida para poder insertar estos datos sea inicialmente calculada (1035) con la finalidad de determinar cuales de las entradas libres de la tabla de datos son utilizables.
Si la búsqueda ha sido infructuosa, la inserción dependerá entonces esta vez si queda por lo menos una placa libre de dimensiones adecuadas para recibir los nuevos datos. Si este es el caso (1042) se selecciona una entrada libre (1060) y la inserción de los nuevos datos es efectuada (1070) lo que comprende la modificación o creación de listas encadenadas en la tabla de control.
Si no hay lugar libre de dimensión adecuada (1044) es necesario entonces liberar un lugar en la ELC (1050) para poder proceder a la inserción (1070). El método para liberar un lugar se describe de manera más precisa en la figura 11.
Si la búsqueda ha sido positiva, la clave buscada se encuentra ya presenta, se trata de una modificación de los datos contenidos en la tabla de los datos. La cuestión se presenta entonces de saber si hay suficiente lugar para memorizar los nuevos datos en la misma entrada. Si la respuesta es positiva (1046) se puede proceder inmediatamente a la inserción (1070). No obstante, si las dimensiones no son convenientes (1048), será necesario igual que en el caso anterior, liberar una entrada de dimensiones adecuadas (1050). Previamente se habrá liberado también la entrada cuya dimensión se demuestra insuficiente para que pueda ser reutilizada (1045). Esta etapa es equivalente a la ya descrita anteriormente y que consiste en extraer datos de la ELC (1020).
A propósito de la figura 10 se observara finalmente que a la salida de una operación que comporta una modificación de las tablas, es decir las operaciones de extracción (1025) o de inserción (1070) la entrada correspondiente de la tabla de división debe ser desbloqueada dado que la operación se ha terminado.
La figura 11 describe más particularmente la etapa (1050) de la figura 10 que consiste en buscar la mejor entrada a liberar cuando ya no hay más sitio libre para recibir los nuevos datos a insertar. El método se describe utilizando un ejemplo de una división de la tabla de control (1100) que comprende 8 entradas, de dimensión suficiente para recibir los nuevos datos, todos ellos utilizados. A efectos de mayor claridad, solamente se han representado los campos de la tabla de control necesarios para la comprensión del mecanismo de inserción.
En este ejemplo la división que indica la tabla de datos nº 1 (1110) y las entradas 0-7 (1120) comprende 3 listas encadenadas (1130) empezando respectivamente en las direcciones 1, 4 y 5 y comprendiendo respectivamente 3,3 y 2 entradas. Los inicios de las cadenas son en si mismos direccionados por la tabla de división ya descrita.
Para liberar una entrada el algoritmo de inserción va a utilizar una u otra de las dos informaciones siguientes presentes en la tabla de control:
-
El tiempo (hora/fecha) en el que va a expirar la validez de los datos asociados a la entrada (1140). Este tiempo debe ser comparado al tiempo actual para determinar, recorriendo todas las entradas de la división, si una de las entradas ha caducado ya y puede ser extraída. En la práctica este tiempo, tal como se ha indicado, adopta la forma de un valor que debe alcanzar un simple contador cuando el tiempo de validez de los datos va a expirar.
-
La utilización efectiva de las entradas (1150) de modo que se pueda determinar cual es la entrada que permanece no utilizada después del tiempo más prolongado (menos recientemente utilizado o "LRU", es decir "least recently used" en la literatura técnica en lengua inglesa sobre estos temas). En el ejemplo de la figura 11 el valor más elevado del campo "utilización" indica la entrada que queda inutilizada desde el periodo de tiempo más largo, es decir, la de la dirección 7 de la tabla de control (1155). Es esta entrada la que sería por lo tanto susceptible de ser sustituida.
\vskip1.000000\baselineskip
En función del tipo de utilización de la invención los criterios para escoger la extracción de una entrada en vez de otra podrán ser regulados de manera muy distinta. Una utilización habitual de estos parámetros consiste en considerar inicialmente si existe una entrada cuyos datos han caducado. Si existe como mínimo una entrada que satisface este criterio es por ejemplo la primera que se ha encontrado cuando se recorren todas las entradas (1160), que es seleccionada. Si ninguna tiene datos caducados se puede entonces escoger, extraer aquellas de las entradas que han permanecido inutilizadas desde el tiempo más prolongado (1155). Para evitar no obstante extraer datos demasiado deprisa un umbral podrá ser atribuido para tener en cuenta este último parámetro. Se podrá producir entonces que los criterios de extracción de una entrada no se han satisfecho en un primer tiempo en cuyo caso el algoritmo deberá prever una estrategia de replica menos limitativa, tal como la que permitiría escoger una entrada cuyo tiempo de expiración se encuentra lo más próximo posible del tiempo actual.
Se observara que si la invención no supone un método particular de utilización de estos parámetros para liberar una entrada, no obstante forma explícitamente la hipótesis de que una entrada será liberada siempre para poder recibir nuevos datos en la antememoria o cache.
El ejemplo de la figura 11 supone que al tener el tiempo actual o corriente un valor de 15 la entrada 2 de la tabla de control puede ser extraída puesto que los datos de esta entrada han expirado en el tiempo 12 que es anterior (1145). Dado que la entrada 2 forma parte de una lista encadenada esta debe ser modificada (1134) y la nueva entrada, que comprende solamente un elemento debe ser insertada (1132). El nuevo estado de la división es por lo tanto el indicado en la tabla de la parte baja (1105).
En este ejemplo se ha supuesto de manera implícita que la nueva entrada correspondía también a una nueva entrada en la tabla de división y que no existe colisión. Se habrá comprendido evidentemente que la nueva entrada podría corresponder a un valor de división que ya ha sido utilizado. En este caso se debería añadir a la lista encadenada correspondiente en lugar de formar una lista suplementaria que comprende en aquel momento un solo elemento. La manipulación de listas encadenadas es una práctica bien conocida de los expertos en este campo y no se describe por lo tanto de manera más detallada.
\newpage
Tal como se ha explicado en el curso de la descripción los procesos son libres de utilizar una ELC de forma competitiva. Solamente se aplican dos limitaciones o restricciones para evitar que un proceso pueda utilizar datos modificados de manera incompleta por otro proceso.
-
Tal como ya se ha indicado en la figura 8 cada entrada de la tabla de división comprende un indicador de bloqueo para impedir que dos procesos puedan intentar modificar simultáneamente una entrada de la ELC. Tal como se ha mostrado de manera más precisa en la etapa (945) en la figura 9, el acceso está bloqueado si un proceso que debe modificar las tablas de datos se ejecuta ya a partir de esta entrada. No obstante puede existir acceso simultáneo a una ELC habiendo entradas distintas en la tabla de división. Solamente los accesos múltiples a partir de un mismo valor de división para operaciones que deben comportar una modificación de las tablas, no son posibles puesto que conducirían a trabajar sobre iguales listas encadenadas.
-
Existe también un indicador de bloqueo en las entradas de la tabla de las divisiones descritas en la figura 7. El objetivo de este bloqueo es el de proteger la actualización de las listas encadenadas de entradas libres de los procesos independientes, que trabajarían en una misma división, desearían modificar. Las entradas de la tabla de divisiones están bloqueadas en especial cuando se libera lugar, es decir, en las etapas (1045), (1050) o (1025) descritas en la figura 10 y desbloqueadas en las mismas condiciones que las de la tabla de división.
Por lo tanto, las operaciones iniciadas por procesos que comportan una modificación de las tablas de datos se ejecutan siempre de manera exhaustiva antes que las entradas en curso de modificación puedan ser utilizadas de nuevo por otro proceso. Los procesos que deben trabajar sobre entradas comunes de las tablas de control se excluyen mutuamente durante su ejecución.
Tal como se ha indicado en la figura 11 se habrá observado por otra parte que el algoritmo de inserción supone que se puede tener que liberar una entrada en una tabla de control llena y que es necesario entonces recorrer esta tabla (1160) para seleccionar la entrada más apropiada. Para evitar que un proceso no pueda bloquear una entrada durante un tiempo demasiado largo la invención prevé que este recorrido podrá ser limitado, por ejemplo especificando un número máximo de lecturas consecutivas de la tabla de control. Es por ello que la tabla de división descrita en la figura 7, incluye también un parámetro para especificar de que lugar la búsqueda de una entrada debe reanudarse cada vez que este mecanismo es utilizado, a efectos de evitar que el recorrido de la tabla de control no se efectúe siempre a partir de un mismo punto, por ejemplo la primera entrada. Esto permite que todas las entradas sean finalmente recorridas y que cada una de ellas tenga la oportunidad de ser sustituida.
Al ser el proceso de duración finita o al ser limitado en lo que respecta a los que solicitan liberar una entrada recorriendo la tabla de control, no se puede producir ningún bloque permanente.
La figura 12 explica el caso de los procesos que deben alterar normalmente (1200) en el curso de su ejecución las tablas que controlan una ELC.
Es ante todo el caso de la inserción de nuevos datos, operación que se describe en la figura 10 que requiere que se cree o que se modifique las listas encadenadas.
Un proceso que debe modificar las tablas de una ELC y que no llegaría a su termino no debe dejar a estas en un estado no coherente, por ejemplo perturbando listas encadenadas que no podrían ser recorridas normalmente, lo que condenaría las entradas asociadas de las tablas de datos. La invención prevé que los procesos potencialmente peligrosos deben salvaguardar el contexto de las tablas (1210) antes de que se ejecuten, es decir, que deben memorizar todas las informaciones necesarias para poder restaurar el estado anterior de las tablas si no se ejecutan completamente o si se ha detectado una anomalía en el curso de la ejecución.
Cada proceso tiene un identificador único (ID) y utiliza una zona de memoria de trabajo dedicada en la que estas informaciones son memorizadas durante la totalidad de la duración de su ejecución. Por ejemplo, si se ha creado un bloqueo en la tabla de división, el identificador del proceso es registrado así como la referencia de la entrada de la tabla de división correspondiente. De manera similar los enlaces de una lista encadenada que va a ser modificada por un proceso son objeto de registro. Si el proceso vuelve a encontrar un problema (1232), una función asociada a los procesos es requerida encargándose de reestablecer el estado anterior (1240). En los ejemplos anteriores el bloqueo de la tabla de división será relajado y los enlaces de la lista encadenada serán reestablecidos. En el curso de su ejecución (1220) cada proceso establece no solamente estadísticas que sirven además para medir la eficacia de la memoria cache, sino también, un estado de terminación que es utilizado (1230) para determinar si el proceso se termina normalmente (1234).
La utilización de la salvaguarda y de la restauración del contexto de las tablas así como el establecimiento de un estado de terminación del proceso no requiere mecanismos propios de la invención. Todos los métodos bien conocidos por los especialistas de ingeniería lógica para poner en práctica estos mecanismos son susceptibles de ser utilizados y por lo tanto no se describen de manera más detallada.

Claims (7)

1. Método para mantener la coherencia como mínimo de una memoria cache o antememoria (150) accesible por una serie de procesos independientes (200) que pueden compartir datos comunes (210), efectuando dicha serie de procesos operaciones de búsqueda (900) simultáneas de dichos datos seguidos opcionalmente de una puesta a disposición (1010), de una extracción (1020) o de una inserción (1030) de dichos datos, dichas operaciones de búsqueda, de extracción y de inserción se ejecutan exhaustivamente una vez que han sido iniciadas por dicha serie de procesos independientes, se ejecutan exclusivamente una de otra cuando operan sobre dichos datos comunes y son cada una de ellas completamente reversibles, en cuyo método: dichas operaciones de búsqueda seguidas opcionalmente de una de dichas operaciones puesta a disposición, de extracción o de inserción de dichos datos tienen una duración finita o limitada de ejecución.
2. Método según la reivindicación 1 en el que dicha operación de inserción incluye una etapa de liberación (1050) de una entrada en una división de dicha tabla de control si dicha división es completa, consistiendo dicho método en: recorrer (1160) dicha división con la finalidad de realizar una elección, siendo posiblemente interrumpido dicho recorrido si se alcanza un tiempo de recorrido máximo; seleccionar la entrada (1145) más apropiada entre las entradas recorridas; liberar dicha entrada (1050).
3. Método según la reivindicación 2 en el que dicha etapa de selección consiste en seleccionar incondicionalmente la última de las entradas recorridas de dimensión suficiente para recibir los nuevos datos.
4. Método según la reivindicación 2 en el que dicha etapa de recorrido (1160) se caracteriza porque todas las entradas de dicha división son recorridas exhaustivamente.
5. Método según la reivindicación 4 en el que la exhaustividad del recorrido se obtiene memorizando (700) la última dirección consultada después de cada liberación.
6. Sistema y en especial memoria cache (150) utilizada para poner a disposición de una serie de unidades centrales de tratamiento (110), datos almacenados en una memoria de masa (130), comprendiendo dicho sistema medios adaptados para utilizar el método descrito en cualquiera de las reivindicaciones anteriores.
7. Soporte legible para ordenador que comprende las instrucciones de un programa ejecutable por dicho ordenador, utilizando dicho programa el método según cualquiera de las reivindicaciones 1 a 5.
ES06708695T 2005-03-16 2006-03-08 Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes. Active ES2312119T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US66191305P 2005-03-16 2005-03-16
US661913P 2005-03-16
EP05102054 2005-03-16
EP05102054A EP1703404A1 (fr) 2005-03-16 2005-03-16 Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants

Publications (1)

Publication Number Publication Date
ES2312119T3 true ES2312119T3 (es) 2009-02-16

Family

ID=34938990

Family Applications (1)

Application Number Title Priority Date Filing Date
ES06708695T Active ES2312119T3 (es) 2005-03-16 2006-03-08 Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes.

Country Status (12)

Country Link
US (1) US7971000B2 (es)
EP (2) EP1703404A1 (es)
JP (1) JP4999833B2 (es)
KR (1) KR101268437B1 (es)
CN (1) CN100594483C (es)
AT (1) ATE403187T1 (es)
AU (1) AU2006224669B2 (es)
BR (1) BRPI0607628A2 (es)
CA (1) CA2596290C (es)
DE (1) DE602006002032D1 (es)
ES (1) ES2312119T3 (es)
WO (1) WO2006097424A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100489814C (zh) * 2007-08-01 2009-05-20 杭州华三通信技术有限公司 一种共享缓存系统及实现方法
US9436502B2 (en) * 2010-12-10 2016-09-06 Microsoft Technology Licensing, Llc Eventually consistent storage and transactions in cloud based environment
CN103136080B (zh) * 2013-03-12 2016-07-13 青岛中星微电子有限公司 一种缓存锁定功能的测试方法和装置
US10049078B1 (en) * 2015-06-25 2018-08-14 Amazon Technologies, Inc. Accessing a memory location using a two-stage hash scheme
JP6674092B2 (ja) * 2016-02-10 2020-04-01 富士通株式会社 データ管理プログラム、データ管理装置、及びデータ管理方法
CN106020999B (zh) * 2016-05-31 2017-10-17 广东欧珀移动通信有限公司 一种操作系统内部的通信方法及设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103794B2 (en) * 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US6044430A (en) * 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
US6275832B1 (en) * 1998-09-21 2001-08-14 International Business Machines Corporation Providing transaction undo without logging
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
US7203709B2 (en) * 2000-05-12 2007-04-10 Oracle International Corporation Transaction-aware caching for access control metadata
US6842832B1 (en) * 2000-08-25 2005-01-11 International Business Machines Corporation Reclaim space reserve for a compressed memory system
KR100832222B1 (ko) * 2001-06-09 2008-05-23 자프 아게 메인 메모리 데이터베이스 시스템의 색인 구조를 위한캐쉬에 최적화된 동시성 제어방법
US7020746B2 (en) * 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7590803B2 (en) * 2004-09-23 2009-09-15 Sap Ag Cache eviction

Also Published As

Publication number Publication date
US7971000B2 (en) 2011-06-28
EP1866770B1 (fr) 2008-07-30
AU2006224669A1 (en) 2006-09-21
ATE403187T1 (de) 2008-08-15
EP1703404A1 (fr) 2006-09-20
WO2006097424A1 (fr) 2006-09-21
CN100594483C (zh) 2010-03-17
JP2008533600A (ja) 2008-08-21
CA2596290A1 (fr) 2006-09-21
EP1866770A1 (fr) 2007-12-19
CN101185068A (zh) 2008-05-21
KR101268437B1 (ko) 2013-06-04
BRPI0607628A2 (pt) 2010-04-20
US20080183970A1 (en) 2008-07-31
AU2006224669B2 (en) 2011-09-08
JP4999833B2 (ja) 2012-08-15
DE602006002032D1 (de) 2008-09-11
CA2596290C (fr) 2014-08-19
KR20080023285A (ko) 2008-03-13

Similar Documents

Publication Publication Date Title
ES2312119T3 (es) Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes.
CN100367239C (zh) 用于数据库系统的考虑了高速缓存的并行控制方案
EP1186999B1 (en) Method and apparatus for maintaining a linked list
CN100444135C (zh) 用于短暂高速缓存存储的方法和处理器
ES2776975T3 (es) Tabla de almacenamiento de datos de escaneado completo continuo y almacén de datos distribuido con tiempo de respuesta predecible para carga de trabajo impredecible
CN103473250B (zh) 用于保存文件系统节点的过去状态的方法与系统
US8762425B2 (en) Managing a data structure
CN103106286B (zh) 元数据的管理方法和装置
ES2309296T3 (es) Metodo de alamacenamiento de bloques de datos en una memoria.
JP6049699B2 (ja) 暗号化データを管理するためのシステムおよび方法
CN109923534A (zh) 对具有未提交事务的数据库记录的多版本并发控制
US20100306236A1 (en) Data Policy Management System and Method for Managing Data
CN107038222A (zh) 数据库缓存实现方法及其系统
CN102486753B (zh) 构建及允许访问高速缓存的方法、设备及存储系统
ES2764761T3 (es) Gestión de identificadores únicos en una base de datos
ES2350243T3 (es) Procedimiento para el control de un sistema de datos relacional.
CN107391041A (zh) 一种数据访问方法及装置
ES2958718T3 (es) Actualización de datos almacenados en caché
KR20140031260A (ko) 캐시 메모리 구조 및 방법
US6460028B1 (en) System and method for data organization
Majumdar A quick survey of multiversion concurrency algorithms
Munro et al. Dynamic Optimality Refuted--For Tournament Heaps
ES2963288T3 (es) Base de datos con marcas de tiempo relacionadas con el campo
Pollack et al. Managing Scope
Freij Efficient Crash Consistency in Emerging Secure Persistent Memory Architectures