Unidad de manejo de memoria , Segmentación y tablas de páginas

martes, 30 de noviembre de 2010

Segmentación de memoria

Sistema de gestión de memoria en un sistema operativo
Divide la memoria en segmentos, cada uno de los cuales tiene una longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del programa. Los elementos dentro de un segmento están identificados por su desplazamiento con respecto al inicio del segmento: la primera instrucción del programa, la séptima entrada de la pila, la quinta instrucción de la función Sqrt(), etc. (PONER CITA DE Silberschatz, Galvin - Operating System Concepts 7th Pg. 303)

La MMU no sabe nada sobre las distintas regiones de los procesos. Sólo entiende de páginas. El sistema operativo debe guardar para cada proceso una tabla de regiones que especifiquen qué paginas pertenecen a cada región


Unidad De Manejo De Memoria
La unidad de manejo de memoria (MMU) es parte del procesador.  Sus funciones son:
*Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
*Comprobar que la conversión se puede realizar.  La dirección lógica  podría no tener un dirección física
asociada.  Por ejemplo, la pagina correspondiente a una dirección se puede haber trasladado a una zona de
almacenamiento secundario temporalmente.
Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para
ello.
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.
El objetivo del intercambio es dar cabida a la ejecución de mas 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
mas 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
Espacio De Direcciones
Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos:
Direcciones físicas:  son aquellas que referencian alguna posición en la memoria física.
Direcciones lógicas :  son las direcciones utilizadas por los procesos.  Sufren una serie de
transformaciones , realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas.
Direcciones lineales:  direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado
una transformación dependiente de la arquitectura.
Los programas de usuario siempre tratan con direcciones virtuales ; nunca ven las direcciones físicas reales
Tablas de páginas
Cada página tiene un número que se utiliza como índice en la tabla de páginas, lo que da por resultado el 
número del marco correspondiente a esa página virtual. Si el bit presente / ausente es 0, se provoca un
señalamiento (trap) hacia el sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla de
páginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el
cual se copia sin modificaciones de la dirección virtual de entrada. Juntos forman una dirección física de 15
bits. El registro de salida se coloca entonces en el bus de la memoria como la dirección en la memoria
física.
En teoría, la asociación de las direcciones virtuales con las físicas se efectúa según lo descrito. El número
de página virtual se divide en un número de página virtual (los bits superiores)y un ajuste (los bits inferiores).
El número de página virtual se utiliza como un índice en la tabla de páginas para encontrar la entrada de
esa página virtual. El número de marco (si existe) se determina a partir de la tabla de páginas. El número de
marco se asocia al extremo superior del ajuste y reemplaza al número de página virtual para formar una
dirección física que se puede enviar a la memoria.
La finalidad de la tabla de páginas es asociar las páginas virtuales con los marcos. En términos
matemáticos, la tabla de páginas es una función, cuyo argumento es el número de página virtual y como
resultado el número del marco físico. Mediante el resultado de esta función, se puede reemplazar el campo

POST CORRESPONDIENTE A EL 15 DE NOVIEMBRE "SWAPPING ,PARTICIONES DE MEMORIA,PARTICIONES EQUITATIVAS Y PROPORCIONALES,FRAGMENTACION INTERNA Y EXTERNA Y PAGINACION"

lunes, 15 de noviembre de 2010

SWAPPING Y PARTICIONES DE MEMORIA

SWAPPING: Es el proceso que se realiza el intercambio de paginas desde la memoria virtual a la memoria principal o ram este proceso se utiliza dependiendo la carga de datos u procesos que tenga en memoria mientras mas datos tenga en memoria se realiza una copia de datos en la memoria virtual para desocupar espacio en la memoria principal.

PARTICIONES DE MEMORIA.

Las particiones de memoria van a variar dependiendo el tipo de memoria a utilizar.Existen diferentes tipos de sistemas operativos ,pero dependiendo de esto todos necesitan administra su memoria esto lo hace con diferentes metodos. aqui algunos tipos de particiones de memoria:

 esto tambien se considera Particiones Equitativas y Proporcionales:

Particiones fijas
Particiones dinámicas
Particiones dinámicas reubicables

PARTICIONES FIJAS:El primer intento para posibilitar la multiprogramación fue la creación de las particiones fijas o estáticas, en la memoria principal, una partición para cada tarea. El tamaño de la partición se especificaba al encender el sistema, cada partición podía reconfigurarse al volver encender el sistema o reiniciar el sistema.
Este esquema introdujo un factor esencial, la protección del espacio de memoria para la tarea. Una vez asignada una partición a una tarea, no se permitía que ninguna otra tarea entrara en sus fronteras.
Este esquema de partición es mas flexible que la de usuario único, por que permite que varios programas estén en memoria al mismo tiempo.

