CAPITULO 3. MEMORIA

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
CAPITULO 3. MEMORIA por Mind Map: CAPITULO 3. MEMORIA

1. 3.4. Memoria Virtual

1.1. Las alternativas de administración de memoria vistas cargan todo el proceso de manera contigua.

1.1.1. Esto exige mayores espacios de memoria con secciones del proceso que no se utilizarán enseguida.

1.1.1.1. La memoria virtual y la multiprogramación se corresponden muy bien entre sí.

1.1.1.1.1. Además la memoria virtual es útil, pues mientras un programa hace swapping, otro puede tener el procesador y, de esa manera, tenemos menos CPU ociosa.

1.1.1.1.2. En un sistema de memoria virtual, el espacio de memoria lógica disponible para un programa es totalmente independiente del espacio de memoria física.

1.2. 3.4.1. Paginación por Demanda

1.2.1. Combina las características de la paginación simple y las superposiciones para implementar memoria virtual.

1.2.2. Cada página de un programa se almacena en forma contigua en el espacio de intercambio de paginación en almacenamiento secundario.

1.2.3. Cada entrada en la tabla de páginas tiene como mínimo dos campos:

1.2.3.1. Marco de Página

1.2.3.2. Bit dentro/fuera

1.3. 3.4.2. Localidad de Referencia

1.3.1. Cuando hay referencias a páginas ya cargadas en memoria, la traducción de direcciones es realizada totalmente por el hardware, rindiendo desempeño comparable a sistemas sin memoria virtual.

1.3.2. El rendimiento global sería inaceptable si las referencias a memoria fueran aleatorias.

1.3.3. Las referencias tienden a estar localizadas en un pequeño conjunto de páginas.

1.3.4. Esta localidad da como resultado que la tasa de aciertos de páginas de memoria, se suficientemente alta.

1.4. 3.4.3. Traba de Páginas

1.4.1. El sistema de paginación debe ser capaz de trabar páginas en memoria de manera tal que no puedan ser intercambiadas a almacenamiento secundario.

1.4.2. Gran parte del sistema operativo debe estar >>encerrado con llave<< en memoria.

1.4.3. El diseño del sistema de entrada y salida puede requerir también que permanezan en memoria algunas de las páginas del proceso.

1.4.4. A pesar de que se debe tener cuidado con evitar que algunas páginas sean intercambiadas a almacenamiento secundario, no es necesario el bit cerrojo en todos los casos.

1.5. 3.4.4. Tamaño de la página

1.5.1. El tamaño de la página es una potencia de 2

1.5.2. Un tamaño pequeño de páginas reduce la fragmentación interna.

1.5.3. Un tamaño grande de página reduce el número de páginas que se necesitan, reduciendo el tamaño de la tabla de páginas.

1.5.4. Un tamaño grande de página reduce la sobrecarga involucrada en el intercambio de páginas desde y hacia la memoria.

1.5.5. Un tamaño de página más pequeño, con su resolución más fina, está en mejores condiciones de acertarle a la localidad de referencias del proceso.

1.6. 3.4.5. Algoritmos de Reemplazo de Páginas

1.6.1. Es el algoritmo que selecciona la página para ser intercambiada a almacenamiento de intercambio.

1.6.2. Selecciona para remover a la página que no será referenciada de nuevo en lapso más largo de instrucciones ejecutadas.

1.6.2.1. Selecciona a la página que ha estado en memoria por más tiempo.

1.6.3. Su uso está limitado a servir como punto de referencia, con el cual puedan ser comparados otros algoritmos de reemplazo de páginas.

1.7. 3.4.6. El Rendimiento de los Algoritmos

1.7.1. El rendimiento de los diferentes algoritmos se puede comparar dadas diferentes secuencias de referencias de memoria.

1.7.2. Se puede comparar el rendimiento de un algoritmo en particular dados diferentes números de marcos de página asignados a un proceso.

1.8. 3.4.7. Políticas de Asignación

