La paginación en los sistemas operativos es un esquema de administración de memoria mediante el cual una computadora almacena y recupera datos del almacenamiento secundario para usarlos en la memoria principal. En este esquema, el sistema operativo recupera datos del almacenamiento secundario en bloques del mismo tamaño denominados páginas.
La idea principal detrás de la paginación es dividir cada proceso en forma de páginas. La memoria principal también se dividirá en forma de cuadros y, por lo tanto, una página del proceso se almacenará en uno de los cuadros de la memoria.
La paginación disminuye la eficiencia del sistema, ya que puede dividir la misma función en diferentes páginas que pueden o no cargarse en la memoria al mismo tiempo.
La segmentación, por otro lado, es una técnica de gestión de la memoria en la que la memoria se divide en partes de tamaño variable. Luego, cada parte se denomina segmento, es decir, se puede asignar a un proceso.
Aunque la paginación está más cerca del sistema operativo que del usuario porque divide todos los procesos en forma de páginas, la segmentación es mucho mejor porque divide el proceso en segmentos en los que cada segmento constituye el mismo tipo de funciones, como la función principal en una el segmento y la función de biblioteca están en el otro segmento.
Ventajas y desventajas de la segmentación
Ventajas
- Hay menos gastos generales en la segmentación
- Es mucho más sencillo reubicar segmentos que todo el espacio de direcciones.
- No hay fragmentación interna, porque hay que hacer una fragmentación externa.
- La tabla de segmentos es de menor tamaño en comparación con la tabla de páginas en paginación.
- El tamaño medio del segmento es relativamente mayor que el tamaño real de la página.
Desventajas
- Puede contener fragmentación externa
- Es difícil asignar memoria contagiosa a la partición debido a su tamaño variable.
- Esta técnica de administración de memoria es demasiado costosa.
Diferencias entre paginación y la segmanetación
- La segmentación permite que los programas, datos y códigos se dividan en espacios de direcciones independientes. Estos espacios ayudan a proteger y compartir los programas. La paginación, por otro lado, se utiliza cuando se obtiene una dirección lineal grande. Por lo general, esto se hace sin tener que comprar más memoria física.
- En la segmentación, la tabla segmentada asigna la dirección lógica a la dirección física y contiene el número segmentado y el desplazamiento (límite de segmento). En la paginación, la tabla de páginas asigna la dirección lógica a la dirección física y contiene la dirección base de cada página almacenada en los marcos del espacio de memoria física.
- La segmentación permite compartir procedimientos mientras que la paginación no permite compartir procedimientos.
- La segmentación puede diferenciar y proteger los procedimientos y los datos por separado, mientras que la paginación no distingue y protege los procedimientos y los datos de forma separada.
- La segmentación puede conducir a una fragmentación externa ya que la memoria se llena con bloques de tamaño variable. Por el contrario, la paginación puede llevar a una fragmentación interna ya que la página es de tamaño de bloque fijo, pero puede suceder que el proceso no adquiera el tamaño de bloque completo lo que generará la fragmentación interna en la memoria.
- Una de las otras ventajas de la segmentación es que es visible y los desarrolladores pueden verla. Este proceso puede gestionar el crecimiento general de la modularidad, la estructura de datos y proporcionar soporte para el intercambio y la protección de datos. Por otro lado, la ventaja de la paginación es que las unidades que se mueven a través de la memoria principal son del mismo tamaño y están fijas. Por tanto, no son posibles complicados algoritmos de gestión de memoria para explotar el comportamiento del programa.
- La segmentación consiste en un enlace dinámico y una carga dinámica, mientras que la paginación consiste en un enlace estático y una carga dinámica.
- En la segmentación, el cambio en los datos o el procedimiento requiere compilar solo el segmento afectado, no el programa completo. Por otro lado, en la paginación, el cambio de datos o procedimiento requiere compilar el programa completo.
- En la segmentación, hay disponibilidad de muchos espacios de direcciones independientes, mientras que en la paginación, el espacio de direcciones es unidimensional.
- En la segmentación, el usuario especifica el tamaño de la página segmentada. Por otro lado, en la paginación, el tamaño de la página lo decide o especifica el hardware.
- En la segmentación, el usuario especifica la dirección en dos cantidades, es decir, número de segmento y desplazamiento. En la paginación, el usuario solo proporciona un único entero como dirección que es dividida por el hardware en un número de página y desplazamiento.
- La segmentación hace posible que los programadores tengan un conocimiento previo de los límites de la memoria. Esto generalmente se hace cuando el programador intenta asignar funciones de espacio de memoria, variables y se esfuerza por alcanzar la violación de memoria de solo lectura que eventualmente resulta en fallas de segmentación. Por otro lado, la paginación es transparente y clara para los programadores, ya que el sistema la administra automáticamente.
Tabla conparativa de las diferencias
SEGMENTACIÓN | PAGINACIÓN | |
Cuando se usa | La segmentación permite que los programas, datos y códigos se dividan en espacios de direcciones independientes. Estos espacios ayudan a proteger y compartir los programas. | La paginaciónse utiliza cuando se obtiene una dirección lineal grande. Por lo general, esto se hace sin tener que comprar más memoria física. |
Mapas de tabla | En la segmentación, la tabla segmentada asigna la dirección lógica a la dirección física y contiene el número segmentado y el desplazamiento (límite de segmento). | En la paginación, la tabla de páginas asigna la dirección lógica a la dirección física y contiene la dirección base de cada página almacenada en los marcos del espacio de memoria física. |
Compartir procedimientos | La segmentación permite compartir procedimientos. | La paginación no permite compartir procedimientos. |
Diferenciación de procedimientos y datos seguros | La segmentación puede diferenciar y proteger los procedimientos y los datos por separado. | La paginación no distingue ni protege los procedimientos y los datos de forma separada. |
Resultado | La segmentación puede conducir a una fragmentación externa ya que la memoria se llena con bloques de tamaño variable. | La paginación puede llevar a una fragmentación interna ya que la página tiene un tamaño de bloque fijo, pero puede suceder que el proceso no adquiera el tamaño de bloque completo, lo que generará la fragmentación interna en la memoria. |
Ventaja | La ventaja de la segmentación es que es visible y los desarrolladores pueden verla. Este proceso puede gestionar el crecimiento general de la modularidad, la estructura de datos y proporcionar soporte para el intercambio y la protección de datos. | La ventaja de la paginación es que las unidades que se mueven a través de la memoria principal son del mismo tamaño y están fijas. Por tanto, no son posibles complicados algoritmos de gestión de memoria para explotar el comportamiento del programa. |
Constituyentes | La segmentación consiste en enlaces dinámicos y carga dinámica. | La paginación consta de enlace estático y carga dinámica. |
Cambio de datos | En la segmentación, el cambio en los datos o el procedimiento requiere compilar solo el segmento afectado, no el programa completo. | En la paginación, el cambio de datos o procedimiento requiere la compilación del programa completo. |
Espacios de direcciones | En la segmentación, hay disponibilidad de muchos espacios de direcciones independientes. | En la paginación, el espacio de direcciones es unidimensional. |
Tamaño de la página | En la segmentación, el usuario especifica el tamaño de la página segmentada. | En la paginación, el tamaño de la página lo decide o especifica el hardware. |
El usuario | En la segmentación, el usuario especifica la dirección en dos cantidades, es decir, número de segmento y desplazamiento. | En la paginación, el usuario solo proporciona un único entero como dirección que es dividida por el hardware en un número de página y desplazamiento. |
Programadores | La segmentación hace posible que los programadores tengan un conocimiento previo de los límites de la memoria. | La paginación es transparente y clara para los programadores, ya que el sistema la administra automáticamente. |