Está en la página 1de 16

ADMINISTRACION DE MEMORIA 1

Administración De Memoria Sistemas Operativos

Brayan Marcelo Vargas Yujra

Univalle

Nota del autor

Estudiante de Ingeniería en sistemas Informáticos; tal cual duerme mucho para

escapar de la realidad.
ADMINISTRACION DE MEMORIA 2

Resumen

La administración de memoria se refiere a los distintos métodos y operaciones que

se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y

programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el

espacio disponible.

Para poder lograrlo, la operación principal que realiza es la de trasladar la

información que deberá ser ejecutada por el procesador, a la memoria principal.

Actualmente esta administración se conoce como Memoria Virtual ya que no es la

memoria física del procesador sino una memoria virtual que la representa. Entre algunas

ventajas, esta memoria permite que el sistema cuente con una memoria más extensa

teniendo la misma memoria real, con lo que esta se puede utilizar de manera más eficiente.

Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario.
ADMINISTRACION DE MEMORIA 3

Las técnicas que existen para la carga de programas en la memoria son:

Partición Fija

que es la división de la memoria libre en varias partes (de igual o distinto tamaño).

La Partición Dinámica

Que son las particiones de la memoria en tamaños que pueden ser variables según la

cantidad de memoria que necesita cada proceso.

Operaciones

Entre las principales operaciones que desarrolla la administración de memoria se

encuentra la reubicación, que consiste en trasladar procesos activos dentro y fuera de la

memoria principal para maximizar la utilización del procesador; la protección de mecanismos

que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido

de códigos y datos, con lo que el mecanismo de protección permite que ciertos procesos de

un mismo programa que comparten una tarea tengan memoria en común.

Funciones y operaciones del administrador de memoria.

El único espacio de almacenamiento que el procesador puede utilizar directamente,

mas allá de los registros (que, si bien le son internos y sumamente rápidos, pero de capacidad

muy escasa) es la memoria física. Todas las arquitecturas de procesador tienen instrucciones

para interactuar con la memoria, pero ninguna lo tiene para hacerlo con medios persistentes

de almacenamiento, como las unidades de disco 1. Cabe mencionar que cuando veamos en un

texto referencia al almacenamiento primario siempre se referirá a la memoria, mientras que el

almacenamiento secundario se refiere a los discos u otros medios de almacenamiento


ADMINISTRACION DE MEMORIA 4

persistente. Todos los programas que deseemos ejecutar deben cargarse a la memoria del

sistema antes de ser utilizados.

Memoria Real.

La memoria real o principal es en donde son ejecutaos los programas y procesos de

una computadora y es el espacio real que existe en memoria para que se ejecuten los

procesos.

Por lo general esta memoria es de mayor costo que la memoria secundaria; pero el

acceso a la información contenida en ella es de más rápido acceso.

Solo la memoria cache es más rápida que la principal, pero su costo es a su vez

mayor.

Cuando no existe memoria virtual no hay diferenciación entre el espacio de

direcciones y la memoria real; el espacio de direcciones que puede ser usado en los

programas tiene idéntico tamaño al espacio real posible. Si se utiliza memoria virtual, el

espacio de direcciones disponibles para los programas es aquel determinado por el tamaño de

la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real

disponible (el espacio de la memoria virtual será mayor que el de la memoria real).

La organización y administración de la “memoria principal”, “memoria primaria” o

“memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño

de los Sistemas Operativos.

Los términos “memoria” y ”almacenamiento” se consideran equivalentes.

Los programas y datos deben estar en el almacenamiento principal para:

-Poderlos ejecutar

-Referenciar los directamente


ADMINISTRACION DE MEMORIA 5

Vinculacion de las instrucciones y los datos a la memoria

Pueden realizarse en tres estadios:

- Tiempo de compilación: Si se conoce previamente la ubicación de

la memoria, puede generarse código absoluto; el código debe ser