1.8.1. El hardware de la máquina es el que dicta el número mínimo absoluto de marcos que se le pueden asignar a cualquier proceso.

1.8.2. Cuando ocurre un fallo de página, se carga la página necesaria en memoria y la instrucción se ejecuta de nuevo.

1.8.3. Por motivos de rendimiento, el número mínimo de marcos por proceso generalmente es mayor que el mínimo absoluto que dicta el hardware.

1.8.4. Es el sistema operativo el que debe decidir cuántos marcos de página asignar a cada proceso.

1.8.5. 3.4.7.1.Hiperpaginación

1.8.5.1. Aunque técnicamente es posible reducir el número de marcos asignados al mínimo, hay cierto número de páginas que están en uso activo.

1.8.5.2. Si el proceso no cuenta con este número de marcos, causará muy pronto un fallo de página.

1.9. 3.4.8. Conjunto de Trabajo

1.9.1. Conjunto de páginas referenciadas en un cierto intervalo de tiempo precedente.

1.9.2. Se expresa al conjunto de trabajo usando la notación funcional W(t,∆)

1.9.2.1. W representa al conjunto de trabajo.

1.9.2.2. t representa el tiempo.

1.9.2.3. ∆ representa el intervalo.

1.9.3. El objetivo es elegir un valor para ∆ de manera tal que el conjunto de trabajo refleje la localidad del programa.

1.9.3.1. Si el valor de ∆ es demasiado pequeño, el conjunto de trabajo no incluirá todas las páginas en la localidad actual.

1.9.3.2. Si el valor de ∆ es demasiado grande, el conjunto de trabajo incluirá páginas de una localidad previa.

1.10. 3.4.9. Prepaginado

1.10.1. Si el sistema operativo conoce el conjunto de trabajo al momento de que el proceso fue intercambiado a almacenamiento secundario.

1.10.1.1. Puede prepaginar todas las páginas en ese conjunto de trabajo cuando el proceso sea intercambiado nuevamente a memoria.

1.10.2. El prepaginado previene que la referencia inicial a las páginas del conjunto de trabajo generen un fallo de página.

1.11. 3.4.10. Segmentación

1.11.1. Así como la paginación simple puede modificarse para crearse paginación por demanda, la segmentación también se puede modificar para crear segmentación por demanda.

1.11.2. En la decisión del intercambio, el tamaño de los segmentos se convierte en un factor importante para decidir qué segmentos intercambiar.

1.11.3. Una forma mucho más práctica de implementar segmentación en un sistema de memoria virtual es combinarlo con paginación por demanda.

1.11.4. La capacidad de memoria virtual se crea por paginación por demanda de los segmentos.

2. 3.2. Modelo de Memoria de un Proceso

2.1. El sistema operativo gestiona el mapa de memoria de un proceso durante la vida del mismo.

2.1.1. La correspondencia, proyección o trazado de un mapa en la memoria es una técnica que consiste en hacer que una parte del espacio de direcciones parezca contener un objeto, tal como un archivo o dispositivo, de manera que los accesos a esa parte de la memoria actúen sobre el objeto.

2.2. 3.2.1. Fases en la Generación de un Ejecutable

2.2.1. Una aplicación estará compuesta por un conjunto de módulos de código fuente que deberán ser procesados para obtener el ejecutable de la aplicación.

2.2.1.1. Este procesamiento consta de dos fases:

2.2.1.1.1. Compilación

2.2.1.1.2. Enlace o Montaje

2.2.2. Además de referencias entre módulos, pueden existir referencias a símbolos definidos en otros archivos objeto previamente compilados, agrupados normalmente en bibliotecas.

2.2.2.1. Una biblioteca es una colección de objetos tales como subrutinas, normalmente relacionados entre sí, y se usa para desarrollar software.

2.2.2.1.1. La forma habitual de usar bibliotecas dinámicas consiste en especificar al momento de enlace qué bibliotecas se deben usar, pero la carga y el enlace se pospone hasta el momento de ejecución.

2.3. 3.2.2. Formato del Ejecutable

2.3.1. Como parte final del proceso de compilación y enlace, se genera un archivo ejecutable que contiene el código máquina del programa.

2.3.2. La cabecera contiene información de control que permite interpretar el contenido del ejecutable.

2.3.2.1. En cuanto a las secciones, cada ejecutable tiene un conjunto de secciones:

2.3.2.1.1. Código (texto)

2.3.2.1.2. Datos con Valor Inicial

2.3.2.1.3. Datos sin Valor Inicial

2.3.3. 3.2.2.1. El Formato COFF

2.3.3.1. Es la especificación del formato para archivos objeto, ejecutables y bibliotecas compartidas que se usó en sistemas UNIX a partir de System V Release 3, agregando la capacidad de contener varias secciones.

2.3.4. 3.2.2.2. El Formato ELF

2.3.4.1. E el formato de archivos objeto, ejecutables, bibliotecas compartidas y volcados de memoria.

2.3.4.2. Es muy flexible y extensible y no está limitado a un procesador o arquitectura en particular.

2.3.5. 3.2.2.3. El Formato PE

2.3.5.1. Se lo utiliza en los ejecutables, archivos de objeto y bibliotecas e enlace dinámico.

2.3.5.2. Es una estructura de datos que encapsula la información necesaria para que el cargador del sistema operativo Windows gestione el código ejecutable envuelto dentro de la misma.

2.4. 3.2.3. Mapa de Memoria de un Proceso

2.4.1. No es algo homogéneo, si no que está formado por distintas regiones o segmentos.

2.4.2. Cuando se activa la ejecución de un programa, se crean varias regiones dentro del mapa a partir de información ejecutable.

2.4.3. Cada región es una zona contigua que está caracterizada por la dirección dentro del mapa del proceso donde comienzan y por su tamaño.

2.4.4. Características y propiedades

2.4.4.1. Soporte de la región

2.4.4.1.1. Donde esta almacenado el contenido inicial de la región.

2.4.4.2. Tipo de uso compartido

2.4.4.2.1. Privado

2.4.4.2.2. Compartido

2.4.4.3. Protección

2.4.4.3.1. Tipo de acceso a la región permitido.

2.4.4.4. Tamaño Fijo o Variable

2.4.4.4.1. Se suele distinguir si la región crece hacia direcciones de memoria menores o mayores.

2.4.4.5. Código (texto)

2.4.4.5.1. Se trata de una región compartida de lectura/ejecución. Es de tamaño fijo.

3. 3.1. Funciones y Operaciones del Administrador de Memoria

3.1. Reubicación

3.1.1. En sistemas con memoria virtual, los programas cargados en memoria deben ser capaces de residir en diferentes partes de la misma en distintos momentos de su ejecución.

3.2. Protección

3.2.1. Los procesos no deben ser capaces de acceder a direcciones de memoria de otros procesos, a menos que este explícitamente permitido.

3.3. Compartimiento

3.3.1. Muchas veces es deseable que los procesos puedan compartir información y, por lo tanto, acceder a un área de memoria ajena.

3.3.1.1. La memoria compartida es una técnica muy utilizada en la comunicación entre procesos.

3.4. Organización Lógica

3.4.1. La memoria de un equipo informático está organizada de manera lineal o unidimensional, como una secuencia de bytes; la de un disco, de manera similar.

3.5. Organización Física

3.5.1. De forma básica podemos decir que la memoria se divide en dos niveles:

3.5.1.1. Memoria principal

3.5.1.1.1. Acceso rápido, en el orden de nanosegundos.

3.5.1.2. Memoria secundaria

3.5.1.2.1. Acceso lento.

3.6. Compactación

3.6.1. Lograr tener pocos grandes espacios libres de memoria contigua y no muchos pequeños espacios libres dispersos.

4. La finalidad de una computadora es la de procesar información mediante la ejecución de los programas apropiados.

4.1. Estos programas, junto con los datos a los que acceden, deben co-residir durante su ejecución en la memoria principal (RAM) con el sistema operativo.

5. 3.3. Diferentes Esquemas de Administración

5.1. La memoria principal debe dar cabida tanto al sistema operativo como a los diversos procesos de usuario.

5.1.1. En los esquemas de asignación contigua, la memoria se divide en dos particiones, una para el sistema operativo residente y otra para los procesos del usuario.

5.2. 3.3.1. Mono Programación

5.2.1. 3.3.1.1. Partición Absoluta Única

5.2.1.1. El esquema de administración de memoria más simple no requiere soporte de hardware.

5.2.1.2. El espacio de memoria esta dividido por convención en dos particiones:

5.2.1.2.1. Una partición esta asignada al sistema operativo.

5.2.1.2.2. La otra a un proceso en ejecución.

5.2.1.3. Cuando un programa se carga en una partición, las direcciones en el código cargando deben corresponder con las direcciones apropiadas en la partición.

5.2.1.4. Se le puede incorporar protección a un esquema de partición absoluta agregándole al hardware un registro base.

5.2.2. 3.3.1.2. Partición Reubicable Única

5.2.2.1. Mucho más útiles que los sistemas de registro base son los sistemas que contienen un registro de reubicación.

5.2.3. 3.3.1.3. Superposiciones

5.2.3.1. En todos los esquemas previos de administración de la memoria, la cantidad de memoria disponible a un proceso está limitado por la cantidad de memoria física.

5.2.3.2. Una superposición mantiene en memoria sólo aquellas instrucciones y datos necesarios en un momento dado.

5.2.3.3. Se definen previamente a la ejecución varias superposiciones, que estarán en diferentes momentos en memoria, reemplazando a la anterior, cuando el proceso la requiera.

5.3. 3.3.2. Multiprogramación

5.3.1. En un ambiente de multiprogramación hay varios procesos compartiendo la memoria.

5.3.2. La protección se debe intensificar, protegiendo los espacios de los procesos entre sí y con respecto a a la memoria del sistema.

5.3.3. Los esquemas de partición única limitan a una computadora a ejecutar un programa a la vez.

5.3.4. Un esquema de partición múltiple, crea varias particiones para permitir que múltiples procesos de usuario queden residentes en la memoria en forma simultánea.

5.3.5. 3.3.2.1. Múltiples Particiones Fijas

5.3.5.1. Si todas las particiones son del mismo tamaño, el sistema operativo sólo necesita llevar la cuenta de cuáles particiones están asignadas a cada proceso.

5.3.5.2. Al espacio desperdiciado dentro de una partición se le llama fragmentación interna.

5.3.5.3. Un método para reducir la fragmentación interna es usar particiones de diferentes tamaños.

5.3.5.4. El tener particiones de diferentes tamaños complica la administración de procesos.

5.3.6. 3.3.2.2. Múltiples Particiones Variables

5.3.6.1. En lugar de dividir la memoria en un conjunto fijo de particiones, un sistema operativo puede elegir ubicar procesos en cualquier ubicación de memoria que esté sin usar.

5.3.6.2. Se debe almacenar la ubicación exacta de comienzo y finalización de cada proceso y se deben mantener los datos acerca de cuáles ubicaciones de memoria están libres.

5.3.6.3. A medida que los procesos se van creando y terminando, el uso de la memoria evoluciona hacia secciones alternadas de espacio asignado y sin asignar.

5.3.6.4. Se puede usar la compactación para hacer un uso más eficiente de la memoria.

5.3.6.5. 3.3.2.2.1. Algoritmos de Selección de la Partición

5.3.6.5.1. Primer Ajuste (first fit)

5.3.6.5.2. Próximo Ajuste (next fit)

5.3.6.5.3. Mejor Ajuste (best fit)

5.3.6.5.4. Peor Ajuste (worst fit)

