2. Introducción
● La memoria es uno de los recursos más valiosos que
gestiona el sistema operativo. Uno de los elementos
principales que caracterizan un proceso es la memoria
que utiliza.
● Es típicamente una memoria de acceso aleatorio
(RAM) cuyo tiempo de acceso es mucho más
pequeño que el de la memoria secundaria (discos
duros, máquinas en red,...).
● El sistema operativo debe administrar toda la memoria
física y asignarla tanto a los subsistemas del núcleo
como a los programas de usuario. Cuando el sistema
arranca, el núcleo reserva parte de la memoria
principal para su código y sus estructuras de datos
estáticas.
3. Memoria Principal / Física
● Ésta está lógicamente separada de la de cualquier
otro proceso del sistema. Un proceso no puede
acceder, al espacio de memoria asignado a otro
proceso, lo cual es imprescindible para la seguridad y
estabilidad del sistema.
4. Direccionamiento
El direccionamiento es una parte importante de la gestión
de memoria, puesto que influye mucho en la visión del
mismo por parte de un proceso, como en el
aprovechamiento del hardware y el rendimiento del
sistema.
En Linux, además, un
proceso tiene dos espacios
de memoria: el espacio
de memoria del usuario,
único para ese proceso, y
el espacio de memoria del
kernel, idéntico en todos los procesos.
5. Gestión de Memoria
Objetivos del sistema de Gestión de Memoria:
● Ofrecer a cada proceso un espacio lógico propio.
● Proporcionar protección entre procesos.
● Permitir que los procesos compartan memoria.
● Dar soporte a las distintas regiones del proceso.
● Maximizar el rendimiento del sistema.
● Proporcionar a los procesos mapas de memoria
muy grandes.
6. Espacio de direcciones de un
proceso
Los espacios de direcciones involucrados en
la gestión de la memoria son de tres tipos:
● Espacio de direcciones físicas
● Espacio de direcciones lógicas
● Espacio de direcciones lineales
7. Unidad de Manejo de Memoria
Sus funciones son las siguientes:
● Convertir las direcciones lógicas emitidas por los
procesos en direcciones físicas.
● Comprobar que la conversión se puede realizar. La
dirección lógica podría no tener una dirección física
asociada.
● Comprobar que el proceso que intenta acceder a
una cierta dirección de memoria tiene permisos
para ello.
8. Subsistema de Gestión de
Memoria
Es la parte del núcleo responsable de gestionar la
memoria principal e interactúa fuertemente con la
unidad de administración de memoria (MMU) que
funcionalmente se sitúa entre la CPU y la memoria
principal.
● Decide qué procesos residen en memoria principal
(al menos una parte).
● Maneja parte del espacio de direcciones virtuales
que ha quedado fuera.
● Controla la cantidad de memoria principal.
● Gestiona el intercambio de procesos entre memoria
principal y memoria secundaria o dispositivo de
swap.
9. Otras Características
● Ofrecer al proceso más memoria de la que hay
físicamente disponible. Se emplean técnicas de
swapping y paginación por demanda.
● Aprovechar la memoria mediante técnicas Copy-on-
write.
● Mapeado de ficheros sobre memoria.
● En general, mejorar el rendimiento del sistema
mediante diversas técnicas a la hora de asignar o
liberar memoria (Buddy system, Slab allocator,
caches, etc).
10. Paginación
Cuando se crea un proceso, puede, en principio utilizar
todo el espacio de usuario de 2Gbytes (menos 128
Kbytes). Este espacio se encuentra dividido en páginas
de tamaño fijo, cualquiera de las cuales se puede cargar
en la memoria principal.
Estados de las páginas:
● Disponible: Páginas que no están actualmente usadas
por este proceso.
● Reservada: Conjunto de páginas contiguas (juntas)
que el gestor de memoria virtual separa para un
proceso pero que no se cuentan para la cuota.
● Asignada: Las páginas para las cuales el gestor de la
memoria virtual ha reservado espacio en el fichero de
paginación.
11. Paginación
La distinción entre memoria reservada y asignada es
muy útil debido a que minimiza la cantidad de espacio
de disco que debe guardarse para un proceso en
particular, manteniendo espacio libre en disco para
otros procesos.
Además permite que un hilo o un proceso declare una
petición de una cantidad de memoria que puede
proporcionarse rápidamente si se necesita.
12. CONCLUSIONES
Hemos visto que Linux hace uso de las ventajas de la
segmentación y de los circuitos de paginación de los
procesadores i386 para traducir direcciones lógicas en
direcciones físicas.
Podemos también decir que alguna porción de RAM
está permanentemente asignada al kernel y utilizada
para almacenar el código del kernel y estructuras de
datos estáticas del mismo.
La restante parte de la RAM se denomina memoria
dinámica, y ésta es un recurso muy valioso y
necesitado no sólo por los procesos sino también por
el propio kernel.
13. CONCLUSIONES
De hecho el rendimiento global del sistema depende
fuertemente de cómo se gestiona la memoria
dinámica.
Por tanto, todos los sistemas operativos multitarea
actuales tratan de optimizar el uso de la memoria
dinámica, asignándola sólo cuando es estrictamente
necesario y liberándola tan pronto como sea posible.
14. Referencias
● William Stallings (2005). Sistemas
Operativos. España: Pearson.
● Salvador Ros Muñoz, José Manuel Díaz
Martínez (2007). Sistemas Operativos II.
Departamento de Informática y Automática
UNED.
● Antonio Leopoldo Corral Lira. (2008).
Diseño de Sistemas Operativos. Ingeniería de
Informática de la Escuela Politécnica Superior
de la UAL.