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:

  1. Dividimos la dirección lógica en número de página y desplazamiento.
  2. Usamos la tabla de páginas para encontrar el marco correspondiente.
  3. 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)
  1. Número de página = 2050 / 1024 = 2
  2. Desplazamiento = 2050 % 1024 = 2
  3. Marco correspondiente (según la tabla de páginas) = 1
  4. 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)
  1. Número de página = 3072 / 1024 = 3
  2. Desplazamiento = 3072 % 1024 = 0
  3. Marco correspondiente (según la tabla de páginas) = 1
  4. 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.

© Copyright 2024. Todos los derechos reservados