Organización y Arquitectura de Sistemas de Computación ...

28
UNIVERSIDAD DE CONCEPCIÓN FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA INFORMÁTICA Y CIENCIAS DE LA COMPUTACIÓN MAGISTER EN CIENCIAS DE LA COMPUTACIÓN Organización y Arquitectura de Sistemas de Computación Tarea N° 2 Gestión de Memoria y Memoria Virtual Fecha : 13 de Abril de 2003 Alumno : Andrés Puente Poblete Profesor : Yussef Farrrán Leiva

Transcript of Organización y Arquitectura de Sistemas de Computación ...

Page 1: Organización y Arquitectura de Sistemas de Computación ...

UNIVERSIDAD DE CONCEPCIÓN FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA INFORMÁTICA Y CIENCIAS DE LA COMPUTACIÓN MAGISTER EN CIENCIAS DE LA COMPUTACIÓN

Organización y Arquitectura de Sistemas de Computación

Tarea N° 2 Gestión de Memoria y Memoria Virtual

Fecha : 13 de Abril de 2003 Alumno : Andrés Puente Poblete Profesor : Yussef Farrrán Leiva

Page 2: Organización y Arquitectura de Sistemas de Computación ...

2

Resumen Si bien es cierto que la tecnología computacional ha progresado a pasos “agigantados” en pocos años, con la mejora consiguiente en la relación rendimiento/costo, la memoria sigue siendo una de los “recursos escasos” con los que se debe trabajar. Como todo recurso preciable, se debe optimizar su utilización y administración, haciendo eficiente las tareas asociadas a ella en el soporte de los procesos computacionales; permitiendo una anhelada multiprogramación. El objetivo de este trabajo es presentar los conceptos fundamentales que sustentan la tarea de Gestión (en este trabajo los términos gestión y administración serán considerados sinónimos, por lo que no se hará distinción en el uso de uno u otro), comenzando con una definición de la tarea de gestión de memoria, los tipos de gestión que pueden ser soportados y comúnmente usados, definiendo las características necesarias para esta y terminando con la definición de memoria virtual y su nacimiento para permitir dos de las técnicas de gestión de memoria más conocidas: la Paginación y la Segmentación. La importancia notoria de la gestión de memoria recae en los sistemas considerados de multiprogramación, aquellos que permiten la ejecución de más de un proceso de manera concurrente, por lo que el enfoque principal de este trabajo va orientado al estudio sobre este tipo de sistemas computacionales. Aunque se hace referencia a los sistemas de monoprogramación, aquellos que permiten la ejecución de un solo proceso computacional, éstos no serán tratados en profundidad. Finalmente, se debe hacer notar que el trabajo no entra en exhaustivos análisis de técnicas en particular no en estudios profundos y detallados, más bien pretende ser un sustento de los pilares fundamentales y los términos de mayor importancia asociados al proceso de gestión de memoria, permitiendo ser una buena guía para detallar, posteriormente, algún tópico tratado.

Page 3: Organización y Arquitectura de Sistemas de Computación ...

3

Tabla de Contenidos

Contenidos Pag. Lista de Tablas y Figuras 4 Glosario de Términos 5 Capítulo 1. Introducción 6 1.1 Descripción del Estudio 6 1.2 Objetivo General 6 1.3 Objetivos Específicos 6 1.4 Metodología de Trabajo 6 Capítulo 2. Gestión de Memoria 7 2.1 ¿Qué es la Gestión de Memoria? 7 2.2 Requisitos de la Gestión de Memoria 8 2.3 Técnicas de Gestión de memoria 10 Capítulo 3. Memoria Virtual 17 3.1 Definición 17 3.2 Paginación 17 3.3 Segmentación 24 3.4 Combinaciones entre Paginación y Segmentación 26 Conclusiones 27 Fuentes de Información 28

Page 4: Organización y Arquitectura de Sistemas de Computación ...

4

Lista de Tablas

Tabla Pag. Tabla 2.1: Técnicas Básicas de Gestión de Memoria 11 Lista de Figuras

Figura Pag. Figura 1.1 Metodología de Trabajo 6 Figura 2.1: Esquemas de Asignación de Memoria 11 Figura 2.2: Efectos de la Partición Dinámica 13 Figura 2.3: Sistema de los Asociados 15 Figura 2.4: Soporte Hardware para la Reubicación 16 Figura 3.1: Asignación de páginas de procesos a marcos libres. 18 Figura 3.2: Estructura de Datos para el ejemplo de Figura 3.1. en el tiempo (f). 18 Figura 3.3: Ejemplo de Traducción de Dirección lógica a Física 19 Figura 3.4: Esquema de traducción, con un esquema de paginación de dos niveles

22

Figura 3.5: Esquema de traducción, usando una tabla de páginas invertida 22 Figura 3.6: Esquema representativo de Segmentación 24 Figura 3.7: Esquema de traducción usando segmentación 25 Figura 3.8: Ejemplo de Traducción de Direcciones en Segmentación 26

Page 5: Organización y Arquitectura de Sistemas de Computación ...

5

Glosario de Términos

• Proceso: programa en ejecución. • Monoprogramación: ejecución de solo un proceso de forma concurrente . • Multiprogramación: ejecución de más de un proceso de forma concurrente. • Intercambio (Swapping): operación de intercambiar procesos que se encuentran

en memoria principal, y que no han terminado su ejecución, a memoria secundaria (típicamente disco).

• Dirección lógica: referencia a una posición de memoria independiente de la

asignación actual de datos, es generada por la CPU. • Espacio de direcciones lógicas: es un conjunto de direcciones generadas por un

programa • Dirección física: designa la posición real de la memoria principal. Corresponde a

aquella cargada en el registro de direcciones de la memoria • Espacio de direcciones físicas: conjunto de posiciones de memoria

correspondientes a las direcciones lógicas • Partición estática: el segmento de memoria asignado a los usuarios se divide en

regiones con límites fijos (no necesariamente iguales) • Partición Dinámica: el segmento de memoria asignado a los usuarios se divide en

regiones con límites variables y dinámicos. • Memoria Virtual: memoria que hace creer a los programas que existe una memoria

principal de gran tamaño y explota localidad de acceso a través de la jerarquía de memoria, típicamente es un segmento del disco.

Page 6: Organización y Arquitectura de Sistemas de Computación ...

6

Capítulo 1: Introducción 1.1. Descripción del Estudio Este estudio se enfoca en su primera parte a definir las actividades necesarias para una correcta gestión de la memoria, definiendo los principales mecanismos, con sus ventajas y desventajas, aplicables a esta actividad. En su segunda parte, el trabajo esta orientado a presentar los aspectos más importantes considerados en el trabajo con memoria virtual. 1.2. Objetivo General Presentar de forma clara la jerarquía de memorias, definiendo cada uno de sus niveles en forma macro y ahondando solo en la memoria Caché. 1.3. Objetivos Específicos Los objetivos específicos son los siguientes:

