1. RepúblicaBolivariana de Venezuela
Ministerio del PoderPopular para la EducaciónSuperior
Sede Barcelona
Sistemas Operativos II SecciónSV
Profesor: Bachiller:
Ramón Aray Betancourt Edgar C.I: 25.245.689
Barcelona, 25 de marzo de 2017
3. Introducción
La memoria es uno de los principales recursos de la computadora, la cual debe de
administrarse con mucho cuidado. Aunque actualmente la mayoría de
los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual
manera las aplicaciones actuales tienen también altos requerimientos de memoria,
lo que sigue generando escasez de memoria en los sistemas multitarea y/o
multiusuario.
La parte del sistema operativo que administra la memoria se
llama administrador de memoria y su labor consiste en llevar un registro de las
partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar
espacio en memoria a los procesos cuando éstos la necesiten y liberándola
cuando terminen, así como administrar el intercambio entre la memoria principal y
el disco en los casos en los que la memoria principal no le pueda dar capacidad a
todos los procesos que tienen necesidad de ella.
Los sistemas de administración de memoria se pueden clasificar en dos tipos: los
que desplazan los procesos de la memoria principal al disco y viceversa durante la
ejecución y los que no.
El propósito principal de una computadora es el de ejecutar programas, estos
programas, junto con la información que accesan deben de estar en la memoria
principal (al menos parcialmente) durante la ejecución.
Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener
varios procesos a la vez en la memoria principal, para lo cual dispone de varias
opciones de administración tanto del procesador como de la memoria.
La selección de uno de ellos depende principalmente del diseño del hardware para
el sistema. A continuación se observarán los puntos correspondientes a la
administración de la memoria.
4. La memoria virtual es una técnica de gestión de la memoria que permite que el
sistema operativo disponga, tanto para el software de usuario como para sí
mismo, de mayor cantidad de memoria que esté disponible físicamente. La
mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU,
la memoria caché (tanto dentro como fuera del CPU), la memoria RAM y el disco
duro. En ese orden, van de menor capacidad y mayor velocidad a mayor
capacidad y menor velocidad.
Muchas aplicaciones requieren acceso a más información (código y datos) que la
que se puede mantener en memoria física. Esto es así sobre todo cuando el
sistema operativo permite múltiples procesos y aplicaciones ejecutándose
simultáneamente. Una solución al problema de necesitar mayor cantidad de
memoria de la que se posee consiste en que las aplicaciones mantengan parte de
su información en disco, moviéndola a la memoria principal cuando sea necesario.
Hay varias formas de hacer esto.
Una opción es que la aplicación misma sea responsable de decidir qué
información será guardada en cada sitio (segmentación), y de traerla y llevarla. La
desventaja de esto, además de la dificultad en el diseño e implementación del
programa, es que es muy probable que los intereses sobre la memoria de dos o
varios programas generen conflictos entre sí: cada programador podría realizar su
diseño teniendo en cuenta que es el único programa ejecutándose en el sistema.
La alternativa es usar memoria virtual, donde la combinación entre
hardware especial y el sistema operativo hace uso de la memoria principal y la
secundaria para hacer parecer que el ordenador tiene mucha más memoria
principal (RAM) que la que realmente posee. Este método es invisible a los
procesos. La cantidad de memoria máxima que se puede hacer ver que hay tiene
que ver con las características del procesador. Por ejemplo, en un sistema de 32
bits, el máximo es 232, lo que da 4096 Megabytes (4 Gigabytes). Todo esto hace el
trabajo del programador de aplicaciones mucho más fácil, al poder ignorar
completamente la necesidad de mover datos entre los distintos espacios de
memoria.
Aunque la memoria virtual podría estar implementada por el software del sistema
operativo, en la práctica casi siempre se usa una combinación de hardware y
software, dado el esfuerzo extra que implicaría para el procesador.
Operación básica
Cuando se usa memoria virtual, o cuando una dirección es leída o escrita por la
CPU, una parte del hardware dentro de la computadora traduce las direcciones de
memoria generadas por el software (direcciones virtuales) en:
la dirección real de memoria (la dirección de memoria física).
una indicación de que la dirección de memoria deseada no se encuentra en
memoria principal (llamado excepción de memoria virtual)
En el primer caso, la referencia a la memoria es completada, como si la memoria
virtual no hubiera estado involucrada: el software accede donde debía y sigue
5. ejecutando normalmente. En el segundo caso, el sistema operativo es invocado
para manejar la situación y permitir que el programa siga ejecutando o aborte
según sea el caso. La memoria virtual es una técnica para proporcionar la
simulación de un espacio de memoria mucho mayor que la memoria física de una
máquina. Esta "ilusión" permite que los programas se ejecuten sin tener en cuenta
el tamaño exacto de la memoria física.
La ilusión de la memoria virtual está soportada por el mecanismo de traducción de
memoria, junto con una gran cantidad de almacenamiento rápido en disco duro.
Así en cualquier momento el espacio de direcciones virtual hace un seguimiento
de tal forma que una pequeña parte de él, está en memoria física y el resto
almacenado en el disco, y puede ser referenciado fácilmente.
Debido a que sólo la parte de memoria virtual que está almacenada en la memoria
principal es accesible a la CPU, según un programa va ejecutándose, la
proximidad de referencias a memoria cambia, necesitando que algunas partes de
la memoria virtual se traigan a la memoria principal desde el disco, mientras que
otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de
paginación).
La memoria virtual ha llegado a ser un componente esencial de la mayoría de los
sistemas operativos actuales. Y como en un instante dado, en la memoria sólo se
tienen unos pocos fragmentos de un proceso dado, se pueden mantener más
procesos en la memoria. Es más, se ahorra tiempo, porque los fragmentos que no
se usan no se cargan ni se descargan de la memoria. Sin embargo, el sistema
operativo debe saber cómo gestionar este esquema.
La memoria virtual también simplifica la carga del programa para su ejecución,
llamada reubicación, este procedimiento permite que el mismo programa se
ejecute en cualquier posición de la memoria física.
En un estado estable, prácticamente toda la memoria principal estará ocupada con
fragmentos de procesos, por lo que el procesador y el S.O tendrán acceso directo
a la mayor cantidad de procesos posibles, y cuando el S.O traiga a la memoria un
fragmento, deberá expulsar otro. Si expulsa un fragmento justo antes de ser
usado, tendrá que traer de nuevo el fragmento de manera casi inmediata.
Demasiados intercambios de fragmentos conducen a lo que se conoce como hiper
paginación: donde el procesador consume más tiempo intercambiando fragmentos
que ejecutando instrucciones de usuario. Para evitarlo el sistema operativo intenta
adivinar, en función de la historia reciente, qué fragmentos se usarán con menor
probabilidad en un futuro próximo (véase algoritmos de reemplazo de páginas).
Los argumentos anteriores se basan en el principio de cercanía de referencias o
principio de localidad que afirma que las referencias a los datos y el programa
dentro de un proceso tienden a agruparse. Por lo tanto, es válida la suposición de
que, durante cortos períodos de tiempo, se necesitarán sólo unos pocos
fragmentos de un proceso.
Una manera de confirmar el principio de cercanía es considerar el rendimiento de
un proceso en un entorno de memoria virtual.
6. El principio de cercanía sugiere que los esquemas de memoria virtual pueden
funcionar. Para que la memoria virtual sea práctica y efectiva, se necesitan dos
ingredientes. Primero, tiene que existir un soporte de hardware y, en segundo
lugar, el S.O debe incluir un software para gestionar el movimiento de páginas o
segmentos entre memoria secundaria y memoria principal.
Justo después de obtener la dirección física, y antes de consultar el dato en
memoria principal, se busca en memoria-cache. Si está entre los datos
recientemente usados, la búsqueda tendrá éxito, pero si falla, la memoria virtual
consultará la memoria principal ó, en el peor de los casos, el disco (swapping).
Detalles
La traducción de las direcciones virtuales a reales es implementada por
una Unidad de Manejo de Memoria (MMU). El sistema operativo es el responsable
de decidir qué partes de la memoria del programa es mantenida en memoria
física. Además mantiene las tablas de traducción de direcciones (si se
usa paginación la tabla se denomina tabla de paginación), que proveen las
relaciones entre direcciones virtuales y físicas, para uso de la MMU. Finalmente,
cuando una excepción de memoria virtual ocurre, el sistema operativo es
responsable de ubicar un área de memoria física para guardar la información
faltante, trayendo la información desde el disco, actualizando las tablas de
traducción y finalmente continuando la ejecución del programa que dio la
excepción de memoria virtual desde la instrucción que causó el fallo.
En la mayoría de las computadoras, las tablas de traducción de direcciones de
memoria se encuentran en memoria física. Esto implica que una referencia a una
dirección virtual de memoria necesitará una o dos referencias para encontrar la
entrada en la tabla de traducción, y una más para completar el acceso a esa
dirección.
Para acelerar el desempeño de este sistema, la mayoría de las Unidades
Centrales de Proceso (CPU) incluyen una MMU en el mismo chip, y mantienen
una tabla de las traducciones de direcciones virtuales a reales usadas
recientemente, llamada Translation Lookaside Buffer (TLB). El uso de
este buffer hace que no se requieran referencias de memoria adicionales, por lo
que se ahorra tiempo al traducir.
En algunos procesadores, esto es realizado enteramente por el hardware. En
otros, se necesita de la asistencia del sistema operativo: se levanta una
excepción, y en ella el sistema operativo reemplaza una de las entradas del TLB
con una entrada de la tabla de traducción, y la instrucción que hizo la referencia
original a memoria es re-ejecutada.
El hardware que tiene soporte para memoria virtual, la mayoría de las veces
también permite protección de memoria. La MMU puede tener la habilidad de
variar su forma de operación de acuerdo al tipo de referencia a memoria (para
leer, escribir, o ejecutar), así como el modo en que se encontraba el CPU en el
7. momento de hacer la referencia a memoria. Esto permite al sistema operativo
proteger su propio código y datos (como las tablas de traducción usadas para
memoria virtual) de corromperse por una aplicación, y de proteger a las
aplicaciones que podrían causar problemas entre sí.
Paginación y memoria virtual
La memoria virtual usualmente (pero no necesariamente) es implementada
usando paginación. En paginación, los bits menos significativos de la dirección de
memoria virtual son preservados y usados directamente como los bits de orden
menos significativos de la dirección de memoria física. Los bits más significativos
son usados como una clave en una o más tablas de traducción de direcciones
(llamadas tablas de paginación), para encontrar la parte restante de la dirección
física buscada.
8. Conclusión
Para concluir se entiende que:
En la memoria principal son ejecutados los programas y procesos de una
computadora y es el espacio real que existe en memoria para que se ejecuten los
procesos.
La memoria virtual es aquella que le ofrece a las aplicaciones la ilusión de que
están solas en el sistema y que pueden usar el espacio de direcciones completo.
Las direcciones de memoria son de tres tipos: físicas, lógicas y lineales.
El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las
que pueden residir simultáneamente en la memoria del sistema.
Las asignación consiste en determinar cuál espacio vacío en la memoria principal
es el más indicado para ser asignado a un proceso.
Las estrategias más comunes para asignar espacios vacíos (huecos) son: primer
ajuste, mejor ajuste, peor ajuste.
La fragmentación es la memoria que queda desperdiciada al usar los métodos de
gestión de memoria tal como la asignación.
La fragmentación puede ser interna o externa.
La paginación es una técnica de gestión de memoria en la cual el espacio de
memoria se divide en secciones físicas de igual tamaño llamadas marcos de
página, las cuales sirven como unidad de almacenamiento de información.
La segmentación es un esquema de manejo de memoria mediante el cual la
estructura del programa refleja su división lógica; llevándose a cabo una
agrupación lógica de la información en bloques de tamaño variable denominados
segmentos.