Gestión de memoria en SO: contiguo, intercambio, fragmentación

Tabla de contenido:

Anonim

¿Qué es la gestión de la memoria?

La administración de memoria es el proceso de controlar y coordinar la memoria de la computadora, asignando porciones conocidas como bloques a varios programas en ejecución para optimizar el rendimiento general del sistema.

Es la función más importante de un sistema operativo que administra la memoria primaria. Ayuda a los procesos a avanzar y retroceder entre la memoria principal y el disco de ejecución. Ayuda al sistema operativo a realizar un seguimiento de cada ubicación de la memoria, independientemente de si está asignada a algún proceso o si permanece libre.

En este tutorial del sistema operativo aprenderás:

  • ¿Qué es la gestión de la memoria?
  • ¿Por qué utilizar la gestión de memoria?
  • Técnicas de gestión de la memoria
  • ¿Qué es el intercambio?
  • ¿Qué es la asignación de memoria?
  • ¿Qué es la paginación?
  • ¿Qué es el método de fragmentación?
  • ¿Qué es la segmentación?
  • ¿Qué es la carga dinámica?
  • ¿Qué es el enlace dinámico?
  • Diferencia entre carga estática y dinámica
  • Diferencia entre enlaces estáticos y dinámicos

¿Por qué utilizar la gestión de memoria?

A continuación, se muestran las razones para utilizar la gestión de memoria:

  • Le permite verificar cuánta memoria debe asignarse a los procesos que deciden qué procesador debe obtener memoria en qué momento.
  • Realiza un seguimiento cuando el inventario se libera o no se asigna. Según se actualizará el estado.
  • Asigna el espacio a las rutinas de la aplicación.
  • También se asegura de que estas aplicaciones no interfieran entre sí.
  • Ayuda a proteger diferentes procesos entre sí
  • Coloca los programas en la memoria para que la memoria se utilice en toda su extensión.

Técnicas de gestión de la memoria

A continuación, se muestran algunas de las técnicas de administración de memoria más importantes:

Asignación contigua única

Es la técnica de gestión de memoria más sencilla. En este método, todos los tipos de memoria de la computadora, excepto una pequeña parte que está reservada para el sistema operativo, están disponibles para una aplicación. Por ejemplo, el sistema operativo MS-DOS asigna memoria de esta manera. Un sistema integrado también se ejecuta en una sola aplicación.

Asignación particionada

Divide la memoria primaria en varias particiones de memoria, que en su mayoría son áreas contiguas de la memoria. Cada partición almacena toda la información para una tarea o trabajo específico. Este método consiste en asignar una partición a un trabajo cuando se inicia y desasignar cuando termina.

Gestión de memoria paginada

Este método divide la memoria principal de la computadora en unidades de tamaño fijo conocidas como marcos de página. Esta unidad de gestión de memoria de hardware mapea páginas en marcos que deben asignarse por página.

Gestión de memoria segmentada

La memoria segmentada es el único método de gestión de memoria que no proporciona al programa del usuario un espacio de direcciones lineal y contiguo.

Los segmentos necesitan soporte de hardware en forma de tabla de segmentos. Contiene la dirección física de la sección en memoria, tamaño y otros datos como bits de protección de acceso y estado.

¿Qué es el intercambio?

El intercambio es un método en el que el proceso debe intercambiarse temporalmente de la memoria principal al almacén de respaldo. Más tarde se volverá a guardar en la memoria para continuar con la ejecución.

El almacén de respaldo es un disco duro o algún otro dispositivo de almacenamiento secundario que debe ser lo suficientemente grande para poder albergar copias de todas las imágenes de la memoria para todos los usuarios. También es capaz de ofrecer acceso directo a estas imágenes de la memoria.

Beneficios del intercambio

A continuación, se muestran los principales beneficios / ventajas del intercambio:

  • Ofrece un mayor grado de multiprogramación.
  • Permite la reubicación dinámica. Por ejemplo, si se utiliza el enlace de direcciones en el momento de la ejecución, los procesos se pueden intercambiar en diferentes ubicaciones. De lo contrario, en el caso de enlaces de tiempo de compilación y carga, los procesos deben moverse a la misma ubicación.
  • Ayuda a aprovechar mejor la memoria.
  • Mínimo desperdicio de tiempo de CPU al finalizar, por lo que se puede aplicar fácilmente a un método de programación basado en prioridades para mejorar su rendimiento.

¿Qué es la asignación de memoria?

La asignación de memoria es un proceso mediante el cual a los programas de computadora se les asigna memoria o espacio.

Aquí, la memoria principal se divide en dos tipos de particiones.

  1. Memoria baja : el sistema operativo reside en este tipo de memoria.
  2. Memoria alta : los procesos de usuario se mantienen en memoria alta.

Asignación de particiones

La memoria se divide en diferentes bloques o particiones. Cada proceso se asigna según el requisito. La asignación de particiones es un método ideal para evitar la fragmentación interna.

A continuación se muestran los distintos esquemas de asignación de particiones:

  • First Fit : en este tipo de ajuste, se asigna la partición, que es el primer bloque suficiente desde el principio de la memoria principal.
  • Mejor ajuste: asigna el proceso a la partición que es la primera partición más pequeña entre las particiones libres.
  • Peor ajuste: asigna el proceso a la partición, que es la partición más grande disponible libremente en la memoria principal.
  • Siguiente ajuste: es en su mayoría similar al primer ajuste, pero este ajuste busca la primera partición suficiente desde el último punto de asignación.

¿Qué es la paginación?