• Definir y aclarar los que se entiende por Gestión de Memoria. • Presentar los mecanismos, o formas, utilizados para la correcta gestión de este

recurso, a fin de comprender ventajas, desventajas y aplicabilidad de cada uno de ellos.

• Presentar y definir la Memoria virtual, como parte del trabajo de procesamiento y almacenamiento de información como parte de una arquitectura computacional.

1.4. Metodología de Trabajo

Para un entendimiento más claro, la metodología de trabajo se presenta de forma gráfica

Definición de Objetivos

Recopilación de Información

Análisis de Información recopilada

¿Suficiente?

Creación de Estructura de

Trabajo

Creación de Informe y

presentación

No

Fig. 1.1. Metodología de Trabajo

Page 7: Organización y Arquitectura de Sistemas de Computación ...

7

Capítulo 2: Gestión de Memoria El siguiente capítulo se enfoca a expresar los conceptos e ideas más importantes de la gestión de memoria, comenzando por un nivel general (definición de Gestión de memoria) y finalizando por un nivel detallado (definición de tipos de Gestión de memoria). La clasificación mayor utilizada para entender los conceptos es el de Administración de memoria con Intercambio o sin Intercambio, concepto que será introducido más adelante. 2.1. ¿Qué es la Gestión de Memoria? La memoria es uno de los recursos más valiosos que se poseen en una arquitectura computacional, su utilización y administración recaen en el sistema operativo, que es un proceso computacional (programa o aplicación en ejecución) que también utiliza memoria. Esto, es justamente uno de los factores por los cuáles se necesita una optimización de memoria: uno de los elementos principales que caracterizan un proceso es la memoria que utiliza. La asignación de memoria es exclusiva para el proceso que la requiere, es decir, ésta es lógicamente separada de la de cualquier otro proceso del sistema (excepto los threads de un mismo proceso que comparten normalmente la mayor parte de la memoria que tienen asignada). Con esto, un proceso no puede acceder, ni siquiera de una forma accidental, al espacio de memoria asignado a otro proceso, lo cual es imprescindible para la seguridad y estabilidad del sistema. La gestión de memoria es una tarea cuya responsabilidad recae en el Sistema Operativo, y básicamente consiste en cargar y descargar procesos en memoria principal para que sean ejecutados. Para ello el S.O. gestiona lo que se conoce como MMU o Unidad de Administración de Memoria, el cual es un dispositivo hardware que transforma las direcciones lógicas en físicas. 2.1.1 Gestión de Memoria en Sistemas de Monoprogramación En un sistema de Monoprogramación (ejecución de un proceso a la vez) esta tarea es muy sencilla, ya que la memoria se divide en dos partes: una para el S.O. y una para el programa que se ejecuta en ese instante. A través de un comando del usuario, el S.O. identifica que debe cargar un programa desde la memoria secundaria (disco) a la memoria principal. Cuando el proceso termina, el S.O. queda a la espera de un nuevo comando de ejecución para cargar otro proceso, el que se escribe sobre el anterior. En este tipo de organización, prácticamente no se puede hablar de Gestión de Memoria, ya que al existir un único proceso no se requiere compartir el espacio, lo que hace que el trabajo para el S.O. no tenga complejidad (manteniendo las abstracciones correspondientes). Además, en la monoprogramación, el procesador puede estar muc ho tiempo ocioso (por ejemplo, producto de las E/S que puede tener asociadas), lo que perjudica el rendimiento de la máquina. 2.1.2 Gestión de Memoria en Sistemas de Multiprogramación En un sistema con multiprogramación (ejecución de más de un proceso a la vez), el sistema operativo debe encargarse de realizar un reparto transparente, eficiente y seguro de los distintos recursos de la máquina entre los diversos procesos, de forma que cada

Page 8: Organización y Arquitectura de Sistemas de Computación ...

8

uno de ellos crea que “tiene una máquina para él solo”. El sistema operativo debe permitir que los programadores desarrollen sus aplicaciones sin verse afectados por la posible coexistencia de su programa con otros durante su ejecución. Es en este caso que el sistema operativo, con el apoyo del hardware de gestión de memoria del procesador (según éste, será el tipo de gestión de memoria que se realizará), debe repartir el almacenamiento existente (parte de memoria asignada al usuario), proporcionando un espacio de memoria independiente para cada proceso y evitando la posible interferencia voluntaria o involuntaria entre ellos . Se podría considerar que, en el caso del procesador, se realiza un reparto en el tiempo, mientras que en el de la memoria, se trata de un reparto en el espacio. 2.1.3 Intercambio (Swapping) El intercambio nace por que las actividades de E/S son tan lentas en comparación con el procesador que, incluso en los sistemas multiprogramados, puede permanecer inactivo la mayor parte del tiempo. La solución a esta problemática, pueden estar dada por ampliar la memoria principal, lo que es caro y una mayor memoria no origina necesariamente mayor cantidad de procesos, sino que procesos más grandes. Además, muchas veces se requiere que los sistemas puedan contener mas procesos que los que la memoria soporta, principalmente sistemas multiusuarios e interactivos. Ante esto, nace el intercambio como un mecanismo de solución. El intercambio consiste en alternar, durante la ejecución de un proceso, su permanencia en memoria principal y memoria secundaria. Para esto, el procesador se basa en una cola denominada Intermedia, que almacena en disco los procesos que se han sacado temporalmente de memoria. 2.1.4 Características deseables de un sistema de Gestión de Memoria Sea cual sea la política de gestión de memoria empleada en un determinado sistema, se pueden destacar las siguientes características como objetivos deseables del sistema de gestión de memoria: Ø Ofrecer a cada proceso un espacio lógico propio. Ø Proporcionar protección entre los procesos. Ø Permitir que los procesos compartan memoria. Ø Maximizar el rendimiento del sistema. Ø Proporcionar a los procesos mapas de memoria muy grandes. Para alcanzar estos objetivos, se necesita contar con un conjunto de requisitos que apoyen la Gestión de la Memoria.

2.2. Requisitos de la Gestión de Memoria

Los requisitos necesarios para una correcta gestión de memoria (según Lister, A y Eager, R.)1, son:

Ø Reubicación o Correspondencia 1 “Fundamentals of Operating Systems”.

Page 9: Organización y Arquitectura de Sistemas de Computación ...

9

Ø Protección Ø Compartición Ø Organización lógica Ø Organización Física

Para entender claramente lo que cada requisito representa, se deben incorporar lo siguientes conceptos:

• Dirección lógica: referencia a una posición de memoria independiente de la asignación actual de datos, es generada por la CPU.

• Espacio de direcciones lógicas: es un conjunto de direcciones generadas por un programa

• Dirección física: designa la posición real de la memoria principal. Corresponde a aquella cargada en el registro de direcciones de la memoria