recompilado si la dirección de inicio cambia.

- Tiempo de carga: Si se conocen las direcciones en tiempo de

compilación, debe generarse código reubicable.

- Tiempo de ejecución: La vinculación se retarda hasta el tiempo de

corrida si los procesos pueden ser movidos durante su ejecución de

una posición de memoria a otra.

Overlays (Superposiciones). - Mantiene solo aquellas instrucciones y datos que se

requieren en un momento determinado; se utilizaba cuando el proceso era mayor que la

cantidad de memoria destinada para el, se implementaba por el usuario, no se requerida un

soporte especial del sistema operativo, su programación era compleja.

Antiguamente los programas no corrían si no tena la memoria requerida, hoy si se

puede debido a que se carga por partes.

Asignación Continua
ADMINISTRACION DE MEMORIA 6

-Generalmente la memoria principal tiene dos particiones; para el sistema

operativo residente que puede ser colocado en memoria baja o alta de acuerdo

a la ubicación del vector de interrupciones; los procesos de los usuarios se

colocan en otra partición,

-Asignación de partición única; se usa el esquema de registro de reubicación

para proteger a los procesos de los usuarios entre si y para proteger el código y

los datos del sistema operativo; el registro de ubicación tiene el valor de la

dirección física más pequeña; el registro limite.

-Asignación con múltiples particiones; Hueco: bloque de memoria disponible;

se establecen varios huecos (particiones) de diferentes tamaños a través de la

memoria, cuando un proceso llega, es asignado a un hueco lo suficientemente

grande para contenerlo; el sistema operativo mantiene información acerca de

las particiones asignadas.

Asignación con múltiples particiones fijas

Particiones configuradas por el usuario, predeterminadas, su uso en OS/360/MFT

(multiprogramación con un número fijo de tareas). Recolocación: El lanzador debe

determinar que direcciones recolocarse vs Carga absoluta por parte.

Protección: bloques de 2k con clave o Registro de base y limite, FRAGMENTACION, no se

puede aplicare overlays en este esquema de administración de memoria Sistemas de

protección; registro limite y base; protección por clave fragmentación interna; desperdicio de

espacios de memoria.

Asignación con particiones variables

El tamaño de la partición se establece en el momento de cargar el programa y

dependiendo su tamaño.
ADMINISTRACION DE MEMORIA 7

Los procesos tienen que correr en memoria contigua. Tiene un problema de fragmentación

externa, por los huecos que quedan después de ejecución; La solución es mover el proceso,

que se están ejecutando, proceso de compresión. Condensación: Fusión de dos huecos

contiguos.

El esquema actual de administración de memoria nace de los dos anteriores. Nace la

paginación y la segmentación.

Problema de la asignación dinámica de memoria

Cómo satisfacer la solicitud de un tamaño n a partir de huecos libres Estrategia

de colocación:

 -Peor ajuste: Hueco más grande

 -Siguiente ajuste

 -Estrategia más sofisticada: Sistema Buddy -Listas de huecos con tamaños potencias

de 2

El primer ajuste y el mejor ajuste son mejores que el peor ajuste en términos de velocidad y

utilización de almacenamiento.

Almacenamiento virtual

 de obtener acceso a direcciones en un espacio de almacenamiento mucho

mayor que el disponible en el almacenamiento primario del sistema.

 SO Atlas, Manchester 1960

 Disociación de las direcciones (V) a las que hace referencia un proceso en

ejecución de las direcciones disponibles en el almacenamiento primario (R)


ADMINISTRACION DE MEMORIA 8

o Las direcciones calculadas por procesos no necesariamente las

disponibles en el almacenamiento primario

o Dirección real: dirección disponible en memoria.

o Dirección virtual: direcciones usadas por procesos.

Para pasar eficientemente los programas de la memoria de intercambio a la principal, se debe

hacer por hw.

Intercambio/Swap

 Un proceso puede intercambiarse temporalmente de memoria a un