La paginación es un mecanismo de almacenamiento que permite al sistema operativo recuperar procesos del almacenamiento secundario a la memoria principal en forma de páginas. En el método de paginación, la memoria principal se divide en pequeños bloques de memoria física de tamaño fijo, que se denominan tramas. El tamaño de un marco debe mantenerse igual que el de una página para aprovechar al máximo la memoria principal y evitar la fragmentación externa. La paginación se utiliza para un acceso más rápido a los datos y es un concepto lógico.

¿Qué es la fragmentación?

Los procesos se almacenan y eliminan de la memoria, lo que crea espacio libre en la memoria, que es demasiado pequeño para ser utilizado por otros procesos.

Después de que a veces, los procesos que no pueden asignar a bloques de memoria porque su pequeño tamaño y los bloques de memoria siempre permanecen sin usar se llama fragmentación. Este tipo de problema ocurre durante un sistema de asignación de memoria dinámica cuando los bloques libres son bastante pequeños, por lo que no es capaz de cumplir con ninguna solicitud.

Dos tipos de métodos de fragmentación son:

  1. Fragmentación externa
  2. Fragmentación interna
  • La fragmentación externa se puede reducir reorganizando el contenido de la memoria para colocar toda la memoria libre en un solo bloque.
  • La fragmentación interna se puede reducir asignando la partición más pequeña, que aún es lo suficientemente buena para llevar a cabo todo el proceso.

¿Qué es la segmentación?

El método de segmentación funciona casi de manera similar a la paginación. La única diferencia entre los dos es que los segmentos son de longitud variable, mientras que, en el método de paginación, las páginas son siempre de tamaño fijo.

Un segmento de programa incluye la función principal del programa, estructuras de datos, funciones de utilidad, etc. El sistema operativo mantiene una tabla de mapa de segmentos para todos los procesos. También incluye una lista de bloques de memoria libres junto con su tamaño, números de segmento y sus ubicaciones de memoria en la memoria principal o en la memoria virtual.

¿Qué es la carga dinámica?

La carga dinámica es una rutina de un programa que no se carga hasta que el programa lo llama. Todas las rutinas deben estar contenidas en el disco en un formato de carga reubicable. El programa principal se cargará en la memoria y se ejecutará. La carga dinámica también proporciona una mejor utilización del espacio de memoria.

¿Qué es el enlace dinámico?

La vinculación es un método que ayuda al sistema operativo a recopilar y fusionar varios módulos de código y datos en un solo archivo ejecutable. El archivo se puede cargar en la memoria y ejecutar. El sistema operativo puede vincular bibliotecas a nivel de sistema en un programa que combina las bibliotecas en el momento de la carga. En el método de vinculación dinámica, las bibliotecas se vinculan en el momento de la ejecución, por lo que el tamaño del código del programa puede permanecer pequeño.

Diferencia entre carga estática y dinámica

Carga estática Carga dinámica
La carga estática se utiliza cuando desea cargar su programa de forma estática. Luego, en el momento de la compilación, todo el programa se vinculará y compilará sin necesidad de ningún módulo externo o dependencia del programa. En un programa cargado dinámicamente, se proporcionarán referencias y la carga se realizará en el momento de la ejecución.
En el momento de la carga, todo el programa se carga en la memoria y comienza su ejecución. Las rutinas de la biblioteca se cargan en la memoria solo cuando son necesarias en el programa.

Diferencia entre enlaces estáticos y dinámicos

A continuación, se muestran las principales diferencias entre enlaces estáticos y dinámicos:

Enlace estático Vinculación dinámica
La vinculación estática se utiliza para combinar todos los demás módulos, que son requeridos por un programa en un solo código ejecutable. Esto ayuda al sistema operativo a prevenir cualquier dependencia del tiempo de ejecución. Cuando se utiliza la vinculación dinámica, no es necesario vincular el módulo o biblioteca real con el programa. En lugar de hacerlo, utilice una referencia al módulo dinámico proporcionado en el momento de la compilación y la vinculación.

Resumen:

  • La gestión de la memoria es el proceso de controlar y coordinar la memoria de la computadora, asignando porciones llamadas bloques a varios programas en ejecución para optimizar el rendimiento general del sistema.
  • Le permite verificar cuánta memoria debe asignarse a los procesos que deciden qué procesador debe obtener memoria en qué momento.
  • En la asignación contigua única, todos los tipos de memoria de la computadora, excepto una pequeña parte que está reservada para el sistema operativo, están disponibles para una aplicación.
  • El método de asignación particionada divide la memoria primaria en varias particiones de memoria, que en su mayoría son áreas contiguas de la memoria
  • El método de administración de memoria paginada divide la memoria principal de la computadora en unidades de tamaño fijo conocidas como marcos de página
  • La memoria segmentada es el único método de gestión de memoria que no proporciona al programa del usuario un espacio de direcciones lineal y contiguo.
  • El intercambio es un método en el que el proceso debe intercambiarse temporalmente de la memoria principal al almacén de respaldo. Más tarde se volverá a guardar en la memoria para continuar con la ejecución.
  • La asignación de memoria es un proceso mediante el cual a los programas de computadora se les asigna memoria o espacio.
  • La paginación es un mecanismo de almacenamiento que permite al sistema operativo recuperar procesos del almacenamiento secundario a la memoria principal en forma de páginas.
  • La fragmentación se refiere al estado de un disco en el que los archivos se dividen en partes esparcidas por el disco.
  • El método de segmentación funciona casi de manera similar a la paginación. La única diferencia entre los dos es que los segmentos son de longitud variable, mientras que, en el método de paginación, las páginas son siempre de tamaño fijo.
  • La carga dinámica es una rutina de un programa que no se carga hasta que el programa lo llama.
  • La vinculación es un método que ayuda al sistema operativo a recopilar y fusionar varios módulos de código y datos en un solo archivo ejecutable.