• Espacio de direcciones físicas: conjunto de posiciones de memoria correspondientes a las direcciones lógicas

2.2.1. Reubicación o Correspondencia

En un sistema de multiprogramación, la memoria se encuentra compartida por varios procesos, por lo tanto, y debido a que: 1) cada proceso se referencia en memoria por medio de su dirección física; 2) se desconoce la dirección de memoria en la cual se va a cargar un proceso (por adelantado) y 3) los procesos deben ser cargados y descargados continuamente de memoria. Lo más probable es que no se utilice siempre el mismo espacio de memoria, por lo que se requerirá que sea posible ubicar el proceso en memoria y conocer cuáles serán las ubicaciones de la información de control, de la pila de ejecución y del inicio del programa; por lo que debe ser posible resolver cualquier referencia a la memoria dentro del programa, sobre todo cuando existen bifurcaciones y referencias a datos. Es decir, deberá existir una correspondencia entre las direcciones lógicas (de un proceso) y las direcciones físicas (de la memoria).

2.2.2. Protección

En un sistema con multiprogramación, los espacios de memoria utilizados por los procesos y el sistema operativo deben ser protegidos de intromisiones voluntarias o accidentales. Para esto, se necesita del apoyo del hardware, puesto que es necesario validar cada una de las direcciones que genera un programa en tiempo de ejecución. Este mecanismo está típicamente integrado en el mecanismo de traducción: la función de traducción debe asegurar que los espacios lógicos de los procesos sean disjuntos entre sí y con el del propio sistema operativo.

2.2.3. Compartición

Para cumplir el requisito de protección, el sistema operativo debe crear espacios lógicos independientes y disjuntos para los procesos. Sin embargo, en ciertas situaciones, bajo la supervisión y control del sistema operativo (control de acceso), puede ser provechoso que los procesos puedan compartir memoria, es decir, la posibilidad de que direcciones lógicas

Page 10: Organización y Arquitectura de Sistemas de Computación ...

10

de dos o más procesos, posiblemente distintas entre sí, se correspondan con la misma dirección física. Esto implica que el sistema de gestión de memoria debe permitir que la memoria asignada a un proceso no sea contigua.

2.2.4. Organización Lógica

Es indispensable que el gestor de memoria “comprenda” la organización lógica formada por módulos que tienen los programas (por ejemplo: texto, datos, procedimientos, pila). Si existe una cierta correspondencia entre el S.O. y el hardware al tratar los datos y los programas de los usuarios en forma de módulos, se tendrán una serie de ventajas, tales como:

Ø Los módulos pueden escribirse y compilarse de forma independiente. El sistema debe resolver las referencias de un módulo a otro durante la ejecución.

Ø Puede otorgarse distintos niveles de protección a los distintos módulos, lo que conlleva un mínimo costo adicional.

Ø Los módulos pueden ser compartidos si existen los mecanismos adecuados.

Por lo que la gestión de memoria deberá poseer técnicas que permitan desarrollar esta función, la segmentación es la principal y será tratada más adelante.

2.2.5. Organización Física

En un sistema con multiprogramación, el gestor de memoria debe encargarse de la localización de espacios libres en memoria principal donde cargar los procesos. Además, debe poder proporcionar un mecanismo para poder ejecutar programas cuyo tamaño supere el de la propia memoria principal (usando típicamente la Memoria Virtual, que será definida en la segunda parte de este trabajo). Ambas características son necesarias para permitir la ejecución concurrente de procesos. 2.3 Técnicas de Gestión de memoria Para poder cumplir con los objetivos de la Gestión de la memoria, se cuenta con diferentes técnicas que permiten hacer posible esta gran labor, para efectos de este trabajo, las técnicas serán divididas entre aquellas que consideran el intercambio y aquellas que no. 2.3.1 Administración Sin Intercambio Dentro de este tipo de administración se encuentran los sistemas que utilizan monoprogramación, es decir, que mantienen en memoria solo un proceso de usuario, por lo tanto, no es posible ejecutar concurrentemente mas de un proceso en el sistema; y los sistemas multiprogramados, es decir que permiten mantener mas de un proceso de usuario en memoria. Dentro de este último esquema existen sistemas que manejan multiprogramación con particiones fijas y sistemas que manejan la multiprogramación con particiones variables. La característica que poseen en común estos tres tipos de administración es que ninguno de ellos permite intercambiar procesos entre memoria y disco, es decir, que los procesos no pueden permanecer por periodos de tiempo en disco,

Page 11: Organización y Arquitectura de Sistemas de Computación ...

11

sino que durante el tiempo que dure su ejecución necesariamente deben permanecer en memoria.

El esquema sin intercambio puede ser práctico para sistemas en donde la cantidad de procesos presente es manejable por la CPU y la memoria. Sin embargo, para aquellos sistemas donde por lo general existen muchos usuarios, los cuales ejecutan muchos procesos, la capacidad de la CPU y memoria no da abasto a la cantidad total de procesos que requieren los recursos. En este último caso, es atractiva la idea de aprovechar mejor los recursos, en que, por ejemplo, aquellos procesos que cambian de estado puedan ser almacenados temporalmente en disco para luego continuar en su ejecución y así darle la oportunidad de ser ejecutados a otros procesos.

2.3.2 Administración Con Intercambio Las técnicas de gestión de memoria a considerar, se resumen en la siguiente tabla:

Esquemas de Asignación Contigua Descripción Ventajas Desventajas Partición Estática La memoria principal se divide en

un conjunto de particiones estáticas, durante la generación del sis tema. Un proceso se puede cargar en una partición de igual o mayor tamaño.

Sencilla de implementar, poca sobrecarga del sistema operativo.

Empleo ineficiente de la memoria debido a la fragmentación interna. El número de procesos activos es fijo.

Partición Dinámica

Las particiones se crean dinámicamente, de forma que cada proceso se carga en una partición de su mismo tamaño.

No hay fragmentación interna, uso más eficiente de la memoria principal.

Uso ineficiente del procesador debido a la compactación para contrarrestar la fragmentación externa.

Esquemas de Asignación no Contigua Descripción Ventajas Desventajas Paginación La memoria principal se divide en

un conjunto de marcos de igual tamaño. Cada proceso se divide en una serie de páginas de igual tamaño que los marcos. Un proceso se carga situando todas sus páginas en marcos libres pero no necesariamente contiguos.

No tiene fragmentación externa

Hay una pequeña cantidad de fragmentación interna.

Segmentación Cada proceso se divide en segmentos. Un proceso se carga situando todos sus segmentos en particiones dinámicas que no tienen por qué ser contiguas.

No tiene fragmentación interna.

Mejora la utilización de la memoria y reduce la sobrecarga comparada con la partición dinámica.

Tabla 2.1: Técnicas Básicas de Gestión de Memoria