5.3.6.6. 3.3.2.2.2. Cola de Procesos por Partición

5.3.6.6.1. Se encolan los procesos de acuerdo con la partición asignada, normalmente por tamaño.

5.3.6.7. 3.3.2.2.3. Cola Única

5.3.6.7.1. Los procesos a la espera de ser cargados se encolan en una cola única y un módulo administra el uso de todas las particiones.

5.3.7. 3.3.2.3. Sistema de Compañeras

5.3.7.1. Es un compromiso entre la asiganción de tamaño fijo y la tamaño variable.

5.3.7.2. La memoria se asigna en unidades que son de potencia 2.

5.3.7.3. 3.3.2.3.1. Slab Allocator

5.3.7.3.1. Dentro del núcleo de un sistema operativo se asigna una considerable cantidad de memoria para un conjunto finito de objetos tales como descriptores de archivos y otras estructuras comunes.

5.3.8. 3.3.2.4. Reubicación

5.3.8.1. Al movernos de un sistema de monoprogramación a otro de multiprogramación, es necesario tener en cuenta que en este último no se puede conocer con antelación la posición de memoria.

5.3.8.2. En un sistema de multiprogramación, es necesario realizar un proceso de traducción o reubicación de las direcciones de memoria.

5.3.8.2.1. Direcciones Físicas

5.3.8.2.2. Direcciones Lógicas

5.3.8.2.3. Direcciones Relativas

5.4. 3.3.3. Paginación Simple

5.4.1. La memoria se divide en bloques de tamaño fijo llamados marcos.

5.4.2. A los procesos se los divide en bloques llamados páginas, los cuales tienen el mismo tamaño de los marcos.

5.4.3. Una tabla de páginas almacena el número de marco de página asignado para cada página.

5.5. 3.3.4. Segmentación Simple

5.5.1. Divide un programa en un número de bloques más pequeños llamados segmentos y cada uno de ellos se asigna a la memoria de forma independiente.

5.5.2. A diferencia de la paginación, los segmentos son de tamaño variable.

5.5.3. Una tabla de segmentos es muy similar a una tabla de páginas. No obstante, dado que los segmentos son de tamaño variable, la memoria no puede ser dividida previamente en nada parecido a un marco.

5.6. 3.3.5. Segmentación con Paginación

5.6.1. La segmentación puede combinarse con la paginación para proveer le eficiencia de la paginación con las posibilidades de poder compartir y proteger de la segmentación.

5.6.2. Cuando se agrega la paginación, el desplazamiento del segmento se subdivide en número de página y un desplazamiento de página.

5.6.3. La dirección física se forma añadiendo el desplazamiento de página al número de marco de página especificado en la entrada de tabla de páginas.

5.7. 3.3.6. Tablas de Páginas y de Segmentos

5.7.1. Cada proceso tiene sus propias tablas de páginas y/o segmentos almacenados en memoria por el sistema operativo.

5.7.2. Si las tablas son suficientemente pequeñas, la unidad de administración de la memoria puede tener un conjunto de registros dedicados a mantener la tabla.

5.8. 3.3.7. Memoria Asociativa

5.8.1. Es una memoria ultrarrápida de la CPU administrada por la MMU.

5.8.2. Cada elemento en una memoria asociativa está identificado mediante un valor índice.

5.9. 3.3.8. Tabla de Páginas Invertida

5.9.1. En los sistemas paginados que tienen un gran espacio de direcciones virtual se usan una memoria asociativa, se puede usar una tabla de páginas que contenga una entrada para cada una.

5.9.2. Cuando una dirección no puede ser resuelta mediante una entrada en la memoria asociativa, se busca en la tabla invertida una entrada que contenga el número de página.

5.10. 3.3.9. Ventaja Adicional del Paginado: Las Páginas Compartidas.

5.10.1. Es un ambiente de tiempo compartido.

5.10.2. Uno o más procesos pueden ejecutarlo al mismo tiempo.

