En los sistemas operativos , la administración de la memoria es la función responsable de administrar la memoria primaria de la computadora . [1] : págs. 105–208
La función de administración de memoria realiza un seguimiento del estado de cada ubicación de la memoria, ya sea asignada o libre . Determina cómo se distribuye la memoria entre los procesos en competencia, decidiendo cuál obtiene memoria, cuándo la recibe y cuánto se le permite. Cuando se asigna memoria, determina qué ubicaciones de memoria se asignarán. Realiza un seguimiento cuando la memoria se libera o no se asigna y actualiza el estado.
Esto es distinto de la gestión de la memoria de la aplicación , que es la forma en que un proceso gestiona la memoria que le asigna el sistema operativo.
Técnicas de gestión de la memoria
Asignación contigua única
La asignación única es la técnica de gestión de memoria más sencilla. Toda la memoria de la computadora, generalmente con la excepción de una pequeña porción reservada para el sistema operativo, está disponible para una sola aplicación. MS-DOS es un ejemplo de un sistema que asigna memoria de esta manera. Un sistema integrado que ejecuta una sola aplicación también puede utilizar esta técnica.
Un sistema que utiliza la asignación contigua sola todavía puede realizar varias tareas mediante el canje de los contenidos de la memoria para cambiar entre los usuarios. Las primeras versiones del sistema operativo MUSIC usaban esta técnica.
Asignación particionada
La asignación particionada divide la memoria primaria en múltiples particiones de memoria , generalmente áreas contiguas de memoria. Cada partición puede contener toda la información para un trabajo o tarea específicos . La administración de memoria consiste en asignar una partición a un trabajo cuando se inicia y desasignarlo cuando finaliza el trabajo.
La asignación particionada generalmente requiere cierto soporte de hardware para evitar que los trabajos interfieran entre sí o con el sistema operativo. El IBM System / 360 utilizó una técnica de candado y llave . Otros sistemas usaban registros de base y límites que contenían los límites de la partición y marcaban accesos inválidos. El Registro de límites de almacenamiento UNIVAC 1108 tenía conjuntos de base / límite separados para instrucciones y datos. El sistema aprovechó el entrelazado de memoria para colocar lo que se denominó banco i y banco d en módulos de memoria separados. [2]
Las particiones pueden ser estáticas , que se definen en la Carga del programa inicial (IPL) o en el momento de inicio o por el operador de la computadora , o dinámicas , es decir, creadas automáticamente para un trabajo específico. La multiprogramación del sistema operativo IBM System / 360 con un número fijo de tareas (MFT) es un ejemplo de partición estática, y la multiprogramación con un número variable de tareas (MVT) es un ejemplo de dinámica. MVT y sus sucesores utilizan el término región para distinguir las particiones dinámicas de las estáticas en otros sistemas. [3]
Las particiones pueden reubicarse utilizando memoria de tipo hardware , como Burroughs Corporation B5500 , o registros de base y límites como PDP-10 o GE-635 . Las particiones reubicables se pueden compactar para proporcionar trozos más grandes de memoria física contigua. La compactación mueve áreas de memoria "en uso" para eliminar "huecos" o áreas de memoria no utilizadas causadas por la terminación del proceso para crear áreas libres contiguas más grandes. [4]
Algunos sistemas permiten que las particiones se intercambien al almacenamiento secundario para liberar memoria adicional. Las primeras versiones de la Opción de tiempo compartido de IBM (TSO) intercambiaban usuarios dentro y fuera de una única partición de tiempo compartido . [5]
Gestión de memoria paginada
La asignación paginada divide la memoria primaria de la computadora en unidades de tamaño fijo llamadas marcos de página , y el espacio de direcciones virtuales del programa en páginas del mismo tamaño. La unidad de gestión de memoria de hardware asigna páginas a marcos. La memoria física se puede asignar por página, mientras que el espacio de direcciones aparece contiguo.
Por lo general, con la administración de memoria paginada, cada trabajo se ejecuta en su propio espacio de direcciones. Sin embargo, existen algunos sistemas operativos de espacio de direcciones único que ejecutan todos los procesos dentro de un espacio de direcciones único, como IBM i , que ejecuta todos los procesos en un espacio de direcciones grande, e IBM OS / VS2 SVS , que ejecuta todos los trabajos en un solo espacio de 16MiB espacio de direcciones virtuales.
La memoria paginada se puede paginar por demanda cuando el sistema puede mover páginas según sea necesario entre la memoria primaria y secundaria.
Gestión de memoria segmentada
La memoria segmentada es la única técnica de gestión de memoria que no proporciona al programa del usuario un "espacio de direcciones lineal y contiguo". [1] : 165 Los segmentos son áreas de memoria que generalmente corresponden a una agrupación lógica de información, como un procedimiento de código o una matriz de datos. Los segmentos requieren soporte de hardware en forma de una tabla de segmentos que generalmente contiene la dirección física del segmento en la memoria, su tamaño y otros datos como bits de protección de acceso y estado (intercambiado, intercambiado, etc.)
La segmentación permite una mejor protección de acceso que otros esquemas porque las referencias de memoria son relativas a un segmento específico y el hardware no permitirá que la aplicación haga referencia a la memoria no definida para ese segmento.
Es posible implementar la segmentación con o sin paginación. Sin soporte de paginación, el segmento es la unidad física intercambiada dentro y fuera de la memoria si es necesario. Con el soporte de paginación, las páginas suelen ser la unidad de intercambio y la segmentación solo agrega un nivel adicional de seguridad.
Las direcciones en un sistema segmentado generalmente consisten en la identificación del segmento y un desplazamiento relativo a la dirección base del segmento, definido como desplazamiento cero.
La arquitectura Intel IA-32 (x86) permite que un proceso tenga hasta 16,383 segmentos de hasta 4GiB cada uno. Los segmentos IA-32 son subdivisiones del espacio de direcciones lineales de la computadora , el espacio de direcciones virtuales proporcionado por el hardware de paginación. [6]
El sistema operativo Multics es probablemente el sistema más conocido que implementa memoria segmentada. Los segmentos de Multics son subdivisiones de la memoria física de la computadora de hasta 256 páginas, cada página tiene un tamaño de 1K palabras de 36 bits, lo que da como resultado un tamaño de segmento máximo de 1MiB (con bytes de 9 bits, como se usa en Multics). Un proceso puede tener hasta 4046 segmentos. [7]
Despliegue / rollin
Rollout / Rollin (RO / RI) es una técnica de administración de memoria del sistema operativo de computadora en la que todo el código no compartido y los datos de un programa en ejecución se intercambian a la memoria auxiliar (disco o tambor) para liberar el almacenamiento principal para otra tarea. Los programas se pueden implementar "al final de la demanda o ... cuando se espera un evento largo". [8] Rollout / rollin se usaba comúnmente en sistemas de tiempo compartido , [9] donde el "tiempo de reflexión" del usuario era relativamente largo en comparación con el tiempo para hacer el intercambio.
A diferencia del almacenamiento virtual ( paginación o segmentación), la implementación / rollin no requiere un hardware de administración de memoria especial; sin embargo, a menos que el sistema tenga hardware de reubicación, como un mapa de memoria o registros de base y límites , el programa debe revertirse a sus ubicaciones de memoria originales. Rollout / Rollin ha sido reemplazado en gran medida por la memoria virtual.
El despliegue / rollin era una característica opcional de la multiprogramación OS / 360 con un número variable de tareas (MVT)
Rollout / Rollin permite la expansión dinámica temporal de un trabajo en particular más allá de su región originalmente especificada. Cuando un trabajo necesita más espacio, el despliegue / rollo intenta obtener almacenamiento no asignado para el uso del trabajo. Si no hay tal almacenamiento sin asignar, se implementa otro trabajo, es decir, se transfiere al almacenamiento auxiliar, de modo que su región pueda ser utilizada por el primer trabajo. Cuando se libera con el primer trabajo, este almacenamiento adicional vuelve a estar disponible, ya sea (1) como almacenamiento no asignado, si ese era su origen, o (2) para recibir el trabajo que se transferirá de nuevo al almacenamiento principal (incorporado). [10]
Tenga en cuenta que la implementación / rollin en OS / 360 se usó solo para trabajos por lotes, y el rollin no ocurre hasta que finaliza el paso de trabajo que toma prestada la región.
Ver también
- Compromiso excesivo de la memoria
- Protección de la memoria
- segmentación de memoria x86
Referencias
- ^ a b Madnick, Stuart; Donovan, John (1974). Sistemas operativos . Compañía de libros McGraw-Hill. ISBN 0-07-039455-5.
- ^ Sperry Rand (1970). Sistema multiprocesador UNIVAC 1108: Descripción del sistema (PDF) . pag. 3-3.
- ^ IBM Corporation (1970). Sistema operativo IBM System / 360: conceptos e instalaciones (PDF) . pag. 73.
- ^ Samanta, D. (2004). Estructuras de datos clásicas . PHI Learning Pvt. Ltd. p. 94. ISBN 8120318749.
- ^ IBM Corporation (1972). Guía de opciones de tiempo compartido del sistema operativo IBM System / 360 (PDF) . pag. 10.(GC28-6698-5)
- ^ Corporación Intel. IA-32 Manual del desarrollador de software de arquitectura Intel Volumen 1: Arquitectura básica .
- ^ Verde, Paul. "Memoria Virtual Multics - Tutorial y Reflexiones" . Consultado el 9 de mayo de 2012 . CS1 maint: parámetro desalentado ( enlace )
- ^ Walraet, Bob (2014). Programación, el desafío imposible . Elsevier. pag. 124. ISBN 978-0-444-87128-2. Consultado el 24 de agosto de 2018 . CS1 maint: parámetro desalentado ( enlace )
- ^ Simposio internacional "rollin / rollout" sobre modelado, medición y evaluación del rendimiento informático . Asociación para Maquinaria de Computación. 29 al 31 de marzo de 1976. p. 137 . Consultado el 24 de agosto de 2018 . CS1 maint: parámetro desalentado ( enlace )
- ^ IBM Corporation (junio de 1970). Sistema operativo IBM System / 360: .Conceptos e instalaciones (PDF) . pag. 55 . Consultado el 24 de agosto de 2018 . CS1 maint: parámetro desalentado ( enlace )