2.3.2.1 Técnicas de Gestión de Memoria basadas en asignación contigua Estas técnicas de gestión de memoria, corresponden a las primeras utilizadas en sistemas multiprogramados, eran sencillas y fáciles de implementar, pero no lograron satisfacer las exigencias impuestas a los sistemas computacionales, sobre todo de eficiencia. Fueron utilizadas en algunos sistemas operativos ahora obsoletos.

Page 12: Organización y Arquitectura de Sistemas de Computación ...

12

2.3.2.1.1 Particiones Estáticas de Memoria En este esquema de gestión de memoria, el segmento de memoria asignado a los usuarios se divide en regiones con límites fijos, con dos posibilidades: particiones de igual tamaño o particiones de diferentes tamaños. Con particiones fijas de igual tamaño surgen dos dificultades: Ø Un programa puede ser demasiado grande para caber en una partición, si el programa

no se ha diseñado mediante superposición, simplemente no se puede ejecutar. De otro modo, podrán estar en memoria aquellos módulos del programa que se necesiten, pero se requerirá que estos módulos sean intercambiados a medida que la ejecución progresa.

Ø Se malgasta el espacio interno a cada partición cuando el bloque cargado es más pequeño, lo que se conoce como fragmentación interna.

La ubicación de procesos en la memoria es trivial, mientras exista una partición libre un proceso puede ubicarse en ella. No va a importar cual partición elegir, ya que todas son iguales. Sin embargo, debe existir un mecanismo mediante el cual se pueda intercambiar procesos, tarea que corresponde a una decisión de planificación. Si por el contrario, se tienen particiones fijas de distintos tamaños se minimiza la fragmentación interna producto de que cada proceso es asignado a la partición más pequeña en la que quepa, sin embargo esto supone que se conoce la cantidad de memoria que ocupa un proceso lo cual no siempre es cierto. Además, si no existe una buena política de ubicación de los procesos, podría dejarse memoria sin ocupar, a pesar de tener procesos en espera (por ejemplo, procesos pequeños que no son asignados a particiones grandes de memoria). Se pueden tener dos esquemas de asignación de memoria en partición estática utilizando colas de procesos, el primero que considera una cola de planificación para cada partición y, el segundo de ellos que considera una única cola de planificación para la memoria, el cual es más eficiente (ver figura 2.1).

Figura 2.1: Esquemas de Asignación de Memoria

S.O. S.O.

Procesos Nuevos

Procesos Nuevos

Page 13: Organización y Arquitectura de Sistemas de Computación ...

13

2.3.2.1.2 Particiones Dinámicas de Memoria Este tipo de administración de memoria consiste en que la memoria se divide en un conjunto de particiones que se caracterizan porque su tamaño es variable y se crean dinámicamente en el transcurso de la ejecución de los distintos procesos en el sistema. Este tipo de administración, a diferencia del de particiones fijas, se efectúa con intercambio, es decir, que un proceso que esta en memoria puede ser traspasado a disco en forma temporal para darle la posibilidad a otro proceso que se ejecute. Al igual que la administración con particiones fijas este tipo de administración considera el almacenamiento del proceso completo en memoria para que éste pueda se ejecutado,

Otro aspecto importante de señalar en este tipo de administración es que también existe fragmentación, esta ocurre en el continuo ingreso y salida de procesos a memoria, este fenómeno genera que se produzcan huecos en la memoria que no son suficientes para contener a los procesos que requieren ejecutarse. A este tipo de fragmentación se le conoce con el nombre de fragmentación externa.

La pérdida de memoria, producto de la fragmentación externa, se puede recuperar realizando la compactación, es decir, reagrupando las porciones de memoria hacia un lado y las porciones de memoria libre hacia el otro extremo. Sin embargo, esta técnica no se practica pues es un proceso demasiado lento .

La asignación de memoria a los distintos procesos que la requieren se puede asignar de acuerdo a un conjunto de criterios (surgen de la necesidad de que el sistema tenga conocimiento de las particiones de memoria que se encuentran ocupadas y libres; las particiones libres deben ser otorgadas a los procesos de la manera que el sistema considere más eficiente). Dentro de los criterios mas conocidos de asignación de memoria se encuentran los siguientes:

• Asignación del primer ajuste, considera que es mejor asignar al proceso la primera partición de memoria que encuentra libre en el sistema.

• Asignación del mejor ajuste , considera otorgar al proceso aquella partición que mejor se ajuste al proceso, es decir la que mejor le calce.

• Asignación del peor ajuste, considera que es mejor otorgar aquella partición más grande que pueda contener al proceso, el argumento que fundamenta este criterio es que lo que sobre de esta partición puede ser utilizada para asignársela a otro proceso.

En la figura 2.2, se pueden ver los efectos de la partición dinámica.

Page 14: Organización y Arquitectura de Sistemas de Computación ...

14

Figura 2.2: Efectos de la Partición Dinámica

Existen tres mecanismos básicos para administrar la memoria con un esquema de particiones variables: administración de memoria con mapa de bits, con listas ligadas y con el sistema de colegas o asociados. A) Administración con mapa de bits

Este esquema consiste en que la memoria se divide en bloques de cierto tamaño y se mantiene en memoria una tabla en donde cada bit se utiliza para identificar un bloque ocupado y un bloque libre. Si un bloque esta ocupado el bit asociado a él esta en 1, si el bloque esta libre el bit esta en 0. Un aspecto importante de mencionar en este enfoque es que si el tamaño de asignación es pequeño, entonces el mapa de bits es más grande, comparativamente con un bloque de asignación más grande, el mapa de bits es más pequeño. El tamaño del mapa de bits solamente está determinado por el tamaño de la memoria y el tamaño del bloque de asignación.

B) Administración de memoria con listas enlazadas Este enfoque consiste en asignar la memoria mediante un bloque de asignación. El control de la memoria ocupada o libre, es mantenida por el sistema mediante una lista enlazada, en donde cada nodo de la lista esta compuesto por los siguientes campos:

• Bit que representa un proceso o un hueco • Número de bloque de inicio • Número de bloques utilizados • puntero al siguiente nodo en la lista

S.O. S.O.

P1 Se carga el Proceso 1

S.O.

P1

Se carga el Proceso 2 P2

20 MB

14 MB

20 MB

S.O.

P1

Se carga el Proceso 3

P2

20 MB

14 MB

20 MB

P3 18 MB

4 MB

36 MB

Se saca el proceso 2

22 MB

S.O. S.O.

P1

Se carga el Proceso 4

S.O. Se saca el Proceso 1

20 MB

S.O. Se carga el Proceso 2 P1 20 MB

14 MB

P3 18 MB

4 MB

P3 18 MB

4 MB

P4 8 MB

6 MB

20 MB

P3 18 MB

4 MB

P4 8 MB

6 MB

P2 14 MB

