stringtranslate.com

Gestión de memoria (sistemas operativos)

En los sistemas operativos , la gestión de memoria es la función encargada de administrar la memoria principal del ordenador . [1] : 105–208 

La función de administración de memoria realiza un seguimiento del estado de cada ubicación de memoria, ya sea asignada o libre . Determina cómo se asigna la memoria entre los procesos que compiten, decidiendo cuáles obtienen memoria, cuándo la reciben y cuánta se les permite. Cuando se asigna memoria, determina qué ubicaciones de memoria se asignarán. Realiza un seguimiento de cuándo se libera o no se asigna memoria y actualiza el estado.

Esto es distinto de la gestión de memoria de la aplicación , que es la forma en que un proceso administra la memoria que le asigna el sistema operativo.

Técnicas de gestión de la memoria

Asignación única contigua

La asignación única es la técnica de administración de memoria más sencilla. Toda la memoria del ordenador, normalmente con excepción de una pequeña parte reservada para el sistema operativo, está disponible para una única aplicación. MS-DOS es un ejemplo de un sistema que asigna memoria de esta manera. Un sistema integrado que ejecute una única aplicación también podría utilizar esta técnica.

Un sistema que utiliza una asignación contigua única puede realizar múltiples tareas intercambiando el contenido de la memoria para cambiar de usuario. Las primeras versiones del sistema operativo MUSIC utilizaban esta técnica.

Asignación particionada

La asignación particionada divide la memoria principal 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 comienza y desasignarla cuando el trabajo termina.

La asignación de particiones normalmente requiere algún tipo de soporte de hardware para evitar que los trabajos interfieran entre sí o con el sistema operativo. El IBM System/360 utiliza una técnica de bloqueo y llave . Las series UNIVAC 1108 , PDP-6 y PDP-10 y GE-600 utilizan registros de base y límites para indicar los rangos de memoria accesible.

Las particiones pueden ser estáticas , es decir, definidas en la carga inicial del programa (IPL) o en el momento del arranque , o por el operador de la computadora , o dinámicas , es decir, creadas automáticamente para un trabajo específico. IBM System/360 Operating System Multiprogramming with a Fixed Number of Tasks (MFT) es un ejemplo de particionamiento estático, y Multiprogramming with a Variable Number of Tasks (MVT) es un ejemplo de particionamiento dinámico. MVT y sus sucesores utilizan el término región para distinguir las particiones dinámicas de las estáticas en otros sistemas. [2]

Las particiones pueden ser reubicables con registros base, como en las series UNIVAC 1108, PDP-6 y PDP-10, y GE-600. Las particiones reubicables pueden compactarse para proporcionar fragmentos más grandes de memoria física contigua. La compactación mueve áreas de memoria "en uso" para eliminar "agujeros" o áreas de memoria no utilizadas causadas por la terminación del proceso, con el fin de crear áreas libres contiguas más grandes. [3]

Algunos sistemas permiten que las particiones se intercambien con el almacenamiento secundario para liberar memoria adicional. Las primeras versiones de la opción de tiempo compartido (TSO) de IBM intercambiaban usuarios dentro y fuera de las particiones de tiempo compartido . [4] [a]

Gestión de memoria paginada

La asignación paginada divide la memoria principal 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 administración de memoria de hardware asigna páginas a marcos. La memoria física se puede asignar en función de la 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 con un solo espacio de direcciones que ejecutan todos los procesos dentro de un único espacio de direcciones, como IBM i , que ejecuta todos los procesos dentro de un gran espacio de direcciones, e IBM OS/VS1 y OS/VS2 (SVS) , que ejecutan todos los trabajos en un único espacio de direcciones virtuales de 16 MiB.

La memoria paginada se puede paginar según demanda cuando el sistema puede mover páginas según sea necesario entre la memoria primaria y la 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 normalmente 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 normalmente 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 una memoria no definida para ese segmento.

