|
Categorias
|
Gestion de Memoria
Tabla de contenidos Generación de un ejecutable...... 3 Formato de un ejecutable...... 3 Mapa de memoria de un proceso 3 Memoria virtual. 4 Operaciones sobre las regiones de un proceso. 5 Creacion de una region.... 5 Introducción. Este
documento describe la gestión de memoria por parte del sistema operativo dado
que de él depende el mapa de memoria de un proceso durante la vida del mismo.
Como la región de memoria está relacionada con el ejecutable se comenzará
analizando la estructura de un archivo ejecutable. Generación de un ejecutable.Usualmente
la generación de un archivo ejecutable se da a partir de uno o más archivos de
código fuente y está dividida en 2 fases, la primera de compilación, en donde
se genera el código máquina u objeto y luego la etapa de montaje o linkedition
en donde se agrupan los archivos objeto y se resuelven las referencias entre módulos
formando el ejecutable. Además de
las referencias entre módulos pueden existir referencias a otros módulos
denominados bibliotecas. Una biblioteca es un conjunto de módulos referenciados
entre sí. Existen dos formas de referenciar a una biblioteca, una denominada
estática, en donde al hacer la linkedition o montaje el código de la
biblioteca pasa a formar parte del archivo ejecutable y una denominada dinámica
en donde el montaje de la biblioteca se realiza en tiempo de ejecución. En éste
último caso, durante el montaje no se incluye el código de la biblioteca en el
ejecutable sino que se referencia al nombre de la misma. De ésta forma se
reduce el tamaño final del archivo ejecutable y también se hace mucho más
simple su mantenimiento. Formato de un ejecutable.Un archivo
ejecutable está estructurado como una cabecera y un conjunto de sectores. La
cabecera tiene información de control y en general un ejecutable tiene las
siguientes secciones: •Código. •Datos
con valor inicial. •Datos
sin valor inicial. Mapa de memoria de un procesoEl mapa de
memoria no es algo homogéneo, sino que está formado por distintas regiones y
segmentos. Las regiones iniciales se van a formar de acuerdo al formato del
ejecutable. Cada región
es una zona contigua que tiene una dirección de comienzo y un tamaño, además
tiene las siguientes características: •Soporte
de la región, contenido inicial de la región. •Soporte
en archivo •Sin
soporte •Tipo
de uso. •Privada,
el contenido es solo accesible por el proceso que la contiene •Compartida,
el contenido puede ser compartido por varios procesos •Protección. •Lectura. •Escritura. •Ejecución. •Tamaño
fijo o variable. Las
regiones que presenta el mapa de memoria son: •Código.
Región compartida de tamaño fijo de lectura/escritura. •Datos
con valor inicial. Región privada de tamaño fijo de lectura/escritura. •Datos
sin valor inicial. Región privada de tamaño fijo de lectura/escritura. •Pila.
Región privada de lectura/escritura. Se usa para almacenar los registros de
activación de las llamadas a funciones, por lo tanto el tamaño de la misma es
variable, y crecerá cuando se llame a una función y decrecera cuando se
regrese de la misma. •Heap.
Este espacio es el que da soporte al espacio que se puede reservar en tiempo de
ejecución. Por ejemplo en C se puede reservar espacio en tiempo de ejecución
usando la funcion malloc. •Archivos
proyectados. •Memoria
compartida, •Pilas
de threads. Memoria virtual.Los
sistemas operativos modernos organizan la memoria de una forma jerarquica,
entonces la técnica de memoria virtual es la que realiza la transferencia de
información entre la zona principal y la secundaria.
La memoria secundaria está generalmente en un soporte de disco, dado que
se implementa mediante un esquema de paginación o swap. En este
tipo de esquema el mapa de memoria de un proceso se considera dividido en páginas
como también se considera que la memoria principal del sistema está dividida
en zonas del mismo tamaño que se denominan marcos de página. La estructura que
vincula la página con el marco es la tabla de páginas. Ésta tabla de páginas
contiene la siguiente información: •Información
de protección •Información
de página válida •Indicación
de página accedida •Indicación
de página modificada Además de
la tabla de páginas el sistema operativo debe llevar una tabla de marcos de página
que le permite conocer que marcos están libres y cuales no. Cuando un
proceso requiere una página que no esta en memoria, se produce un fallo de página
y el sistema operativo recupera ésta de la memoria secundaria. Si en la memoria
principal no hay marcos disponibles se utiliza un algoritmo denominado algoritmo
de reemplazo el cual selecciona que página de la memoria principal se va a
eliminar para dar lugar a la página nueva. El
algoritmo de reemplazo se puede implementar mediante FIFO o bien por el
algoritmo de segunda oportunidad. En el caso del primer algoritmo se selecciona
la página que lleva más tiempo en memoria principal, si bien es simple no
tiene un buen rendimiento. El segundo en cambio, agrega una modificación en el
algoritmo FIFO para asegurarse de no sacar de memoria principal una página que
se usa mucho. Para ello verifica el bit de referencia a la página más antigua
y si no esta activo reemplaza ésta página y en el otro caso pone a la página
al final de la lista y desactiva el bit de referencia. En el caso que todas las
páginas tengan su bit de referencia activo, entonces se comportaria como un
FIFO puro. Operaciones sobre las regiones de un proceso.Creacion de una region.Cuando se
crea una region, no se le asigna memoria principal, puesto que se cargara por
demanda. Todas las paginas de la region se marcan como no residentes. De esta
forma, el primer acceso causarpa un fallo de pagina. El sistema
operativo actualiza la tabla de regiones para reflejar la existencia de la nueva
y guarda la informacion de las caractersiticas de las paginas de la region
rellando las entradas de la tabla de paginas de acuerdo a las mismas. Algunas de
estas caracteristicas son relavantes a la MMU como por ejemplo la proteccion,
Articulos relacionados:
|