P3 18 MB

4 MB

P4 8 MB

6 MB

6 MB

Page 15: Organización y Arquitectura de Sistemas de Computación ...

15

En el caso de tener una lista ordenada por direcciones, la ventaja de este enfoque es que la actualización de la lista es directa, pues cada nodo tiene dos vecinos, cada uno de los cuales es un proceso o un hueco, luego, al desocuparse un segmento representado por un nodo en la lista pasa a ser un hueco, el cual podría eventualmente agruparse a un hueco vecino. La desventaja de este enfoque es que la búsqueda de un hueco libre suficiente de satisfacer a un proceso es lenta. Para solucionar esta lentitud se puede tener dos listas ligadas, una para los huecos y otra para los procesos, sin embargo, esto obliga a mantener estas dos listas, es decir deben actualizarse cuando un proceso termina y cuando se otorga memoria a un proceso.

C) Sistema de los asociados Este enfoque consiste en tener la memoria inicialmente como un gran hueco, a medida que un proceso la requiera se particiona, dicho particionamiento esta regido por segmentos múltiplos de potencias de dos. Supongamos que la memoria es de 1Mbytes, y un proceso de 56Kbytes requiere ser cargado, luego la memoria se particiona en dos grandes segmentos de 512 Kbytes, luego este segmento sigue siendo muy grande para contener al proceso entonces se vuelve a particionar uno de estos dos segmentos en dos segmentos de 256Kbytes, estos aun siguen siendo grandes, por lo que otra vez se particiona uno de ellos, luego se tienen dos segmentos de 128Kbytes, los que siguen siendo grandes, se vuelven a particionar teniendo dos de 64Kbytes. Luego, aquí se tienen dos segmentos de 64Kbytes, el cual es el mínimo tamaño potencia de dos que soporta el proceso que requiere memoria.

1 MB

512 KB

256 KB 128 KB

Figura 2.3: Sistema de los Asociados

2.3.2.2 Reubicación en un Esquema con Partición de Memoria Como se mencionó anteriormente, se requiere un intercambio de procesos entre la memoria principal y la memoria secundaria, para obtener un mejor aprovechamiento de los recursos del computador (procesador). Esto requiere que cualquier mecanismo de gestión de memoria considere como requisito el poder reubicar los procesos, sin perder las referencias que se hagan dentro de él. Cuando un proceso es cargado en una partición de

B

A

Page 16: Organización y Arquitectura de Sistemas de Computación ...

16

memoria, sea estática o dinámica, puede ser sacado de memoria y vuelto a cargar posteriormente en otra partición. Los programas que emplean direcciones relativas en la memoria, se cargan mediante cargadores dinámicos durante la ejecución. Esto quiere decir que todas las referencias a memoria durante el proceso, son relativas al origen del programa. Por lo tanto se necesita un mecanismo que permita la traducción de las direcciones relativas en direcciones físicas en la memoria principal. Esta es la función de la Unidad Administradora de Memoria (MMU).

Imagen de un proceso Memoria principal

Figura 2.4: Soporte Hardware para la Reubicación Cuando un proceso es cargado en memoria, para ser ejecutado, se carga su dirección física en un registro del procesador llamado registro base. Junto con el, se carga un registro límite, que indica la posición física final del programa. Cada vez que se hace una referencia en el proceso a un dato o se ejecuta una bifurcación, la dirección relativa debe ser traducida primero sumándole el registro base y luego comparándola con el registro límite, si está dentro del límite del programa se puede proceder a la ejecución de la instrucción, de otro modo se genera un error (ver figura 2.4). Es importante notar que este mecanismo de traducción no sólo permite la reubicación de procesos, sino que también cumple con el requisito de protección, evitando que un proceso invada el espacio de otro. 2.3.1.2 Técnicas de Gestión de Memoria basadas en asignación no contigua Estas técnicas serán explicadas en la segunda parte de este trabajo, cuando se trate la Memoria Virtual, ya que son la base para la gestión de éste tipo de memoria. Estas técnicas son conocidas como paginación y segmentación.

Registro base

Registro límite

Sumador

Comparador

Bloque de Control de Proceso

Programa

Datos

Pila

Dirección física

Interrupción al Sistema Operativo

Dirección Lógica

Page 17: Organización y Arquitectura de Sistemas de Computación ...

17

Capítulo 3 Memoria Virtual 3.1 Definición Esta memoria hace creer a los programas que existe una memoria principal de gran tamaño y explota localidad de acceso a través de la jerarquía de memoria. La memoria principal almacena sólo los datos/instrucciones más utilizados, el resto de los datos/instrucciones residen en memoria secundaria (disco)2. La memoria es dividida en bloques, que en la terminología de memoria virtual se llaman páginas. Todas las transferencias entre memoria real y disco se hacen con páginas. Los sistemas que operan con memoria virtual generan un espacio de direccionamiento que no corresponde al espacio de direccionamiento real en la memoria principal. Las direcciones de memoria que generan los procesos por lo general se le conocen como direcciones virtuales o lógicas (definida en el punto 2.2), estas direcciones son traducidas a su correspondiente dirección real mediante alguna técnica que por lo general está apoyada en hardware. El espacio de direccionamiento que generan los procesos corresponde a un espacio ficticio, por ello se le llama virtual, pues no esta formado por las direcciones reales que se colocan en el bus de direcciones, sino que deben pasar por una etapa de traducción previa.

La utilización de memoria virtual tiene algunas consecuencias importantes desde el punto de vista de los recursos. Conceptualmente un proceso puede direccionar más memoria que la memoria física disponible, esto se realiza en base a que un proceso no necesita estar completamente contenido en memoria para poder ejecutarse, sino que puede estar parcialmente en memoria y el resto del proceso en disco (por ejemplo, en muchos programas existe un control de errores, los cuales no siempre se producen, por lo cual el código asociado a su tratamiento no requiere estar permanentemente en memoria). Luego, el proceso completo puede ser más grande que la memoria física disponible. La visión del programador es simplificada con el uso de memoria virtual pues ya no tiene que preocuparse por la memoria física, el sólo debe preocuparse del programa.

3.2 Paginación

La paginación pura en el manejo de memoria, consiste en que el sistema operativo divide la memoria en unidades de tamaño fijo (generalmente potencia de 2, por ejemplo de 1 Kb), llamados marcos, los cuales va a manipular de memoria principal a disco y viceversa. Al mismo tiempo, los procesos son divididos en páginas de igual tamaño que los marcos. Al proceso de intercambiar páginas, segmentos o programas completos entre memoria principal y disco se le conoce como ‘intercambio’ o ‘swapping’ (definido en el punto 2.1.3). En la paginación, se debe cuidar el tamaño de las páginas, ya que si éstas son muy pequeñas el control por parte del sistema operativo para saber cuáles están en memoria principal y cuáles en disco, sus direcciones reales, etc .; crece y provoca mucha ‘sobrecarga' (overhead). Por otro lado, si las páginas son muy grandes, el overhead

