Gestión de Memoria y Planificación de Procesos en Sistemas Operativos: Tipos, Algoritmos y Estrategias

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 5,6 KB

Gestión de Memoria en Sistemas Operativos

La gestión de memoria es un aspecto crucial en el diseño de sistemas operativos. Se refiere a los métodos y mecanismos utilizados para administrar la memoria principal de un sistema informático, asignando porciones de memoria a los procesos que la solicitan y liberándola cuando ya no es necesaria.

Tipos de Gestión de Memoria

Podemos clasificar las técnicas de gestión de memoria en dos categorías principales:

  • Contigua: En este esquema, a cada proceso se le asigna un bloque contiguo de memoria. El proceso no puede estar fragmentado en diferentes áreas de memoria.
  • No Contigua: Este esquema permite que un proceso ocupe múltiples regiones de memoria no contiguas. Esto ofrece mayor flexibilidad y eficiencia en el uso de la memoria.

Gestión de Memoria Contigua

Dentro de la gestión de memoria contigua, encontramos dos variantes principales:

  • Particiones Fijas: La memoria se divide en particiones de tamaño fijo. Estas particiones no pueden cambiar de tamaño durante la ejecución del sistema. Existen dos tipos:
    • Direccionamiento Absoluto: A cada proceso se le asigna una partición específica de memoria desde el principio.
    • Direccionamiento Relativo: Un proceso puede ocupar cualquier partición libre, independientemente de su ubicación.
  • Particiones Dinámicas: A cada proceso se le asigna exactamente la cantidad de memoria que necesita. El tamaño de las particiones varía dinámicamente.

Gestión de Memoria No Contigua

La gestión de memoria no contigua ofrece mayor flexibilidad. Las técnicas más comunes son:

  • Paginación: Los procesos se dividen en bloques de igual tamaño llamados páginas. La memoria física también se divide en bloques del mismo tamaño llamados marcos. Las páginas de un proceso pueden cargarse en cualquier marco disponible.
  • Segmentación: Los procesos se dividen en segmentos, que pueden ser de diferente tamaño. Cada segmento representa una unidad lógica del programa (código, datos, pila, etc.). Solo se asigna la memoria necesaria para cada segmento.
  • Segmentación Paginada: Combina las ventajas de la segmentación y la paginación. Los segmentos se dividen en páginas, lo que permite una mayor flexibilidad y eficiencia en el uso de la memoria.

Algoritmos de Reemplazo de Páginas

Cuando se produce un fallo de página (es decir, se intenta acceder a una página que no está en memoria principal), es necesario reemplazar una página existente por la página requerida. Los algoritmos de reemplazo determinan qué página se debe desalojar.

  • FIFO (First-In, First-Out): Se reemplaza la página que se cargó primero en memoria.
  • Óptimo: Se reemplaza la página que tardará más tiempo en ser referenciada en el futuro (es un algoritmo teórico, no implementable en la práctica).
  • LRU (Least Recently Used): Se reemplaza la página que hace más tiempo que no se ha utilizado.
  • Segunda Oportunidad: Es una variante de FIFO. Se asocia un bit de referencia a cada página. Si el bit está a 1, se le da una segunda oportunidad (se pone el bit a 0 y se mantiene en memoria). Si el bit está a 0, la página se reemplaza.
  • LFU (Least Frequently Used): Se reemplaza la página que se ha utilizado menos veces. Se asocia un contador a cada página. En caso de empate, se aplica FIFO.

Algoritmos de Planificación de Procesos

La planificación de procesos determina el orden en que los procesos acceden a la CPU. Los algoritmos de planificación se pueden clasificar en dos categorías:

  • Apropiativos (con desalojo): El sistema operativo puede interrumpir un proceso en ejecución y pasar la CPU a otro proceso.
  • No Apropiativos (sin desalojo): Un proceso se ejecuta hasta que termina o realiza una operación de E/S.

Algoritmos Apropiativos

  • FCFS (First-Come, First-Served): Los procesos se ejecutan en el orden de llegada. Los procesos limitados por E/S pueden tener que esperar a que terminen los procesos limitados por el procesador.
  • SPN (Shortest Process Next) o SJB (Shortest Job First): Se selecciona el proceso con la ráfaga de CPU más corta.
  • Prioridades: A cada proceso se le asigna una prioridad. Se ejecuta el proceso con mayor prioridad.

Algoritmos No Apropiativos

  • RR (Round Robin): Se asigna a cada proceso un quantum de tiempo de CPU. Si el proceso no termina en ese tiempo, se interrumpe y se pasa al siguiente proceso en la cola.
  • SRT (Shortest Remaining Time): Es una versión apropiativa de SPN. Se selecciona el proceso con el menor tiempo restante de ejecución.
  • Prioridades: Similar a la versión no apropiativa, pero un proceso en ejecución puede ser interrumpido por un proceso de mayor prioridad.
  • Retroalimentación (Feedback): Se penaliza a los procesos que han estado ejecutándose más tiempo. Los procesos descienden a colas de menor prioridad después de cada ejecución. El objetivo es favorecer a los procesos cortos y a los procesos limitados por E/S.

Entradas relacionadas: