lunes, 31 de octubre de 2011

Manejo de memoria en móviles.

Sistemas sin memoria virtual


Algunos sistemas no tienen el mecanismo para proporcionar memoria virtual completa con paginación bajo demanda, esto es porque no poseen un disco duro. 


Por lo general, podemos decir que hay dos tipos de memoria que nos proporcionan este tipo de sistemas como lo son: la RAM y la memoria flash
  • La RAM tiene el código del sistema operativo. 
  •  La memoria flash se utiliza como memoria operativa y para el guardado permanente. 
Algunas veces, podemos expander la memoria utilizando SD cards, lo cual es solamente para almacenamiento indefinido. 


En este tipo de sistemas, si tenemos paginas pero las paginas no pueden ser cambiados de la memoria y guardarse en almacenamiento externo. Las paginas se sustituyen, pero la pagina que se va sustituir, se descarta.  Solo paginas de código se pueden remplazar ya que estas se respaldan solamente en la memoria flash.   


Tareas de administración de memoria que debemos de considerar como programadores. 


1. Administración del tamaño de aplicación 
El tamaño de la aplicación tiene que ser un diseño pequeño y orientado a objetos. 


2.Administración del montículo 
El montículo que es el espacio para la asignación dinámica de memoria, deben ser gestionado muy bien ya que el es limitado. 


3.Ejecución en el lugar 
La memoria flash es mapeada en el espacio de direcciones virtuales y los programas pueden ser ejecutados desde la memoria flash sin tener que copiarlos en RAM primero. 


4. Cargar de DLLs 
Los DLLs son archivos que tienen código ejecutable y son cargados por un programa del sistema operativo, cargar todos los DLLs cuando la aplicación se carga por primera vez en la memoria esta bien pero cuando cargamos muchos DLLs al inicio tendremos demoras que cuando se carga durante la ejecución, por lo tanto debemos de saber cuando es necesario cargar este tipo de archivos. 


5. Transferencia de la administración de la memoria al hardware 
Si hay MMU (que es la unidad de manejo de memoria) disponible, lo tenemos que utilizar ya que así el rendimiento del sistema es mejor. 


Un ejemplo de este tipo de sistemas, pueden ser, Symbian OS. 


El tamaño de los fames en symbian es de 4KB. 
Se utiliza la estrategia de page table de dos niveles.
El primer nivel es llamado directorio de páginas, esta lo que hace es guardar la memoria y hacer referencia por TTBR que es la translation table base register cuyo objetivo es llevar a recabar la dirección fisica. En el segundo nivel, ayuda a pasar de virtual a fisica la dirección de memoria. 




El objetivo por el cual Symbian OS utiliza una tabla de páginas de dos niveles es como ustedes lo pueden ver, reducir el tiempo de acceso a las tablas y el almacenamiento.










Por otro lado tenemos iOS que para gestionar la memoria de programa, se utiliza esencialmente el mismo sistema de memoria virtual que en Mac OS X. 
En iOS, cada programa todavía tiene su propio espacio de direcciones virtuales, pero a diferencia de Mac OS X, la cantidad de memoria virtual disponible es limitada por la cantidad de memoria fisica disponible. Esto se debe a que iOS no admite la paginación en el disco cuando la memoria se llena. En cambio, el sistema de memoria virtual, simplemente libera de solo lectura las páginas de memoria, como por ejemplo las páginas de códigos, cuando se necesita más espacio. 
Este tipo de páginas siempre se puede volver a cargar en la memoria más adelante si se vuelven a necesitar. 


Referencias


Puedes encontrar mas información acerca de memoria virtual en iOS en este link en donde habla extensamente en como se maneja la memoria en el sistema operativo. 


El texto esta basado en el capitulo 12, en el caso de estudio 3 del libro de Operating System de Tanenbaum. Pueden encontrar ese capítulo en este link o en la pagina 941 si tienen la tercera versión en español.

1 comentario:

  1. Bien. Esta entrada la contabilizo como parte del rubro "Estudios sobre el desempeño de memoria virtual" adentro de NachOS T2 con un punto.

    ResponderEliminar