2 Este es el concepto de paginación por demanda, una página de un proceso permanece en memoria sólo cuando se le necesita, es decir, en un momento determinado no todas las páginas de un proceso se encuentran en memoria principal.

Page 18: Organización y Arquitectura de Sistemas de Computación ...

18

disminuye pero entonces puede ocurrir que se desperdicie memoria en procesos pequeños (fragmentación al interior de una página).

Para mantener el registro de dónde están almacenados los procesos en la memoria principal, cada vez que se carga un proceso, el sistema operativo crea y mantiene una tabla de páginas del proceso. La tabla de páginas muestra la posición del marco de cada página del proceso (ver figura 3.1 y figura 3.2), además existe una tabla que muestra todos los marcos que están disponible.

0 0 A.0 0 A.0 0 A.0 0 A.0 0 A.0 1 1 A.1 1 A.1 1 A.1 1 A.1 1 A.1 2 2 A.2 2 A.2 2 A.2 2 A.2 2 A.2 3 3 A.3 3 A.3 3 A.3 3 A.3 3 A.3 4 4 4 B.0 4 B.0 4 4 D.0 5 5 5 B.1 5 B.1 5 5 D.1 6 6 6 B.2 6 B.2 6 6 D.2 7 7 7 7 C.0 7 C.0 7 C.0 8 8 8 8 C.1 8 C.1 8 C.1 9 9 9 9 C.2 9 C.2 9 C.2

10 10 10 10 C.3 10 C.3 10 C.3 11 11 11 11 11 11 D.3 12 12 12 12 12 12 D.4 13 13 13 13 13 13 14 14 14 14 14 14

(a) (b) (c) (d) (e) (f) Secuencia: (a) Quince marco libres; (b) carga del proceso A; (c) carga del proceso B; (d) carga del proceso C; (e) descarga del proceso B; (f) carga del proceso D.

Figura 3. 1: Asignación de páginas de procesos a marcos libres.

0 0 0 - 0 7 0 4 13 1 1 1 - 1 8 1 5 14 2 2 2 - 2 9 2 6 3 3 3 10 3 11

4 12

(e) Lista de Marcos libres

(a) (b) (c) (d) Donde: (a) Tabla de Páginas del Proceso A (b) Tabla de Páginas del Proceso B (c) Tabla de Páginas del Proceso C (d) Tabla de Páginas del Proceso D

Figura 3.2: Estructura de Datos para el ejemplo de Figura 3.1. en el tiempo (f).

Dentro del programa, cada dirección lógica está formada por un número de página y un desplazamiento dentro de la página. Es decir, cada vez que se hace una referencia dentro del proceso, dada una dirección lógica (número de página + desplazamiento) se debe hacer la traducción a una dirección física (número de marco + desplazamiento). Cabe hacer notar que cuando el tamaño de la página es una potencia de 2, la dirección lógica es igual a la dirección relativa. Por ejemplo, si se emplean direcciones de 16 bits y un tamaño de página de 1Kb= 1024 bytes. La dirección relativa 1502 es en binario

Page 19: Organización y Arquitectura de Sistemas de Computación ...

19

0000010111011110. Con una página de 1 Kb se requieren de 10 bits para el desplazamiento y quedarían 6 para el número de la página. De este modo la dirección relativa 1502, corresponde a un desplazamiento de 478 (0111011110) en la página 1 (000001). De este modo, el proceso de traducción de direcciones consiste en los siguientes pasos (ver figura 3.3):

Ø Extraer el número de página de los n bits más significativos de la dirección lógica (en el ejemplo anterior n=6).

Ø Emplear el número de página como índice en la tabla de páginas del proceso, para obtener el número de marco k.

Dirección lógica de 16 bits

Nº página de 6 bits desplazamiento de 10 bits

0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0 Tabla de Páginas del Proceso

0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0

Dirección física de 16 bits

Figura 3. 3: Ejemplo de Traducción de Dirección lógica a Física El comienzo de la dirección física del marco es k * 2m, donde m es la cantidad de bits definidos para el desplazamiento (en el ejemplo anterior m=10). De cualquier forma la dirección física es igual al número de marco en binario, concatenado con el desplazamiento en binario.

3.2.1 Asignación de marcos

Como la cantidad de marcos de página es limitada y pueden existir muchos procesos, para asignar m marcos de página entre n procesos, generalmente, lo que se hace es asignar equitativamente m/n marcos a cada proceso. Sin embargo, los procesos necesitan distintas cantidades de memoria, por lo que se puede optar por asignar una cantidad de marcos de página proporcional al tamaño de cada proceso. Luego, tanto en la asignación equitativa como en la proporcional, no se consideran las prioridades que puedan tener los procesos. Otra estrategia puede consistir en asignar marcos de página de acuerdo a las prioridades de los procesos o de acuerdo una combinación entre sus tamaños y sus prioridades. También se puede permitir que un proceso de alta prioridad seleccione para su reemplazo los marcos de un proceso de menor prioridad.

0 000101 1 000110 2 011001

Page 20: Organización y Arquitectura de Sistemas de Computación ...

20

3.2.2 Hiperpaginación Un concepto importante es el que se conoce como Hiperpaginación. Se dice que un proceso esta hiperpaginado si emplea mas tiempo paginando, es decir, produciendo fallos de páginas y cargando las páginas en memoria; que ejecutándose propiamente tal. Esto se puede producir, por ejemplo, porque un proceso tiene baja prioridad de ejecución y el sistema no le asigna un número de marcos de páginas suficientes para cargar sus páginas.

3.2.3 Tablas de páginas

Como ya se mencionó, las direcciones lógicas, que contienen el número de la página más el desplazamiento, deben ser traducidas a direcciones físicas, que contienen un número de marco y un desplazamiento. La tabla de páginas posee una longitud variable, por lo que no es posible almacenarla en los registros, luego también debiera ser almacenada en la memoria principal; sin embargo, la mayoría de los esquemas de memoria virtual la almacenan en la memoria virtual en vez de en la memoria real, luego también está sujeta a paginación. Existen tres formas comunes de dar soporte hardware a las tablas de páginas:

• Registros dedicados – Gran velocidad para traducción de direcciones – Muy caro, útil solamente cuando las tablas son pequeñas

• Memoria principal – La tabla de páginas se almacena en memoria – RBTP: Registro Base de la Tabla de Páginas almacena un puntero a la tabla

de páginas del proceso en ejecución – Para acceder a una dirección necesita 2 accesos a memoria

• Acceso a entrada en tabla de páginas • Acceso a dirección deseada

– Mucho más lento el proceso de traducción • Registros asociativos (TLB: translation lookaside buffer)

