El almacenamiento de un solo nivel ( SLS ) o memoria de un solo nivel es un término informático que ha tenido dos significados. Ambos significados están relacionados, ya que en ambos casos las páginas de memoria pueden estar en la memoria primaria ( RAM ) o en la memoria secundaria (disco), y la ubicación física de una página no es importante para un proceso.
El término se refería originalmente a lo que ahora se suele llamar memoria virtual , introducida en 1962 por el sistema Atlas de la Universidad de Manchester . En este sistema, los datos de la memoria principal se movían automáticamente hacia y desde un tambor magnético para que pareciera que la memoria principal tenía la misma capacidad de almacenamiento que el tambor, mucho más grande. [ 1 ]
En el uso moderno, el término suele referirse a la organización de un sistema informático en el que no existen archivos , sino únicamente objetos persistentes (a veces denominados segmentos ). El software, muy similar a la memoria virtual y desarrollado a partir de ella, permite que los datos almacenados externamente se asignen a los espacios de direcciones de los procesos , se manipulen en la memoria y se guarden de forma invisible en el almacenamiento. Se considera que todo el almacenamiento del ordenador es un único plano bidimensional de direcciones (segmentos y direcciones dentro de los segmentos).
El concepto de objeto persistente fue introducido por primera vez por Multics a mediados de la década de 1960, en un proyecto compartido por el MIT , General Electric y Bell Labs . [ 2 ] También se implementó como memoria virtual, con una implementación física que incluía varios niveles de tipos de almacenamiento. Multics, por ejemplo, originalmente tenía tres niveles: memoria principal, un tambor de alta velocidad y discos. Multics fue muy influyente, y el almacenamiento de un solo nivel se convirtió en un concepto muy popular a principios de la década de 1970.
Entre los principales esfuerzos por popularizar el concepto se encontraba el proyecto IBM Future Systems de 1971, pero este proyecto se descontroló y se canceló en 1975. Posteriormente, los laboratorios de gama media de IBM retomaron el concepto y lo integraron en el System/38 , lanzado en 1978. En este sistema, la memoria se asigna no solo por tamaño, sino también con un nombre. Los datos escritos en dicha asignación se almacenan de forma invisible en la memoria secundaria, y cuando el programa vuelve a asignar esa memoria en el futuro, los datos almacenados se cargan de nuevo de forma invisible. IBM posee patentes para el almacenamiento de un solo nivel implementado en el sistema operativo IBM i de los IBM Power Systems . [ 3 ] [ 4 ]
Diseño
En los primeros sistemas informáticos, existía una clara distinción entre la memoria principal y el almacenamiento secundario . Para procesar datos, los programas utilizaban código explícito para leerlos del almacenamiento secundario a la memoria principal, manipularlos en esta y, posteriormente, volver a escribirlos en el almacenamiento secundario. Esta distinción se mantiene hasta el día de hoy en la mayoría de los sistemas operativos .
En la década de 1960, se introdujeron el tiempo compartido y la multiprogramación . En estos sistemas, varios programas podían ejecutarse simultáneamente, y cada uno requería su propia memoria. Esto dio lugar a sistemas a veces complejos, donde los programas especificaban la cantidad mínima y deseada de memoria que necesitaban para funcionar, y el sistema operativo dividía la memoria principal en bloques, generalmente conocidos como segmentos . Dado que ahora podía haber muchos programas ejecutándose al mismo tiempo, cada programa individual podía disponer de menos memoria de la que necesitaba.
Los intentos por solucionar este problema llevaron al desarrollo de la memoria virtual (VM). Los sistemas de VM dividen la memoria principal en una serie de segmentos de tamaño fijo, o "páginas", y los asignan a los programas según sea necesario. Los programas desconocen la existencia del sistema de VM; simplemente solicitan memoria y se les concede o deniega, como antes. La diferencia radica en que cada programa no se limita a una fracción de la memoria principal reservada, sino que tiene acceso a toda la memoria, una memoria principal "virtual" que suele ser mucho mayor que la memoria física real. A medida que los programas utilizan la memoria física, hasta que esta se agota, el sistema de VM examina las páginas en busca de datos que no se necesitan en ese momento y los escribe en un almacenamiento secundario. Esto se conoce como "paginación". Cuando un programa intenta acceder a valores en una memoria paginada, el sistema de VM interviene de nuevo, escribiendo otra página de memoria y cargando la solicitada. Esto es invisible para el programa; para este, parece que hay una única memoria grande y que sus datos están siempre disponibles. Los programas escritos en un sistema de máquina virtual son, por lo demás, similares a los de máquinas anteriores. Para almacenar datos de forma permanente, el programa aún debía tener código para leer y escribir datos desde y hacia el almacenamiento secundario, generalmente un sistema de archivos , pero también, en ocasiones, un motor de base de datos .
Un sistema de almacenamiento de un solo nivel modifica este modelo al extender la gestión de la memoria virtual (VM) desde el simple manejo de un archivo de paginación a un nuevo concepto donde la "memoria principal" es todo el sistema de almacenamiento secundario. En este modelo, no se necesita un sistema de archivos separado de la memoria; los programas simplemente asignan memoria de forma habitual, la cual se escribe de forma invisible en el almacenamiento y se recupera según sea necesario. El programa ya no necesita código para transferir datos desde y hacia el almacenamiento secundario. Por ejemplo, el programa puede generar una serie de tarjetas de visita en memoria, que se escribirán de forma invisible. Cuando el programa se vuelva a cargar, esos datos reaparecerán inmediatamente en su memoria. Y como los programas también forman parte de esta misma memoria unificada, reiniciar una máquina o iniciar sesión hace que todos esos programas y sus datos reaparezcan.
El sistema operativo se encarga de localizar las páginas y ponerlas a disposición para su procesamiento. Si una página se encuentra en la memoria principal, está disponible de inmediato. Si una página está en el disco, se produce un fallo de página y el sistema operativo la carga en la memoria principal. Los procesos no realizan operaciones de entrada/salida explícitas en la memoria secundaria: en su lugar, las lecturas de la memoria secundaria se realizan como resultado de los fallos de página; las escrituras en la memoria secundaria se realizan cuando las páginas que han sido modificadas desde que se leyeron de la memoria secundaria a la principal se vuelven a escribir en su ubicación en la memoria secundaria.
Diseño de System/38 e IBM i
El diseño de almacenamiento de un solo nivel de IBM fue concebido e impulsado originalmente por Frank Soltis y Glenn Henry a finales de la década de 1970 como una forma de crear una implementación de transición hacia computadoras con memoria de estado sólido al 100% . La introducción de la memoria de burbuja llevó a la creencia de que las unidades de disco quedarían obsoletas y serían reemplazadas por completo por algún tipo de memoria de estado sólido. El sistema System/38 fue diseñado para ser independiente del tipo de memoria de hardware utilizada para el almacenamiento secundario.
Sin embargo, esto no se ha materializado, ya que, si bien la memoria de estado sólido se ha abaratado exponencialmente, las unidades de disco también se han abaratado de forma similar; por lo tanto, la relación de precios a favor de las unidades de disco continúa: capacidades mucho mayores que la memoria de estado sólido, acceso mucho más lento y mucho menos costosas.
En System/38 e IBM i, a todos los datos almacenados se les asigna una dirección, accesible mediante instrucciones del procesador, en la memoria virtual , y se hace referencia a ellos mediante esa dirección, independientemente de si se encuentran o no en la memoria física. Si los datos a los que se refiere esa dirección no están en la memoria física, se produce un fallo de página . El fallo de página es gestionado por software de bajo nivel que lee la página en un marco de página disponible en la memoria principal. [ 5 ] [ 6 ]
En la implementación de almacenamiento de un solo nivel de IBM i, los fallos de página se dividen en dos categorías: fallos de base de datos y fallos ajenos a la base de datos. Los fallos de base de datos se producen cuando una página asociada a un objeto de base de datos relacional, como una tabla, una vista o un índice, no se encuentra actualmente en el almacenamiento primario. Los fallos ajenos a la base de datos se producen cuando cualquier otro tipo de objeto no se encuentra actualmente en el almacenamiento primario.
Véase también
Referencias
- ↑ Kilburn, Tom (abril de 1962). "Sistema de almacenamiento de un nivel" (PDF) . IRE Trans. Electronic Computers .
- ↑ Memoria virtual, procesos y compartición en Multics , Robert C. Daley, Jack B. Dennis. Consultado el 7 de agosto de 2014.
- ↑ Woodie, Alex. "Frank Soltis analiza un posible futuro para el almacenamiento de un solo nivel" . itjungle.com . IT Jungle . Consultado el 4 de diciembre de 2020 .
- ↑ Novedades técnicas del sistema IBM/38 (PDF) , diciembre de 1978
- ↑ French, RE; Collins, RW; Loen, LW (julio de 1980). "Gestión del almacenamiento de la máquina System/38". IBM System/38 Technical Developments (PDF) (Segunda edición). págs. 63–66 .
- ↑ "Administración de memoria AS/400" .
- Sistemas operativos de IBM
- AS/400