stringtranslate.com

Gestión de memoria (sistemas operativos)

En los sistemas operativos , la gestión de memoria es la función encargada de gestionar la memoria primaria 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 en competencia, decidiendo quién obtiene memoria, cuándo la recibe y cuánta se le permite. Cuando se asigna la memoria, se 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 se diferencia 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 única contigua

La asignación única es la técnica de gestión de memoria más sencilla. Toda la memoria de la computadora, generalmente con 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 ejecute una única aplicación también podría utilizar esta técnica.

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

Asignación particionada

La asignación particionada divide la memoria primaria en múltiples particiones de memoria , generalmente áreas de memoria contiguas. Cada partición puede contener toda la información para un trabajo o tarea específica . La gestión de la memoria consiste en asignar una partición a un trabajo cuando se inicia y desasignarla cuando finaliza el trabajo.

La asignación particionada generalmente requiere algún 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 utilizaban registros de base y límites que contenían los límites de la partición y marcaban accesos no válidos. El Registro de límites de almacenamiento UNIVAC 1108 tenía conjuntos de base/encuadernados separados para instrucciones y datos. El sistema aprovechó el entrelazado de memoria para colocar lo que se llamó banco i y banco d en módulos de memoria separados. [2]

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. 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 ser reubicables usando memoria escrita por hardware , como la Burroughs Corporation B5500 , o registros de base y límites como el PDP-10 o GE-635 . Las particiones reubicables se pueden compactar para proporcionar porciones 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 cambiar las particiones al 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 particiones de tiempo compartido . [5] [un]

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 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 parece contiguo.

Normalmente, con la gestión de memoria paginada, cada trabajo se ejecuta en su propio espacio de direcciones. Sin embargo, existen algunos sistemas operativos con un único 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/VS2 (SVS) , que ejecuta todos los trabajos en un solo espacio de direcciones. único espacio de direcciones virtuales de 16MiB.

La memoria paginada puede ser paginada bajo 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 (intercambiados, intercambiados, 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 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 que se intercambia dentro y fuera de la memoria si es necesario. Con soporte de paginación, las páginas suelen ser la unidad de intercambio y la segmentación sólo añade un nivel adicional de seguridad.

Las direcciones en un sistema segmentado generalmente constan de 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 lineal 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 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 podría tener hasta 4046 segmentos. [7]

Lanzamiento/rollin

Rollout/rollin (RO/RI) es una técnica de administración de memoria del sistema operativo de computadora donde 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 implementarse "al final de la demanda o... cuando se espera algún evento prolongado". [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 realizar el intercambio.

A diferencia del almacenamiento virtual (paginación o segmentación), el despliegue/rollin no requiere ningún hardware especial de administración de memoria; 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. El despliegue/rollin ha sido reemplazado en gran medida por la memoria virtual.

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

La implementación/rollin permite la expansión temporal y dinámica de un trabajo en particular más allá de su región especificada originalmente. Cuando un trabajo necesita más espacio, el despliegue/rollin intenta obtener almacenamiento no asignado para el uso del trabajo. Si no existe dicho almacenamiento no asignado, se implementa otro trabajo (es decir, se transfiere al almacenamiento auxiliar) para que el primer trabajo pueda utilizar su región. Cuando el primer trabajo lo libera, 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á nuevamente al almacenamiento principal (integrado). [10]

En OS/360, la implementación/rollin se utilizaba sólo para trabajos por lotes, y la rollin no se produce hasta que finaliza el paso de trabajo que toma prestada la región.

Ver también

Notas

  1. ^ Conocidas como regiones TSO

Referencias

  1. ^ ab Madnick, Estuardo; Donovan, Juan (1974). Sistemas operativos. Compañía de libros McGraw-Hill. ISBN 0-07-039455-5.
  2. ^ Sperry Rand (1970). Sistema multiprocesador UNIVAC 1108: Descripción del sistema (PDF) . pag. 3-3.
  3. ^ Corporación IBM (1970). Sistema operativo IBM System/360: conceptos e instalaciones (PDF) . pag. 73.
  4. ^ Samanta, D. (2004). Estructuras de datos clásicas. PHI Aprendizaje Pvt. Limitado. Ltd. pág. 94.ISBN _ 8120318749.
  5. ^ Corporación IBM (1972). Guía de opciones de tiempo compartido del sistema operativo IBM System/360 (PDF) . pag. 10.(GC28-6698-5)
  6. ^ Corporación Intel. Manual del desarrollador de software de arquitectura Intel IA-32 Volumen 1: Arquitectura básica .
  7. ^ Verde, Pablo. "Memoria Virtual Multics - Tutorial y Reflexiones". Archivado desde el original el 5 de marzo de 2001 . Consultado el 9 de mayo de 2012 .
  8. ^ Walraet, Bob (2014). Programación, El Reto Imposible. Elsevier. pag. 124.ISBN _ 978-0-444-87128-2. Consultado el 24 de agosto de 2018 .
  9. ^ 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 .
  10. ^ IBM Corporation (junio de 1970). Sistema operativo IBM System/360: Conceptos e instalaciones (PDF) . pag. 55 . Consultado el 24 de agosto de 2018 .