almacenamiento de respaldo y luego puede ser retomado hacia la memoria

para su ejecución.

 El almacenamiento de respaldo se hace en el disco, que debe ser rápido y tener

suficiente espacio para ubicar copia de todas las imágenes de memoria para

todos los usuarios; debe proveer acceso directo a estas imagines de memoria.

 Descargar (swap out), cargar (swap in) – Variante de intercambio en

algoritmos de planificación por prioridad; el proceso de baja prioridad se saca

de memoria de tal forma que el proceso de mayor prioridad pueda ser cargado

y ejecutado

 La mayor parte del tiempo es tiempo de transferencia; este es directamente

proporcional a la cantidad de memoria intercambiada.

 Existen versiones modificadas de intercambio de los diferentes sistemas,

ejemplo Unix, Linux y Windows.

Fundamentos de la memoria virtual

El procesador utiliza y genera direcciones virtuales. Parte del mapa de memoria

(virtual) está en disco (swap) y parte en memoria principal-La MMU (memory


ADMINISTRACION DE MEMORIA 9

management unit) traduce las direcciones virtuales en físicas. -La MMU produce un

fallo de página (trap) cuando la dirección no está en memoria principal. -El SO trata el

fallo de página, haciendo un transvase entre la memoria principal y el área de

intercambio (swap disco)

En el esquema de MMU, el valor del registro de reubicación de suma a cada dirección

generada por el proceso del usuario al momento de ser enviado a la memoria. El

programa del usuario se preocupaba de las direcciones lógicas; nunca tenía que

preocuparse por las direcciones físicas.

Almacenamiento virtual

Espacio de direcciones virtuales, V: espacio de direcciones a las que

puede hacer referencia un proceso Espacio de direcciones reales, R: Almacenamiento

físico disponible, en general V >> R Traducción dinámica de direcciones (DAT): V

===> R Mapa de correspondencia de traducción de direcciones: por bloques: =s

paginas, <> segmento. Direccionamiento bidimensional: Bloque, desplazamiento

Paginacion: División de la memoria y de los programas en tamaños iguales.

Segmentación: División de la memoria en tamaños correspondientes a los

componentes del programa y los programas son divididos en sus componentes básicos

(ej, sub-rutinas) “La paginación es a la partición fija como la segmentación a las

particiones variables” EL almacenamiento virtual de un usuario no tiene que ser

contiguo ni siquiera en almacenamiento secundario.

Conjunto de trabajo: Conjunto de líneas de código cargadas en memoria real

necesarias para realizar una tarea determinada (para realizar una tarea no se necesitan

todas las líneas de código del programa)


ADMINISTRACION DE MEMORIA 10

Paginación

El espacio de direcciones lógicas de un proceso no necesariamente es

contiguo; los procesos se ubican en memoria física donde luego quedan disponibles.

Se divide la memoria física en bloques de tamaño fijo llamados marcos (los tamaños

con potencias de 2 entre 512 bytes y 8192 bytes).

Se divide la memoria lógica en bloques del mismo tamaño llamados páginas Se

mantiene el rastro de todos los marcos. Para correr un programa de tamaño n páginas,

se requiere encontrar n marcos libres y cargar el programa.

Se debe poner a punto una tabla para traducir las direcciones físicas a las lógicas. Se

puede presentar fragmentación interna.

Funciones de memoria virtual

Las funciones de memoria virtual permiten que un proceso manipule o

determine el estado de las páginas en su espacio de direcciones virtuales. Pueden

realizar las siguientes operaciones:

 Reserve un intervalo del espacio de direcciones virtuales de un proceso. La reserva

del espacio de direcciones no asigna ningún almacenamiento físico, pero impide que

otras operaciones de asignación usen el intervalo especificado. No afecta a los

espacios de direcciones virtuales de otros procesos. La reserva de páginas evita el

