TRABAJO DE INVESTIGACIÓN
1. INTRODUCCIÓN
Los sistemas cuentan
con gran capacidad de memoria, pero no es suficiente debido a que las
aplicaciones actuales demandan la utilización de altos índices de memoria,
generando la escasez de la misma.
Los sistemas
operativos cuentan con un administrador de memoria, que es el encargado de
llevar un registro acerca de las partes de la memoria que están siendo
utilizadas y aquellas que no, con el objetivo de asignar espacio de memorias a
los procesos cuando lo necesiten y liberarlas cuando el proceso haya
finalizado.
Es así que los
administradores de memoria utilizan diferentes técnicas para el manejo de la
memoria, las más conocidas son la paginación y segmentación. Se utilizan estas técnicas
con el fin de tener la mayor cantidad posible de memoria que requiera cada
proceso, que sea la que necesita ni más pequeña ni más grande.
A continuación en este
presente trabajo se destacara las diferencias entre paginación y segmentación.
2. OBJETIVO
Diferenciar entre la utilización de paginación y
segmentación.
3. MARCO TEÓRICO
3.1 GESTIÓN DE MEMORIA
En un sistema monoprogramado, la memoria principal se divide
en dos partes: una para el sistema operativo y otra para el programa que se
ejecuta en ese instante.
En sistema multiprogramado, la parte de usuario de la memoria debe
subdividirse aún más para hacer sitio a varios procesos, la tarea de
subdivisión la lleva a cabo dinámicamente el sistema operativo y se conoce como
gestión de memoria, repartiendo eficazmente la memoria, para introducir tantos
procesos como sea posible.
Figura 1.- Objetivos de la Gestión de Memoria.
3.2 PARTICIÓN DE LA MEMORIA
El principal objetivo del sistema de gestión de memoria es
cargar los programas en la memoria principal para su ejecución en el
procesador. Esta tarea requiere un esquema llamado memoria virtual.
La memoria virtual se basa en el uso de una de dos técnicas
básicas: segmentación o paginación.
3.2.1 PARTICIONES ESTÁTICAS
En casi todos los esquemas de gestión de memoria, se puede
suponer que el sistema operativo ocupa una parte fija de la memoria principal y
que el resto de la memoria está disponible para ser usado por varios procesos.
El esquema más sencillo de gestión de la memoria disponible es dividirla en
regiones con límites fijos.
Aquí nos encontramos con dos alternativas. Una posibilidad
es emplear particiones de igual tamaño, pero esto ocasiona dos dificultades:
- Un programa puede ser demasiado grande para caber en la partición, en cuyo caso el programa debe dividirse en módulos, para que sólo una parte de este esté en la memoria principal en cada instante.
- El otro inconveniente se debe a que el uso de la memoria principal es extremadamente ineficiente. Cualquier programa, sin importar lo pequeño que sea, ocupará una partición completa, produciendo fragmentación interna.
3.2.3 PARTICIÓN DINÁMICA
Con la partición dinámica, las particiones son variables en
número y longitud. Cuando se carga un proceso en la memoria principal, se le
asigna exactamente tanto memoria, necesita y no más.
Este método empieza bien, pero, finalmente, desemboca en una
situación en la que hay un gran número de huecos pequeños en la memoria.
Conforme pasa tiempo, la memoria comienza a estar más fragmentada y su
rendimiento decae.
Este fenómeno se denomina fragmentación externa y se refiere al hecho de que la memoria
externa a todas las particiones se fragmenta cada vez más. Una técnica
utilizada para evitar la fragmentación, es la compactación: de vez en cuando,
el sistema operativo desplaza los procesos para estén contiguos, de forma que
toda la memoria libre quede junta en un bloque.
3.2 PAGINACIÓN
Es una técnica de manejo de memoria, en la cual el espacio de memoria se
divide en secciones físicas de igual tamaño, denominadas marcos de página. Los
programas se dividen en unidades lógicas, denominadas páginas, que tienen el
mismo tamaño que los marcos de páginas. De esta forma, se puede cargar una
página de información en cualquier marco de página.
Las
páginas sirven como unidad de almacenamiento de información y de transferencia
entre memoria principal y memoria auxiliar o secundaria. Cada marco se
identifica por la dirección de marco, que está en la posición física de la
primera palabra en el marco de página.
Figura 2.- Proceso de paginacion.
3.2.1 CARACTERÍSTICAS DE LA PAGINACIÓN
El espacio de direcciones lógico de un proceso puede ser no contiguo.
Se divide la memoria física en bloques de tamaño fijo llamados marcos
(frames).
Se divide la memoria en bloques de tamaño llamados páginas.
Se mantiene información en los marcos libres.
Para correr un programa de en páginas de tamaño, se necesitan encontrar
n marcos y cargar el programa.
Se establece una tabla de páginas para trasladar las direcciones lógicas
a físicas.
Se produce fragmentación interna.
3.3.1 TABLA DE PÁGINAS
El número de página virtual se utiliza como índice en la tabla de páginas para buscar la entrada para esa página virtual. En la entrada en la tabla de páginas, se encuentra el número de marco de página (si lo hay). El número del marco de página se adjunta al extremo de mayor orden del desplazamiento, reemplazando el número de página virtual, para formar una dirección física que se pueda enviar a la memoria.
Por ende, el propósito de la tabla de páginas es asociar páginas virtuales a los marcos de página. Hablando en sentido matemático, la tabla de páginas es una función donde el número de página virtual es un argumento y el número de marco físico es un resultado. Utilizando el resultado de esta función, el campo de la página virtual en una dirección virtual se puede reemplazar por un campo de marco de página, formando así una dirección de memoria física.
3.3.2 ESTRUCTURA DE LA TABLA DE PÁGINAS
·
Protección: Expresa los permisos de acceso del proceso.
En caso de tener permiso para la operación de lectura/escritura que se va a
realizar, se consulta el resto de los campos.
·
Bit de Presencia: Indica si la página está presente en
memoria principal o no. Si se encuentra en RAM, también tienen sentido los
siguientes campos.
·
Marco Ocupado: Si la página se encuentra en memoria
principal, este campo expresa el marco que la contiene.
·
Modificada (Bit de ensuciada): Este campo indica si el contenido de
la página ha sido modificado desde que se trajo de la memoria secundaria.
·
Referenciada: Este
campo booleano se pone a cierto cada vez que se hace referencia a cualquier
dirección de la página. Lo utiliza el sistema operativo para ayudar a los
algoritmos de sustitución de páginas.
·
Figura 3.- Partes de las Tablas de Paginacion.
3.4 SEGMENTACIÓN
Otro modo de subdividir el programa es la segmentación. En este caso, el programa y sus datos asociados se dividen en un conjunto de segmentos. No es necesario que todos los segmentos de todos los programas tengan la misma longitud, aunque existe una longitud máxima de segmento. Como en la paginación, una dirección lógica segmentada consta de dos partes, en este caso un número de segmento y desplazamiento.
Como consecuencia del empleo de segmentos de distintos tamaños, la segmentación resulta similar a la partición dinámica. En ausencia de un esquema de superposición o del uso de memoria virtual, sería necesario cargar en la memoria todos los segmentos de un programa para su ejecución.
La diferencia, en comparación con la partición dinámica, radica en que, con segmentación, un programa puede ocupar más de una partición y éstas no tienen por qué estas contiguas. La segmentación elimina la fragmentación interna, pero la partición dinámica, sufre de fragmentación externa. Sin embargo, debido a que los procesos se dividen en un conjunto de partes más pequeñas, la fragmentación externa será menor.
Mientras que la paginación es transparente al programador, la segmentación generalmente es visible y se ofrece como la ventaja para la organización de los programas y datos. Normalmente el programador o el compilador asignan los programas y los datos a diferentes segmentos. Para facilitar la programación modular, el programa o los datos pueden ser divididos de nuevo en diferentes segmentos. El principal inconveniente de este servicio es que el programador debe ser consciente de la limitación de tamaño máximo de los segmentos.
Como consecuencia del empleo de segmentos de distintos tamaños, la segmentación resulta similar a la partición dinámica. En ausencia de un esquema de superposición o del uso de memoria virtual, sería necesario cargar en la memoria todos los segmentos de un programa para su ejecución.
La diferencia, en comparación con la partición dinámica, radica en que, con segmentación, un programa puede ocupar más de una partición y éstas no tienen por qué estas contiguas. La segmentación elimina la fragmentación interna, pero la partición dinámica, sufre de fragmentación externa. Sin embargo, debido a que los procesos se dividen en un conjunto de partes más pequeñas, la fragmentación externa será menor.
Mientras que la paginación es transparente al programador, la segmentación generalmente es visible y se ofrece como la ventaja para la organización de los programas y datos. Normalmente el programador o el compilador asignan los programas y los datos a diferentes segmentos. Para facilitar la programación modular, el programa o los datos pueden ser divididos de nuevo en diferentes segmentos. El principal inconveniente de este servicio es que el programador debe ser consciente de la limitación de tamaño máximo de los segmentos.
Figura 5.- Espacio de Direcciones.
3.4.1 PAGINACIÓN VS. SEGMENTACIÓN
Figura 6.- Paginacion VS. Segmentacion3.4.2 SEGMENTACIÓN PAGINADA
Como su propio nombre lo indica, la segmentación paginada intenta aumentar lo mejor de los dos esquemas. La segmentación proporciona soporte directo a las regiones del proceso y la paginación permite un mejor aprovechamiento de la memoria y una base para construir un esquema de memoria virtual.
Con esta técnica, un segmento está formado por un conjunto de páginas, y por lo tanto, no tiene que estar contiguo en memoria. Esta utiliza una tabla de segmentos, tal que cada entrada de la tabla apunta a una tabla de páginas.
4. CONCLUSIÓN
La técnica de paginación permite dividir los espacios de
memoria en secciones físicas de igual tamaño, pero al ser las secciones del
igual tamaño ocurren mucho problemas ya habrá aplicaciones que requieran más
del tamaño asignado, es por ello que también se utiliza la segmentación con el
objetivo se subdividir espacios de memoria en bloques o segmentos de diferentes
longitudes, pero a pesar de ser bastante buena, también ocurren ciertos
problemas ya que al asignar la memoria necesaria para cada proceso, nos van
quedando huecos en la memoria.
Es por ello que se está utilizando lo mejor de cada técnica en
una versión llamada segmentación paginada.
5. BIBLIOGRAFÍA
Tanenbaum, A. 2009. Sistemas
Operativos Modernos. 3ed. México, D. F. p 190-248.
Villar, A. 2006. Introducción a
la informática y al uso de y manejo de aplicaciones comerciales. España.
Martínez, D. S/F. Sistemas
Operativos. Repositorio Universidad del Nordeste de Argentina. (U.N.N.E).