Memoria implantada

Implantación de falsa memoria

Es muy común que incluso las funciones puras requieran algo de memoria adicional para sus operaciones. Si el tamaño de esta memoria se conoce en tiempo de compilación, podemos asignar esta memoria en la pila con std::array o un array de C. Pero el tamaño a menudo depende de la entrada, por lo que a menudo recurrimos a asignaciones dinámicas en el montón a través de std::vector.

Podríamos declarar el vector como estático para reutilizar el espacio asignado entre llamadas, pero eso conlleva varios problemas. En primer lugar, ya no es seguro para los hilos, pero eso puede arreglarse fácilmente utilizando thread_local en su lugar. En segundo lugar, la memoria no se libera hasta que el programa o el hilo termina. Digamos que estamos bien con eso. Y por último, tenemos que acordarnos de borrar el vector cada vez, porque no sólo la memoria persistirá entre las llamadas a la función, sino también los datos.

Este es el patrón que utilizo siempre que quiero evitar la asignación dinámica en cada llamada. El problema es que no creo que la semántica de esto sea muy aparente si no se conoce el patrón. thread_local da miedo, hay que acordarse de limpiar el vector y aunque el tiempo de vida del objeto ahora se extiende más allá del ámbito de la función, no es seguro devolver una referencia a él, porque otra llamada a la misma función lo modificaría.

Leer más  La melilla

Memoria del ordenador

Me han asignado un proyecto en C en el que se me pide que implemente una sencilla biblioteca de gestión de memoria. La forma en que funciona es que tiene una función init que toma un puntero (void*) a un trozo de memoria asignado por otro programa en C junto con el tamaño del trozo y tiene otras dos funciones para asignar un bloque del tamaño solicitado desde dicho trozo y desasignar un bloque cuando se le pasa el puntero que apunta a él.

El problema es que se me pide que mantenga las estructuras de gestión dentro del propio chunk y no tengo ni idea de cómo hacerlo. He pensado en dividir el chunk en frames, pero ¿cómo puedo hacer un seguimiento de los frames asignados sin usar nada de fuera del chunk?

Edit: La función Init se usa así. Hay un programa que llamará a la biblioteca que voy a escribir. Asignará un trozo de memoria usando malloc o calloc. Entonces llamará a la función init de la biblioteca y le pasará el puntero a ese trozo de memoria junto con el tamaño del trozo.

La memoria implementada utilizando los chips semiconductores es

En la imagen anterior, podemos ver que todo el proceso se divide en 6 páginas y de estas 6 páginas, 2 páginas se utilizan con frecuencia y debido a esto, estas 2 páginas se ponen en la memoria física. Si hay alguna solicitud de las páginas presentes en la memoria física, entonces se sirve directamente, de lo contrario, si la página no está presente en la memoria física, entonces se llama un fallo de página y cada vez que se produce un fallo de página, entonces cargamos la página solicitada en la memoria y este proceso se conoce como demanda de paginación.demanda de paginaciónSiempre que se produce un fallo de página, entonces el proceso de carga de la página en la memoria se llama demanda de paginación. Así, en la paginación por demanda, cargamos el proceso sólo cuando lo necesitamos. Inicialmente, cuando un proceso entra en ejecución, entonces en ese momento sólo se cargan aquellas páginas que son necesarias para la ejecución inicial del proceso y no se cargan otras páginas. Pero con el tiempo, cuando hay una necesidad de otras páginas, entonces la CPU encontrará esa página de la memoria secundaria y cargará esa página en la memoria principal.

Leer más  Bidones paletizados

La pila se implanta en la memoria

La implantación de la memoria es una técnica utilizada en psicología cognitiva para investigar la memoria humana. En los estudios de implantación de la memoria, los investigadores hacen creer a las personas que recuerdan un acontecimiento que en realidad nunca ocurrió. Los falsos recuerdos que se han implantado con éxito en la memoria de las personas incluyen el recuerdo de haberse perdido en un centro comercial cuando era niño, de haber dado un paseo en globo aerostático y de haber puesto baba en el pupitre de un profesor en la escuela primaria[1][2][3].

Los primeros estudios formales en los que se utilizó la implantación de la memoria se publicaron a principios de la década de 1990, siendo el más famoso “La formación de falsos recuerdos” (comúnmente conocido como el estudio “Perdido en el centro comercial”) de Loftus y Pickrell[1] La técnica básica utilizada en este estudio consistía en pedir a los miembros de la familia de un participante que proporcionaran narraciones de acontecimientos que habían sucedido cuando eran jóvenes y luego añadir otro acontecimiento que definitivamente no había sucedido. Los participantes veían estas cuatro narraciones y se les decía que trataran de recordar lo máximo posible de cada acontecimiento. En una serie de estudios en los que se utilizó la implantación de la memoria, alrededor del 37% de las personas han llegado a recordar partes o eventos enteros que en realidad nunca sucedieron[4].