consumo ilimitado del almacenamiento físico, al tiempo que permite que un proceso

reserve un intervalo de su espacio de direcciones en el que una estructura de datos

dinámica pueda crecer. El proceso puede asignar almacenamiento físico para este

espacio, según sea necesario.

 Confirme un intervalo de páginas reservadas en el espacio de direcciones virtuales de

un proceso para que el almacenamiento físico (ya sea en RAM o en disco) sea

accesible solo para el proceso de asignación.


ADMINISTRACION DE MEMORIA 11

 Especifique acceso de lectura y escritura, de solo lectura o sin acceso para un

intervalo de páginas confirmadas. Esto difiere de las funciones de asignación estándar

que siempre asignan páginas con acceso de lectura y escritura.

 Libere un intervalo de páginas reservadas, lo que hace que el proceso de llamada

disponga del intervalo de direcciones virtuales para las operaciones de asignación

posteriores.

 Descommita un intervalo de páginas confirmadas, libere su almacenamiento físico y

haga que esté disponible para la asignación posterior por cualquier proceso.

 Bloquee una o varias páginas de memoria confirmada en memoria física (RAM) para

que el sistema no pueda intercambiar las páginas al archivo de paginación.

 Obtenga información sobre un intervalo de páginas en el espacio de direcciones

virtuales del proceso de llamada o un proceso especificado.

 Cambie la protección de acceso de un intervalo especificado de páginas confirmadas

en el espacio de direcciones virtuales del proceso de llamada o de un proceso

especificado.

Para obtener más información, vea los siguientes temas.

Asignar memoria virtual

Las funciones de memoria virtual manipulan páginas de memoria. Las

funciones usan el tamaño de una página en el equipo actual para redondear los

tamaños y direcciones especificados.

La función VirtualAlloc realiza una de las siguientes operaciones:

 Reserva una o más páginas gratuitas.

 Confirma una o varias páginas reservadas.

 Reserva y confirma una o varias páginas gratuitas.


ADMINISTRACION DE MEMORIA 12

Puede especificar la dirección inicial de las páginas que se van a reservar o confirmar,

o bien puede permitir que el sistema determine la dirección. La función redondea la

dirección especificada al límite de página adecuado. Las páginas reservadas no son

accesibles, pero las páginas confirmadas se pueden asignar con acceso

PAGE_READWRITE, PAGE_READONLY o PAGE_NOACCESS . Cuando se

confirman las páginas, los cargos de memoria se asignan desde el tamaño general de

la RAM y los archivos de paginación en el disco, pero cada página se inicializa y

carga en memoria física solo en el primer intento de leer o escribir en esa página.

Puede usar referencias de puntero normales para acceder a la memoria confirmada por

la función VirtualAlloc .

Comparación de métodos de asignación de memoria

A continuación se muestra una breve comparación de los distintos métodos de

asignación de memoria:

 CoTaskMemAlloc

 GlobalAlloc

 HeapAlloc

 LocalAlloc

 malloc

 new

 VirtualAlloc

Aunque las funciones GlobalAlloc, LocalAlloc y HeapAlloc asignan en última

instancia memoria del mismo montón, cada una proporciona un conjunto ligeramente

diferente de funcionalidad. Por ejemplo, se puede indicar a HeapAlloc que genere una

excepción si no se pudo asignar memoria, una funcionalidad que no está disponible

con LocalAlloc. LocalAlloc admite la asignación de identificadores que permiten


ADMINISTRACION DE MEMORIA 13

mover la memoria subyacente mediante una reasignación sin cambiar el valor de

identificador, una funcionalidad no disponible con HeapAlloc.

A partir de Windows de 32 bits, GlobalAlloc y LocalAlloc se implementan como

funciones contenedoras que llaman a HeapAlloc mediante un identificador para el

montón predeterminado del proceso. Por lo tanto, GlobalAlloc y LocalAlloc tienen