– Para hacer que un sistema de paginación sea aplicable en la práctica, es necesario que la mayoría de los accesos a memoria no impliquen una consulta a la tabla de páginas, sino que únicamente requieran el acceso a la posición solicitada. De esta forma, el rendimiento será similar al de un sistema sin paginación.

– Esto se logra mediante el uso de la TLB. Se trata de una pequeña memoria asociativa interna a la MMU que mantiene información sobre las últimas páginas accedidas.

– Memoria cache especial de alta velocidad – Registro: clave - valor (nº página - nº marco) – Se comparan todas las claves simultáneamente – Búsqueda rápida, hardware caro; Nº entradas: de 8 a 2048 – Solución:

Page 21: Organización y Arquitectura de Sistemas de Computación ...

21

• TLB contiene unas pocas entradas de tabla de páginas • Si el número de marco se encuentra en los registros se accede

directamente al marco de página, de lo contrario se hace una referencia a la tabla de páginas.

• Si el marco no está, se busca en memoria y se trae a la TLB, eliminando el menos recientemente usado

• El principio de localidad asegura un porcentaje alto de aciertos sobre la TLB (entre 80% y 98% con TLB entre 16 y 512 registros)

– TLB sin identificadores de proceso. La MMU accede a la TLB sólo con el número de página. Por tanto, cada vez que hay un cambio de proceso el sistema operativo debe invalidar la TLB ya que cada proceso tiene su propio mapa.

– TLB con identificadores de proceso. La MMU accede a la TLB con el número de página y un identificador de proceso. En cada entrada de la TLB, por tanto, se almacena también este identificador. La MMU obtiene el identificador de un registro del procesador. El sistema operativo debe encargarse de asignarle un identificador a cada proceso y de rellenar este registro en cada cambio de proceso. De esta forma, no es necesario que el sistema operativo invalide la TLB en cada cambio de proceso, pudiendo existir en la TLB entradas correspondientes a varios procesos.

3.2.3.1 Tablas de páginas multinivel

• Utilizadas por la mayoría de los sistemas de paginación. • Las tablas de páginas pueden ser muy grandes → Las tablas están sujetas también

a paginación. • Esquema de dos niveles:

– Nivel 1: Tabla de páginas para acceso a la tabla de páginas del proceso – Nivel 2: Tabla de páginas del proceso – Traducción de direcciones

• Dirección lógica (32 bits) = número de página (20 bits) + desplazamiento (12 bits)

• Nº página (20 bits) = p1 (10 bits) + p2 (10 bits) • p1 - índice a tabla de páginas exterior • p2 - desplazamiento en tabla de páginas exterior

Page 22: Organización y Arquitectura de Sistemas de Computación ...

22

Figura 3. 4: Esquema de traducción, con un esquema de paginación de dos niveles

3.2.3.2 Tabla de páginas invertida

• Sólo una tabla de páginas en el sistema con tantas entradas como marcos haya • Entrada: dirección virtua l de página (nº de página) y PID del proceso (identificador) • El índice nos devuelve nº de marco donde está la pagina

Figura 3.5: Esquema de traducción, usando una tabla de páginas invertida

Page 23: Organización y Arquitectura de Sistemas de Computación ...

23

3.2.4 Política de sustitución de páginas

En un sistema multiprogramado con intercambio, y en particular sistemas que trabajan con memoria virtual con paginación, el reemplazo de páginas está implícito, dado que un sistema con memoria virtual permite que un proceso no este contenido en memoria completamente.

Cuando las ins trucciones que se desean ejecutar están en páginas que no tienen asociadas marcos, se debe buscar marcos libres para asociarlas. Sin embargo, puede ocurrir que el sistema no posea marcos de páginas libres o bien el número de marcos libres sea inferior a los exigidos para el buen funcionamiento del sistema. En este caso el sistema debe ejecutar alguna acción que le permita liberar marcos de páginas para asignárselos a las páginas que lo necesitan. Las páginas que tienen asociadas marcos de páginas que se elijan como donadoras de marcos deben ser guardadas en disco. De estas circunstancias nace la necesidad del sistema por poseer algoritmos que le permitan reemplazar páginas de memoria a disco.

Con el fin de utilizar los mejores criterios para el reemplazo de páginas se conocen diversos algoritmos de reemplazo de páginas. A continuación se presentan algunos de ellos.

LRU (least recently used): consiste en sacar aquella página que haya sido usada menos recientemente. FIFO (first in first out): saca la página que lleva más tiempo cargada, independiente del tiempo que haya pasado desde la última vez que fue referenciada. Para esto se le asigna a cada página un contador, inicialmente están todos los contadores en cero; cada vez que se produce una falta de página se incrementan todos los contadores de las páginas que están en memoria y el contador de la página que entra se pone en cero; cuando se decide cual página debe salir simplemente se saca aquella con el contador más alto. LFU (least frequently used): consiste en sacar aquella página que ha sido menos frecuentemente usada, mantiene los contadores de acuerdo al número de referencias, así se reemplaza la página que tiene el menor recuento. MFU (most frequently used): saca la página que ha sido más frecuentemente usada, se basa en que la página con menos recuentos es una página que recién se ha cargado, luego debería poder usarse por más tiempo. Algoritmo Optimo: la idea es conocer cuales serán las instrucciones que serán ejecutadas en el futuro. Con esta información se pueden etiquetar las instrucciones con el número de instrucciones que se ejecutarán antes que ellas. Una vez que se tenga esta información, el algoritmo puede decidir reemplazar la página asociada a la instrucción con una etiqueta más alta. El problema de este algoritmo es que no es realizable, al momento del fallo de página no se sabe cual será la siguiente página que se referenciará. Una situación parecida ocurre en uno de los algoritmos de planificación de la CPU denominado SJF. Algoritmo de reemplazo de segunda oportunidad: este algoritmo es el mismo que el FIFO solo con una variación, se considera la frecuencia con la que son referenciadas las páginas. Actúa de la siguiente manera: cuando ocurre un fallo de página se revisa la lista de páginas desde la más antigua a la más nueva. Si el bit R de la página mas antigua es 0

Page 24: Organización y Arquitectura de Sistemas de Computación ...

24

entonces se reemplaza esa página pero si el bit R es 1 entonces se coloca el bit R en 0 y se coloca al final de la lista, luego se consulta por la siguiente página mas antigua, y así sucesivamente. El algoritmo se llama de segunda oportunidad porque se le da a cada página una segunda oportunidad de quedarse en memoria. El problema de este algoritmo es que es de implementación lenta, pues la lista debe modificarse, es decir se debe sacar un nodo de un sitio para ser insertado en otro lugar. Variaciones de este algoritmo son: Algoritmo del reloj y Algoritmo del reloj con dos manecillas.

3.3. Segmentación

