Paginación y segmentación

Anonim

La gestión de la memoria es una de las funciones básicas del sistema operativo. Los sistemas operativos modernos permiten que cada proceso obtenga más memoria virtual que el tamaño total de la memoria real (física) en un sistema informático determinado. El objetivo principal de la administración de la memoria es que al combinar una memoria grande pero lenta con una memoria pequeña pero de alta velocidad, para lograr el efecto de una memoria de alta velocidad más grande.

¿Qué es la paginación?

La separación entre la partición fija y la variable es ineficaz en términos de utilización de la memoria, ya que la partición fija da lugar a una fragmentación interna, mientras que a la dinámica es dinámica. Una posible solución al problema de la fragmentación es permitir que el proceso no se escriba en un bloque de memoria continuo. El programa puede ser dispersado arbitrariamente en la memoria. En este caso, la memoria de trabajo se divide en bloques más pequeños de tamaño fijo llamados marcos. El espacio de direcciones lógicas del programa también se divide en bloques del mismo tamaño, llamadas páginas. Cuando se ingresa un programa en la memoria, las páginas se escriben en marcos de memoria libre. Para facilitar la transferencia de programas desde un disco a una memoria de trabajo, el disco también se divide en marcos del mismo tamaño que los marcos de memoria. Por lo tanto, un cuadro del disco se escribe en un cuadro de la memoria de trabajo. El sistema de paginación funciona de la siguiente manera: cuando se acepta la ejecución del programa, se calcula su tamaño, que se expresa con el número de páginas requerido. Si hay una cantidad suficiente de cuadros libres, el proceso se registra en la página de memoria por página. Al mismo tiempo, la cantidad de cuadros en que se escribe cada página se ingresa en la tabla de cuadros.

¿Qué es la segmentación?

El programa de usuario y los datos asociados se pueden dividir en varios segmentos. Los segmentos de todos los programas no tienen que ser del mismo tamaño, aunque hay una longitud máxima de segmento. Al igual que con la paginación, la dirección lógica que utiliza la segmentación consta de dos partes, en este caso, el número de segmentos y dislocaciones dentro de ese segmento. Debido al uso de segmentos de diferentes tamaños, la segmentación es similar a la partición dinámica. En ausencia de un esquema de superposición o el uso de memoria virtual, se requiere que todos los segmentos del programa se carguen en la memoria para su ejecución. La diferencia en comparación con la partición dinámica es que la segmentación puede tomar más de una partición, y esa partición no tiene que ser adyacente. La segmentación resuelve el problema de la fragmentación interna, pero además de la partición dinámica, el problema de la fragmentación externa permanece. Sin embargo, debido a que el proceso se divide en varias partes más pequeñas, la fragmentación externa suele ser más pequeña. A diferencia de la paginación que es invisible para el programador, la segmentación suele ser visible y adecuada para organizar programas y datos. A los efectos de la programación modular, el programa o los datos se pueden dividir en varios segmentos más pequeños. El inconveniente de esta técnica es que el programador debe conocer las limitaciones del tamaño máximo del segmento. La próxima conveniencia de usar segmentos de diferentes tamaños es que no hay una conexión prospectiva entre las direcciones lógicas y físicas. Similar a la paginación, la técnica de segmentación simple utiliza la tabla de segmentos para cada proceso y una lista de bloques disponibles en la memoria principal.

Diferencia entre paginación y segmentación

1. Concepto de paginación y segmentación.

La paginación ofrece un espacio de direcciones virtual y físico, y un espacio de memoria secundaria en bloques (páginas) de la misma longitud. Esto permite que el espacio de direcciones virtuales continuo se asigne al proceso de dispersión (no necesariamente distribuido continuamente) en el espacio de direcciones real y la memoria secundaria. Incluso la página, como término, se refiere a la memoria en lugar de a los objetos lógicos que son visibles en el nivel del programa. La segmentación ofrece un espacio de direcciones virtuales en bloques (segmentos) que corresponden directamente a objetos en el nivel del programa. Debido a esto, el segmento no tiene una longitud fija, por lo que incluso el tamaño del segmento se puede cambiar durante la ejecución del programa. La protección y la división son, por lo tanto, posibles a nivel de objeto, y hay procesos visibles donde se realiza la segmentación.

2. Características de la paginación y segmentación.

El desarrollador de la aplicación no es consciente de la paginación. Escribe programas como si la memoria fuera lineal, y el sistema operativo y el procesador están preocupados por su partición y conversión a direcciones virtuales. El programador en sistemas de segmentación, sin embargo, enumera dos partes de la dirección, segmento y página en sus programas. Todas las páginas son del mismo tamaño, mientras que los segmentos son diferentes. La segmentación tiene múltiples espacios de direcciones lineales, y la paginación solo uno. Los segmentos permiten la partición lógica y la protección de los componentes de la aplicación, y las páginas no.

3. Ventajas de la paginación y la segmentación.

La paginación, que es transparente para el programador, elimina la fragmentación externa y, por lo tanto, garantiza un uso eficiente de la memoria principal. Las piezas que se mueven dentro y fuera de la memoria principal son fijas y del mismo tamaño, por lo que es posible desarrollar algoritmos sofisticados de administración de memoria que exploten el comportamiento del programa La segmentación es visible para el desarrollador y tiene la capacidad de administrar el crecimiento de la estructura de datos, la modularidad y el soporte para el intercambio y la protección.

Paginación vs. Segmentación: Cuadro Comparativo

Paginacion

Segmentación

tamaño de páginas fijas los segmentos no son fijos en tamaño
invisible para el programador visible para el programador
un espacio de dirección lineal múltiples espacios de direcciones lineales
no permite la partición lógica y la protección de los componentes de la aplicación permite

Resumen de paginación y segmentación

  • La paginación se basa en la distribución de todo el espacio de direcciones en bloques de longitud fija que funcionan como cuantificaciones de memoria. Además, es necesario proporcionar un medio para marcar la memoria disponible que puede ejecutarse por la presencia del "encabezado" de cada página que indica el estado de la página (lista enlazada global donde cada nodo apunta a la siguiente página libre) o por colocar la dirección de página libre en la matriz global, que suele ser la peor solución.
  • Segmentación significa dividir el espacio de direcciones en segmentos que tienen derechos de acceso claramente marcados al procesador MMU. Dentro del segmento, los procesos asignan exactamente la cantidad de memoria que necesitan, pero el problema de la administración de la memoria es cómo proporcionar una asignación de este tipo en la que se pueda conservar una memoria de bloque continuo lo suficientemente grande que pueda necesitar algo de tiempo.