Es posible implementar la segmentación con o sin paginación. Sin el soporte de paginación, el segmento es la unidad física que se intercambia 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 el identificador 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 4 GiB 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. [5]

El sistema operativo Multics es probablemente el sistema más conocido que implementa la memoria segmentada. Los segmentos de Multics son subdivisiones de la memoria física de la computadora de hasta 256 páginas, cada una de las cuales tiene un tamaño de 1K palabras de 36 bits, lo que da como resultado un tamaño máximo de segmento de 1 MiB (con bytes de 9 bits, como se usa en Multics). Un proceso podría tener hasta 4046 segmentos. [6]

Despliegue/despliegue

Rollout/rollin (RO/RI) es una técnica de gestión de memoria del sistema operativo de computadora en la que todo el código y los datos no compartidos 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 pueden ser implementados "a pedido o... cuando se espera algún evento largo". [7] El rollout/rollin se usaba comúnmente en sistemas de tiempo compartido , [8] donde el "tiempo de reflexión" del usuario era relativamente largo en comparación con el tiempo para realizar el intercambio.

A diferencia del almacenamiento virtual (paginación o segmentación), el rollout/rollin no requiere ningún hardware de gestió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 volver a sus ubicaciones de memoria originales. El rollout/rollin ha sido reemplazado en gran medida por la memoria virtual.

El despliegue/despliegue era una característica opcional de la multiprogramación con un número variable de tareas (MVT) de OS/360

El rollout/rollin permite la expansión dinámica y temporal de un trabajo en particular más allá de su región especificada originalmente. Cuando un trabajo necesita más espacio, el rollout/rollin intenta obtener almacenamiento no asignado para el uso del trabajo. Si no hay tal almacenamiento no asignado, se implementa otro trabajo (es decir, se transfiere al almacenamiento auxiliar) para que su región pueda ser utilizada por el primer trabajo. Cuando el primer trabajo lo libera, este almacenamiento adicional vuelve a estar disponible, ya sea (1) como almacenamiento no asignado, si esa era su fuente, o (2) para recibir el trabajo que se va a transferir de nuevo al almacenamiento principal (rollin). [9]

En OS/360, el rollout/rollin se usaba solo para trabajos por lotes, y el rollin no se producía hasta que finalizaba el paso del trabajo que tomaba prestada la región.

Véase también

Notas

  1. ^ Conocidas como regiones TSO

Referencias

  1. ^ ab Madnick, Stuart; Donovan, John (1974). Sistemas operativos. McGraw-Hill Book Company. ISBN 0-07-039455-5.
  2. ^ IBM Corporation (1970). Sistema operativo IBM System/360: conceptos y funciones (PDF) . pág. 73.
  3. ^ Samanta, D. (2004). Estructuras de datos clásicas. PHI Learning Pvt. Ltd. pág. 94. ISBN 8120318749.
  4. ^ IBM Corporation (1972). Guía de opciones de tiempo compartido del sistema operativo IBM System/360 (PDF) . pág. 10.(GC28-6698-5)
  5. ^ Intel Corporation. Manual del desarrollador de software de arquitectura Intel IA-32 Volumen 1: Arquitectura básica .
  6. ^ Green, Paul. «Multics Virtual Memory – Tutorial and Reflections». Archivado desde el original el 5 de marzo de 2001. Consultado el 9 de mayo de 2012 .
  7. ^ Walraet, Bob (2014). Programación, el desafío imposible. Elsevier. pág. 124. ISBN 978-0-444-87128-2. Recuperado el 24 de agosto de 2018 .
  8. ^ "rollin/rollout" Simposio internacional sobre modelado, medición y evaluación del rendimiento informático. Association for Computing Machinery. 29-31 de marzo de 1976. pág. 137. Consultado el 24 de agosto de 2018 .
  9. ^ IBM Corporation (junio de 1970). IBM System/360 Operating System: .Concepts and Facilities (PDF) . p. 55 . Consultado el 24 de agosto de 2018 .