PARTICIONES DINÁMICAS:Con las particiones dinámicas, la memoria principal disponible aun se conserva en bloques contiguos, pero a las tareas nada mas se les da memoria que solicitan cuando se cargan para su procesamiento. Aunque es una mejoría significativa en relación con las particiones fijas, no se elimina el problema de las mismas.
Un esquema de particiones dinámicas utiliza toda la memoria al cargar las primeras tareas, pero conforme entran nuevas tareas en el sistema que no son del mismo tamaño de las que acaban de salir de la memoria se acomodan en los espacios disponibles de acuerdo con su prioridad.

PARTICIONES DINÁMICAS RE LOCALIZABLES:Con este esquema de asignación de memoria, el administrador de memoria relocaliza los programas para reunir los bloques vacios y compactarlos, para hacer un bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar.
La compactación no es una tarea sencilla. Primero, todos los programas en memoria se deben relocalizar, de manera que queden contiguos; luego hay que ajustar cada dirección y cada referencia a una dirección en todo programa para tomar en consideración la nueva localización del programa en memoria.


Fragmentacion interna

La fragmentación interna es la pérdida de espacio en disco debido al hecho de que el tamaño de un determinado archivo sea inferior al tamaño del cluster, ya que teóricamente el archivo estaría obligado a ser referenciado como un cluster completo. Los cluster(s) son contiguos de forma que desde el último bit del archivo situado en el cluster "a" hasta el primer bit del archivo situado en el cluster contiguo (es decir "b") queda un espacio sobrante siempre teniendo la condición de que el archivo del cluster "a" fuera más pequeño que el cluster en sí.
Por eso se sugiere no disponer de un gran tamaño de partición en los discos nuevos donde la capacidad es muy importante. Por ejemplo si nuestro clúster es de 18KB (18.432 bytes) por más que un archivo ocupe menos, en nuestro disco ocupara 18KB. Esto sugiere una pérdida de ese espacio que dice utilizar pero no utiliza.
Por eso, en nuestro ejemplo, un archivo de 3KB ocupara en nuestro disco lo mismo que uno de 10KB, o sea 18 KB. Esa pérdida de espacio se denomina fragmentación interna, y no se corrige con el desfragmentador, sino disminuyendo el tamaño de la partición.

Fragmentacionpng.png

Fragmentacion externa.

Este tipo de fragmentación aparece como consecuencia de las distintas políticas de ajuste de bloques que tiene un sistema de ficheros, o al utilizar asignaciones dinámicas de bloques en el caso de la memoria. En el sistema de ficheros, la sucesiva creación y eliminación de ficheros de distintos tamaños puede conducir al aislamiento de los bloques libres de un disco y, dependiendo de la política de ajuste, su no elección para futuros ficheros.

En la memoria del sistema la fragmentación se produce cuando los procesos asignados han ocupado posiciones no contiguas de memoria dejando demasiados bloques libres de pequeño tamaño, en los que no "caben" nuevos procesos.
En sistemas de ficheros la desfragmentación trata de resolver este problema, alineando los bloques de datos contiguos y juntando los bloques libres, produciendo así fragmentos mayores que sí serán elegidos para futuros ficheros. En la memoria principal se soluciona compactando los procesos para que estos ocupen posiciones contiguas y dejar los bloques libres juntos, o también se soluciona con la paginación de memoria.

PAGINACION

En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.
En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.
En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.


POST CORRESPONDIENTE A EL 15 DE OCTUBRE "Espacio de direcciones lógico y físico."

domingo, 10 de octubre de 2010



las direcciones de memoria del tipo fisico son las que referencian algun espacio de memoria del tipo fisico.como puede ser la memoria total del sistema

las direcciones de memoria del tipo logico son las creadas por y utilizadas por los procesos en el sistema,estas a cambios de la fisicas pueden sufrir una serie de cambios o transaformaciones realizadas por el cpu (MMU) antes de que sean convertidas .






Espacio de direcciones logicos.

cada proceso cargado en la memoria tiene su espacio de memoria  asignado en el sistema
se divide en 2:

de usuarios:
  • especifico de cada usuario
  • diferentes tipo de regiones.
del S.O:

  • comun a todos los procesos.
  • accesible cuando se ejecuta dentro del sistema.





Espacios de direcciones logico 2.




   El MMU.


Existe una unidad de manejo de memoria abreviada MMU(Memory Management unit) que es la encargada de traducir las direcciones de memoria del tipo logica a fisicas.






