La gestión de memoria es una de las funciones más críticas de un sistema operativo. Se encarga de administrar la memoria principal del sistema, asignando y liberando espacio de manera eficiente para los procesos en ejecución. En esta sección, exploraremos los conceptos fundamentales, técnicas y mecanismos utilizados en la gestión de memoria.
Conceptos Básicos de Gestión de Memoria
Memoria Principal
- Definición: La memoria principal, también conocida como RAM (Random Access Memory), es el área de almacenamiento temporal donde se cargan los programas y datos que están siendo utilizados por el procesador.
- Características:
- Volátil: Los datos se pierden cuando se apaga el sistema.
- Rápida: Permite acceso rápido a los datos en comparación con el almacenamiento secundario.
Espacio de Direccionamiento
- Definición: Conjunto de direcciones que un proceso puede utilizar para acceder a la memoria.
- Tipos:
- Espacio de Direccionamiento Físico: Direcciones reales en la memoria RAM.
- Espacio de Direccionamiento Lógico: Direcciones generadas por el programa, que son traducidas a direcciones físicas por el sistema operativo.
Técnicas de Gestión de Memoria
Particionamiento
-
Particionamiento Fijo:
- La memoria se divide en particiones de tamaño fijo.
- Cada partición puede contener un proceso.
- Ventajas: Sencillo de implementar.
- Desventajas: Puede llevar a fragmentación interna (espacio desperdiciado dentro de las particiones).
-
Particionamiento Dinámico:
- La memoria se divide en particiones de tamaño variable según las necesidades de los procesos.
- Ventajas: Reduce la fragmentación interna.
- Desventajas: Puede llevar a fragmentación externa (espacio libre disperso).
Paginación
- Definición: Técnica que divide la memoria física y el espacio de direccionamiento lógico en bloques de tamaño fijo llamados páginas y marcos, respectivamente.
- Funcionamiento:
- El espacio de direccionamiento lógico se divide en páginas.
- La memoria física se divide en marcos.
- Las páginas se asignan a marcos disponibles.
- Ventajas: Elimina la fragmentación externa y simplifica la gestión de memoria.
- Desventajas: Puede introducir fragmentación interna si las páginas no se utilizan completamente.
Segmentación
- Definición: Técnica que divide el espacio de direccionamiento lógico en segmentos de tamaño variable según la estructura lógica del programa (por ejemplo, código, datos, pila).
- Funcionamiento:
- Cada segmento tiene una base y un límite.
- Las direcciones lógicas consisten en un número de segmento y un desplazamiento.
- Ventajas: Facilita la protección y compartición de memoria.
- Desventajas: Puede llevar a fragmentación externa.
Paginación por Segmentos
- Definición: Combina paginación y segmentación para aprovechar las ventajas de ambas técnicas.
- Funcionamiento:
- El espacio de direccionamiento lógico se divide en segmentos.
- Cada segmento se divide en páginas.
- Las páginas se asignan a marcos disponibles en la memoria física.
Ejemplo Práctico: Paginación
Supongamos que tenemos un espacio de direccionamiento lógico de 16 KB dividido en páginas de 1 KB y una memoria física de 32 KB dividida en marcos de 1 KB.
Tabla de Páginas
Página | Marco |
---|---|
0 | 5 |
1 | 8 |
2 | 1 |
3 | 7 |
4 | 3 |
5 | 9 |
6 | 2 |
7 | 6 |
8 | 4 |
9 | 0 |
10 | 10 |
11 | 11 |
12 | 12 |
13 | 13 |
14 | 14 |
15 | 15 |
Traducción de Direcciones
Para traducir una dirección lógica a una dirección física:
- Dividimos la dirección lógica en número de página y desplazamiento.
- Usamos la tabla de páginas para encontrar el marco correspondiente.
- Combinamos el número de marco con el desplazamiento para obtener la dirección física.
Ejemplo:
- Dirección lógica: 2050 (en decimal)
- Tamaño de página: 1024 bytes (1 KB)
- Número de página = 2050 / 1024 = 2
- Desplazamiento = 2050 % 1024 = 2
- Marco correspondiente (según la tabla de páginas) = 1
- Dirección física = (1 * 1024) + 2 = 1026
Ejercicios Prácticos
Ejercicio 1: Particionamiento Fijo
Dado un sistema con 4 particiones de 4 KB cada una y los siguientes procesos con sus tamaños: P1 (2 KB), P2 (5 KB), P3 (3 KB), P4 (6 KB). Asigna los procesos a las particiones y calcula la fragmentación interna.
Ejercicio 2: Paginación
Dado un espacio de direccionamiento lógico de 8 KB dividido en páginas de 1 KB y una memoria física de 16 KB dividida en marcos de 1 KB, completa la siguiente tabla de páginas y traduce la dirección lógica 3072 a una dirección física.
Página | Marco |
---|---|
0 | 3 |
1 | 7 |
2 | 5 |
3 | 1 |
4 | 6 |
5 | 2 |
6 | 4 |
7 | 0 |
Soluciones
Solución Ejercicio 1
- P1 (2 KB) -> Partición 1 (4 KB) -> Fragmentación interna: 2 KB
- P2 (5 KB) -> No cabe en ninguna partición
- P3 (3 KB) -> Partición 2 (4 KB) -> Fragmentación interna: 1 KB
- P4 (6 KB) -> No cabe en ninguna partición
- Fragmentación interna total: 2 KB + 1 KB = 3 KB
Solución Ejercicio 2
- Dirección lógica: 3072
- Tamaño de página: 1024 bytes (1 KB)
- Número de página = 3072 / 1024 = 3
- Desplazamiento = 3072 % 1024 = 0
- Marco correspondiente (según la tabla de páginas) = 1
- Dirección física = (1 * 1024) + 0 = 1024
Conclusión
La gestión de memoria es esencial para el funcionamiento eficiente de un sistema operativo. A través de técnicas como el particionamiento, la paginación y la segmentación, el sistema operativo puede asignar y liberar memoria de manera efectiva, minimizando la fragmentación y optimizando el uso de los recursos. En el próximo módulo, exploraremos la gestión de almacenamiento, que complementa la gestión de memoria al manejar el almacenamiento secundario.
Fundamentos de Sistemas Operativos
Módulo 1: Introducción a los Sistemas Operativos
- Conceptos Básicos de Sistemas Operativos
- Historia y Evolución de los Sistemas Operativos
- Tipos de Sistemas Operativos
- Funciones Principales de un Sistema Operativo
Módulo 2: Gestión de Recursos
Módulo 3: Concurrencia
- Conceptos de Concurrencia
- Hilos y Procesos
- Sincronización y Exclusión Mutua
- Problemas Clásicos de Concurrencia