Otra forma de subdividir el programa es la segmentación. En este caso el programa y sus datos son divididos en segmentos, sin ser necesario que todos sean de igual tamaño (ya que son espacios de dirección independientes unos de otros, cada uno puede crecer en forma independiente sin afectar ni ser afectado por los demás.). Al igual que en la paginación, una dirección lógica segmentada consta de dos partes, un número de segmento, más un desplazamiento.

La paginación es transparente al programador; la segmentación por otro lado hace que éste vea a la memoria como un gran espacio de direcciones o segmentos que el puede manejar. La memoria es utilizada por el sistema operativo, los programas y los datos que se encuentran en segmentos distintos. Luego, puede haber segmentos de programas distintos para varios tipos de programas y segmentos de datos.

Figura 3. 6: Esquema representativo de Segmentación

Page 25: Organización y Arquitectura de Sistemas de Computación ...

25

Además, la segmentación simple hace uso de una tabla de segmentos para cada proceso y una tabla de segmentos en la memoria principal. En este caso, la tabla de segmentos para un proceso tendrá la dirección física de comienzo del segmento y la longitud máxima de éste (como medida de protección, para evitar referencias a segmentos que no corresponda).

En forma análoga a la paginación, el proceso de traducción de direcciones, en la segmentación, consiste en los siguientes pasos (ver figura 3.7 y 3.8):

Figura 3.7: Esquema de traducción usando segmentación

Ø Extraer el número de segmento de los n bits más significativos de la dirección lógica Ø Emplear el número de segmento como índice en la tabla de segmentos del proceso,

para obtener la dirección física de comienzo del segmento. Ø Comparar el desplazamiento expresado en los m bits menos significativos de la

dirección lógica con la longitud del segmento. si es mayor, la dirección no es válida. Ø La dirección física buscada es la suma de la dirección física del inicio del segmento

más el desplazamiento.

Cuando un proceso se introduce en memoria, se cargan todos sus segmentos en regiones de memoria libres y se crea la tabla de segmentos.

La segmentación tiene las siguientes ventajas

1. Generalmente, el programador no conoce realmente el tamaño que utilizará una estructura de datos, luego si ésta tiene asignado un segmento podrá ser expandido o reducido según sus necesidades.

2. Los programas pueden ser compilados de manera independiente aunque sean módulos de otros programas.

Page 26: Organización y Arquitectura de Sistemas de Computación ...

26

3. Varios procesos pueden compartir segmentos, por ejemplo si desean compartir datos.

4. Se pueden proteger los programas o datos asignando privilegios de acceso a los segmentos

Figura 3. 8: Ejemplo de Traducción de Direcciones en Segmentación

3.4 Combinaciones entre Paginación y Segmentación

Las combinaciones entre paginación y segmentación son las siguientes:

1. Memoria no segmentada y no paginada: La dirección virtual es la misma que la dirección física.

2. Memoria paginada no segmentada: La memoria es un espacio de direcciones paginado.

3. Memoria segmentada no paginada: La memoria es un conjunto de direcciones lógicas.

4. Memoria segmentada paginada: La segmentación define particiones lógicas de memoria y la paginación gestiona la asignación de memoria dentro de las particiones.

Page 27: Organización y Arquitectura de Sistemas de Computación ...

27

Conclusiones

La gestión de la memoria es y será uno de los temas de mayor importancia, y con mayor incidencia, a la hora de buscar mecanismos efectivos y eficientes en la explotación de los recursos computacionales.

La complejidad de las actividades, que se convertirán en procesos, ha llevado a generar continuas especializaciones en los sistemas computacionales y a encontrar formas óptimas de obtener reales y eficientes prestaciones a la altura de las exigencias actuales en el procesamiento de la información.

Las técnicas presentadas son las más comunes, cada una tiene sus ventajas y desventajas inherentes, lo que conlleva a un continuo mejoramiento y trabajo sobre éstas. Lamentablemente, y al parecer es un aspecto recurrente, la proposición de alguna nueva técnica trae consigo el mejoramiento o modificación de otros elementos considerados en el proceso de administración de memoria, son tantos los factores que participan, que no se puede provocar un mejoramiento de forma aislada, sino que más bien de una forma tipo cascada: mejoramientos en un elemento conllevan a mejoramientos en otros elementos.

Las preguntas que se pueden plantear como inquietudes al momento de concluir un trabajo de esta naturaleza, podrían ser:

¿Es posible considerar a la paginación como una asignación estática de memoria, considerando intercambio?

¿Dadas las diferencias entre arquitecturas computaciones y las necesidades particulares de los usuarios, se podrá definir un conjunto de factores universales para comparar y

evaluar las distintas formas de gestionar la memoria?

¿La gestión de la memoria se encontrará presente por siempre en los sistemas computacionales?

¿Quiénes serán los demandantes por mejores técnicas de administración de memoria, las empresas para apoyar su gestión de negocios o los usuarios en su trabajo cotidiano?

Las respuestas a algunas preguntas pueden parecer muy fáciles, sin embargo se debe analizar cada uno de los factores que participan en estas interrogantes, para determinar la real respuesta a lo planteado.

Page 28: Organización y Arquitectura de Sistemas de Computación ...

28

Bibliografía

Monografías Ø STALLINGS, William, Organización y Arquitectura de Computadores, Quinta

Edición, Madrid, Prentice Hall Iberia, 2000.- ISBN 84-205-2993-1. pp 163 – 168. Ø TANENBAUM, S. Andrew, Organización de Computadoras: Un Enfoque

Estructurado, Cuarta Edición, México, Prentice may, 2000.- ISBN970-17-0399-5. pp 80 – 88.

Ø Trabajo de Alumnos del magíster en Ciencias de la Computación, semestres

anteriores al 01-2003. Documentos Electrónicos (solo se referencia a las direcciones, por problemas de espacio en el trabajo).

• http://www.inf.utfsm.cl/~rmonge/uv/so/apunte05-04.pdf • http://dreamcast_2.tripod.cl/sistemas/sistemas.htm • http://www.lab.dit.upm.es/~arqo/presentaciones/gm/ • http://people.ac.upc.es/juli/T5 -GestionMemoria.pdf • http://laurel.datsi.fi.upm.es/~ssoo/DSO/download/memoria.pdf • http://www.ii.uam.es/~alfonsec/docs/compilaa.htm • http://arcos.inf.uc3m.es/~ssoo-va/ssoo-va/libro/pdf/cap04.pdf • http://bernia.disca.upv.es/~eso/08-gestion-de-memoria/08-gestion-de-memoria.pdf • http://www.disca.upv.es/sterrasa/Rep%C3%A0s%20SO2/Problemas_Parte_I_Soluc

iones.pdf • http://www.infor.uva.es/~isaac/ASO/prob-mem.html • http://gsyc.escet.urjc.es/docencia/asignaturas/itig-

sistemas_operativos/transpas/node12.html • http://shannon.unileon.es/~dielpa/SO/teoria/so05.pdf