una sobrecarga mayor que HeapAlloc.

Dado que los diferentes asignadores de montón proporcionan una funcionalidad

distintiva mediante diferentes mecanismos, debe liberar memoria con la función

correcta. Por ejemplo, la memoria asignada con HeapAlloc debe liberarse

con HeapFree y no LocalFree o GlobalFree. La memoria asignada

con GlobalAlloc o LocalAlloc debe consultarse, validarse y liberarse con la función

global o local correspondiente.

La función VirtualAlloc permite especificar opciones adicionales para la asignación

de memoria. Sin embargo, sus asignaciones usan una granularidad de página, por lo

que el uso de VirtualAlloc puede dar lugar a un mayor uso de memoria.

La función malloc tiene la desventaja de depender del tiempo de ejecución.

El nuevo operador tiene la desventaja de ser dependiente del compilador y

dependiente del lenguaje.

La función CoTaskMemAlloc tiene la ventaja de funcionar bien en C, C++o Visual

Basic. También es la única manera de compartir memoria en una aplicación basada en

COM, ya que MIDL usa CoTaskMemAlloc y CoTaskMemFree para serializar la

memoria.

Liberación de memoria virtual

A continuación se muestra una breve comparación de los distintos

métodos de asignación de memoria:


ADMINISTRACION DE MEMORIA 14

 CoTaskMemAlloc

 GlobalAlloc

 HeapAlloc

 LocalAlloc

 malloc

 new

 VirtualAlloc

Aunque las funciones GlobalAlloc, LocalAlloc y HeapAlloc asignan en última

instancia memoria del mismo montón, cada una proporciona un conjunto ligeramente

diferente de funcionalidad. Por ejemplo, se puede indicar a HeapAlloc que genere

una excepción si no se pudo asignar memoria, una funcionalidad que no está

disponible con LocalAlloc. LocalAlloc admite la asignación de identificadores que

permiten mover la memoria subyacente mediante una reasignación sin cambiar el

valor de identificador, una funcionalidad no disponible con HeapAlloc.

A partir de Windows de 32 bits, GlobalAlloc y LocalAlloc se implementan como

funciones contenedoras que llaman a HeapAlloc mediante un identificador para el

montón predeterminado del proceso. Por lo tanto, GlobalAlloc y LocalAlloc tienen

una sobrecarga mayor que HeapAlloc.

Dado que los diferentes asignadores de montón proporcionan una funcionalidad

distintiva mediante diferentes mecanismos, debe liberar memoria con la función

correcta. Por ejemplo, la memoria asignada con HeapAlloc debe liberarse

con HeapFree y no LocalFree o GlobalFree. La memoria asignada

con GlobalAlloc o LocalAlloc debe consultarse, validarse y liberarse con la función

global o local correspondiente.


ADMINISTRACION DE MEMORIA 15

La función VirtualAlloc permite especificar opciones adicionales para la asignación

de memoria. Sin embargo, sus asignaciones usan una granularidad de página, por lo

que el uso de VirtualAlloc puede dar lugar a un mayor uso de memoria.

La función malloc tiene la desventaja de depender del tiempo de ejecución.

El nuevo operador tiene la desventaja de ser dependiente del compilador y

dependiente del lenguaje.

La función CoTaskMemAlloc tiene la ventaja de funcionar bien en C, C++o Visual

Basic. También es la única manera de compartir memoria en una aplicación basada en

COM, ya que MIDL usa CoTaskMemAlloc y CoTaskMemFree para serializar la

memoria.
ADMINISTRACION DE MEMORIA 16

Referencias

Microsoft 2022 Administración de memoria

EcuRed 2022 Administración de memoria

Anexos

- http://sistop.gwolf.org/html/04_administracion_de_memoria.html

- https://learn.microsoft.com/es-es/windows/win32/memory/memory-management

- https://www.ecured.cu/Administración_de_Memoria

También podría gustarte