PSICOLOGÍA. UNA INTRODUCCIÓN. ALCIRA ORSINI Y LETICIA BOSSELLINI 3.pdf
Gestion De Memoria
1. LIC EN INFORMATICA MATERIA: SISTEMAS OPERATIVOS CATEDRÁTICO: PAYAN REYES LAURO CARLOS TEMA: GESTION DE MEMORIA INTEGRANTES: ARTEAGA TECOCOATZI SANDY CUAPIO LIMA MISAEL XAHUENTITLA PALACIOS MARCO ANTONIO NOVIEMBRE DE 2009 SEP SES DGEST INSTITUTO TECNOLÓGICO DE APIZACO
3. 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.
5.
6. La MMU se Inicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso. En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en modo privilegiado del procesador. La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos.
7. Intercambio: 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: Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar más memoria RAM de la que realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción del código. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecución.. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de memoria de todos los usuarios.
8.
9.
10. Fragmentación La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de memoria que se vieron en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentación externa. La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera. La fragmentación puede ser: Fragmentación Externa: Existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua. Fragmentación Interna: La memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la partición, pero no se utiliza. La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero esta sólo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.
11. 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. Las páginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginación permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Cada página consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n páginas (0,1,2,3…n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de paginas (0,z,2z,…,(m-1)z)(m*z posiciones). Una dirección virtual a es equivalente a una dirección dada como una dupla (p, d), en la cual p es el número de la página y d el número de la palabra dentro de la página, de acuerdo con la relación: a=p*z+d (06), los cuatro bits más significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento.
12. Para tener el control de las páginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos. Hasta ahora, los métodos que hemos visto de la administración de la memoria principal, nos han dejado con un problema: Fragmentación, (huecos en la memoria que no pueden usarse debido a lo pequeño de su espacio) lo que nos provoca un desperdicio de memoria principal. Una posible solución para la fragmentación externa es permitir que espacio de direcciones lógicas lleve a cabo un proceso en direcciones no contiguas, así permitiendo al proceso ubicarse en cualquier espacio de memoria física que esté disponible, aunque esté dividida. Una forma de implementar esta solución es a través del uso de un esquema de paginación. La paginación evita el considerable problema de ajustar los pedazos de memoria de tamaños variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los métodos previos, la paginación, en sus diversas formas, es usada en muchos sistemas operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU –Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas páginas. Las unidades correspondientes en la memoria física se llaman marcos para página o frames. Las páginas y los frames tienen siempre el mismo tamaño.
13.
14.
15.
16.
17.
18.
19.
20. Segmentación Paginada Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. Para la segmentación se necesita que estén cargadas en memoria áreas de tamaños variables. Si se requiere cargar un segmento en memoria que antes estuvo en ella y fue removido a memoria secundaria, se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible. En cambio recargar una página implica sólo encontrar un marco de página disponible. A nivel de paginación, si quiere referenciar en forma cíclica n paginas, estas deberán ser cargadas una a una, generándose varias interrupciones por fallas de páginas. Bajo segmentación, esta página podría conformar un sólo segmento, ocurriendo una sola interrupción por falla de segmento. No obstante, si bajo segmentación se desea acceder un área muy pequeña dentro de un segmento muy grande, este deberá cargarse completamente en memoria, desperdiciándose memoria. Bajo paginación sólo se cargará la página que contiene los ítems referenciados. Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, éste puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.
21.
22.
23. ALGORITMOS DE SUSTITUCIÓN DE PÁGINAS El algoritmo óptimo reemplaza la página que tardará más tiempo en volver a ser referenciada. Desafortunadamente, no hay forma de determinar qué página será la que tarde más tiempo en referenciarse, por lo que este algoritmo no puede utilizarse en la práctica. Sin embargo, es útil como base de comparación con otros algoritmos en un banco de pruebas. El algoritmo NRU divide las páginas en cuatro clases según el estado de los bits R y M. Se escoge una página al azar de la clase de número más bajo. Este algoritmo es fácil de implementar, pero es muy burdo. Los hay mejores. El algoritmo FIFO recuerda el orden en el que se cargaron las páginas en la memoria, utilizando una lista enlazada. Resulta trivial eliminar la página más antigua, pero es posible que esa página todavía esté en uso, por lo que FIFO es una mala elección. El algoritmo de la segunda oportunidad es una modificación del FIFO que comprueba si una página se está usando o no, antes de sustituirla. Si se está usando, se le perdona la vida. Esta modificación mejora el rendimiento de forma considerable. El algoritmo del reloj es simplemente una implementación diferente del algoritmo de la segunda oportunidad. Tiene las mismas propiedades de rendimiento, pero la ejecución del algoritmo es más rápida.
24. LRU es un algoritmo excelente, pero no puede implementarse sin un hardware especial. Si no se cuenta con ese hardware, LRU no puede usarse. NFU es un intento burdo de aproximarse al LRU. No es muy bueno. En cambio, el algoritmo de envejecimiento es una aproximación mucho mejor al LRU y puede implementarse eficientemente. Es una buena elección. Los dos últimos algoritmos se basan en el conjunto de trabajo. El algoritmo del conjunto del trabajo tiene un rendimiento razonable, pero su implementación es algo costosa. El algoritmo WSClock es una variante que no solo tiene un buen rendimiento, sino que también puede implementarse eficientemente. En síntesis, los dos mejores algoritmos son el de envejecimiento y WSClock. Se basan en el algoritmo LRU y en el conjunto de trabajo, respectivamente. Ambos logran un buen rendimiento de paginación y pueden implementarse eficientemente. Existen unos cuantos algoritmos más, pero estos dos son probablemente los más importantes en la práctica.