tambien existes una memoria del tipo swap que son las memorias de intercabio que cumplen la misma funcion que las del tipo fisico con las diferencias que solo se utiliza cuando la memoria fisica esta copada y no da mas cabida a la memoria logica con la diferencia que esta es de un acceso mas lento que las fisica.


otro concepto de gran importancia en esto es la paginacion que se refiere a crear bloques de memoria de tamaños predeterminados en la memoria fisica y logica




  • esto simplifica la gestion del sistema operativo.
  • el espacio minimo va desde los 4 kb hasta 1mb
tambien existen los fallos de paginas que ocurren cuando se intenta acceder a una pagina que no esta en memoria de  tipo fisica,al hacer obtenr una instruccion,al leer los operandos,al escribir los resultadosy las soluciones que se realizan son: interrumpir la ejecución, salvar el estado, solucionar , restaurar
estado, continuar y eliminar instrucción, solucionar, reejecutar.



si quieren mas informacion respecto al tema les dejo un archivo PDF para su degustacion .gracias

link


















Vinculaciones de memoria: Carga dinámica, enlace dinámico, Overlays.

viernes, 1 de octubre de 2010

Carga dinamica
su funcion principal es proteger  la carga en memoria de un modulo hasta que el programa lo llame,como tambien tenemos el "Enlace dinamico"  que es otro caso de carga dinamica , es aque en el cual la biblioteca de codigo se enlazada cuando un determinado programa se ejecuta en posicion contraria a  un enlace estatico que se produce en un tiempo de proceso de compilacion.Este tipo de enlace tiene grandes ventajas , por ejemplo: hace que el programa sea mas liviano y puede evitar las duplicaciones de codigo.

Las bibliotecas de enlace dinámico, o bibliotecas compartidas, suelen encontrarse en directorios específicos del sistema operativo, de forma que, cada vez que un programa necesite usar alguna, el sistema operativo conozca el lugar en el que se encuentra, para así poder enlazarla y realizar correctamente la operacion.
 

Overlays
En cuanto sale la  multiprogramacion los usuarios intentaron introducir grandisimas cantidades de codigo en areas de memoria  pero muy pequenas, auxiliados por llamadas directas al sistema operativo.
Esta técnica consiste en que el programador divide lógicamente un programa muy grande en secciones que puedan almacenarse el las particiones de RAM. Al final de cada sección del programa (o en otros lugares necesarios) elprogramador insertaba una o varias llamadas al sistema con el fin de descargar la sección presente de RAM y cargar otra, que en ese momento residía en disco duro u otro medio de almacenamiento secundario. Aunque esta técnica era eficaz (porque resolvía el problema) no era eficiente (ya que no lo resolvía de la mejor manera). Esta solución requería que elprogramador tuviera un conocimiento muy profundo del equipo de cómputo y de las llamadas al sistema operativo. Otra desventaja era la portabilidad de un sistema a otro: las llamadas cambiaban, los tamaños de particiones también. Resumiendo, con esta técnica se podían ejecutar programas más grandes que las particiones de RAM, donde la división del código corría a cuenta delprogramador y el control a cuenta del sistema operativo.


UNIDAD 3 TEMA DIRECCION DE MEMORIA

miércoles, 15 de septiembre de 2010

La dirección de memoria es un identificador único para una ubicación de la memoria, con las cuales una CPU u otros dispositivos puede almacenar, modificar o recuperar datos de la misma.

En la mayoría de las computadoras, cada dirección de memoria apunta a un solo byte de almacenamiento (el byte es la unidad de memoria mínima a la que se puede acceder), lo que es llamado direccionamiento por bytes. Algunos microprocesadores son diseñados para direccionamiento por palabras, en estos casos, las unidades de almacenamiento mínimas son más grandes que un byte.

Una dirección de memoria absoluta (explícita o específica), indica con precisión la ubicación en memoria sin el uso de ninguna referencia intermedia.

Tanto la memoria física como la memoria virtual emplean direccionamiento o direcciones de memoria para acceder a sus datos. En la memoria física, la dirección accede a la memoria RAM real (los chips RAM incorporados a la placa madre), y la dirección de memoria virtual hace referencia a un espacio del disco duro que simula memoria RAM (el archivo de paginación).

ejemplo:

Una dirección de memoria guarda 1 byte de datos dónde:
1 bit  = 0 o 1, sí o no
1 byte = 8 bits
1 kilobyte (K o KB)  = 1024 bytes
1 megabyte (MB) = 1024 kilobytes   
porqué 1024 en lugar de 1000 bytes por kilobyte. Porqué las computadoras no cuentan por decenas. Las computadoras cuentan sobre la base de 2 y las potencias del 2. 1024 es el resultado de 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2x 2. Es un sistema bastante conveniente de dimensionar números, para las computadoras.