5.10.3. Cada proceso tiene sus propios registros y sus datos.

5.11. 3.3.10. Intercambio

5.11.1. Puede ocurrir que el sistema operativo decida que un proceso en memoria salga temporalmente.

5.11.2. Todo esto por que necesita más espacio, para incrementar el número de procesos que comparten la CPU o por que llega un proceso de mayor prioridad.

5.11.3. El lugar donde se volverá a ubicar el proceso descargado depende del tipo de ligazón que haga.

5.11.4. Solo puede cambiar de lugar si tiene binding en el momento de ejecución.

6. 3.5. Trabajos Prácticos

6.1. 3.5.1. Práctica con Linux

6.1.1. 3.5.1.1. Estadística de la Memoria Virtual en Linux

6.1.1.1. El término intercambio se refiere estrictamente a guardar el proceso entero, no una parte, al disco.

6.1.1.1.1. Esta forma de intercambio es rara de encontrar, sino que se usa en combinación con la paginación.

6.1.1.2. Un page-in es un hecho común, normal y no es motivo de preocupación.

6.1.1.2.1. Cuando arranca una aplicación, su imagen se va cargando en memoria haciendo page-in, esto es normal.

6.1.1.3. Pero el page-out puede ser señal de problemas.

6.1.1.3.1. Cuando el núcleo detecta que se está quedando sin memoria intenta liberarla haciendo page-out.

6.1.2. 3.5.1.2. El Archivo /proc/pid/maps

6.1.2.1. Este sistema de archivos no tiene soporte en ningún dispositivo.

6.1.2.2. Su objetivo es poner a disposición del usuario datos del estado del sistema en la forma de archivos.

6.1.2.3. Esta idea no es original de Linux, ya que casi todos los sistemas UNIX la incluyen.

6.1.2.4. En este sistema de archivos se puede acceder a información general sobre características y estadísticas del sistema, así como a información sobre los distintos procesos existentes.

6.1.2.5. La información relacionada con un determinado proceso se encuentra en un directorio que tiene como nombre el propio identificador del proceso.

6.1.2.6. En el directorio correspondiente a un determinado proceso existe numerosa información sobre el mismo.

6.2. 3.5.2. Práctica con Windows

6.2.1. 3.5.2.1. Memoria Virtual en Windows

6.2.1.1. Si bien cada proceso en Windows tiene su propio espacio de memoria privado, el código en modo núcleo del sistema operativo y los manejadores de dispositivos comparten un espacio de direcciones virtuales único.

6.2.1.2. Cada página en la memoria virtual está rotulada con el modo de acceso en el que el procesador debe estar para leer y/o escribir la página.

6.2.2. 3.5.2.2. La Estructura de PE

6.2.2.1. Trashbin es una herramienta para observar dentro de un archivo con estructura PE.

6.2.2.2. Trashbin permite observar dentro de un archivo PE estándar, tal como lo hace dumpbin, pero no puede hacer ciertas cosas que sí puede hacerlas dumpbin.

6.2.3. 3.5.2.3. PhysMem

6.2.3.1. Es un programa de consola para Win32 que abre la sección de memoria física y volcará los contenidos de regiones que le solicite en una interfaz simple de línea de comando.

6.2.3.2. Fue escrito por Mark Russinovich con el fin de demostrar la capacidad de ver la memoria física y de ofrecer la oportunidad de navegar a través de la RAM de la computadora.

6.2.4. 3.5.2.4. CacheSet

6.2.4.1. Es un applet que le permite manipular los parámetros del conjunto de trabajo e la caché de archivos del sistema.

6.2.4.2. Da la capacidad de controlar los tamaños mínimos y máximos del conjunto de trabajo.

6.2.4.3. Permite restablecer el conjunto de trabajo del caché, forzándolo a crecer tanto como sea necesario desde un punto de partida mínimo.

7. VICTOR EMMANUEL PAZ CALDERÓN