Gestión
de la Memoria Principal y de la Memoria Virtual en los Sistemas
Operativos
Por Olvin Martínez
Estudiante
de la carrera de Ingeniería en Sistemas, de la Universidad Nacional
Autónoma de Honduras
tho96_thebest@hotmail.com
Resumen
El artículo
en cuestión, abordara los resultados obtenidos de una investigación
de manera clara y concisa, respecto a lo que es la Gestión de la
Memoria y su Funcionalidad en los diversos Sistemas Operativos de
sobremesa más comunes de la actualidad (Windows, Mac OS, Ubuntu), y
a la vez de algunos de los Sistemas Operativos utilizados en
dispositivos móviles (Android e IOS).
Dicha
investigación es netamente para enriquecer nuestro conocimiento, de
manera que podamos familiarizarnos en el funcionamiento de los mismos
principios y/o protocolos, pero en diversos entornos, a fin de tener
una mejor visión y comprensión del tema en cuestión.
Abstract
The
article in question will address the results obtained from a research
in a clear and concise way regarding what is Memory Management and
its Functionality in the various operating systems most common today
(Windows, Mac OS, Ubuntu) and the time of some of the Operating
Systems used in mobile devices (Android, IOS)
This
research is purely to enrich our knowledge so that we can familiarize
ourselves with the functioning of the same principles and / or
protocols but in different environments in order to have a better
vision and understanding of the subject in question
Palabras
Claves
Algunas
palabras de carácter primordial para un mayor entendimiento de los
temas que se expondrán a continuación son:
- Artículo Científico, Gestión, Memoria Principal, Memoria Virtual y Firmware.
Sistema Operativo
No es posible empezar a hablar de
gestión de memoria en un sistema operativo sin siquiera saber lo que
es un sistema operativo mismo, por lo cual podemos decir brevemente,
que un sistema operativo es un sistema compuesto de software, que
viene manejar tanto al hardware como al resto de los recursos
software de un computador proveyendo una serie de servicios para el
manejo de los programas del computador mismo; todos los programas
computacionales, excluyendo el firmware (es un software que maneja físicamente un hardware), necesitan de un sistema
operativo para funcionar, de aquí podemos ver lo ampliamente
importante que es un sistema operativo para el manejo y control de
estos dispositivos de sobremesa. (System)
Teniendo en mente esto, hay que
pensar en que los sistemas operativos forman parte de un ciclo
crucial para la creación de tecnologías junto con los recursos
software, el hardware y el usuario mismo. Todos forman parte de una
especie de cadena para la correcta realización todo una infinidad de
diversas operaciones, como el manejo de procesos, archivos de
sistema, internet, seguridad, dispositivos de entrada/salida y por
supuesto, el tema que nos compete, la gestión de memoria.
(System)
Ciclo
de Operaciones (Operaciones)
Gestion de Memoria
Como se definió en el tema anterior,
la gestión de memoria (también conocida como Administración de
Memoria o Manejo de Memoria) representa una de las tantas, pero al
mismo tiempo, mas importantes tareas que se deben realizan en un
dispositivo tecnológico. (Rouse)
Conceptualmente hablando, podemos
definir Gestión de Memoria como el proceso de control y coordinación
de la memoria en un dispositivo tecnológico (para efectos
posteriores, nos centraremos en computadoras) mediante la asignación
de porciones llamadas “bloques” a la ejecución de varios
programas para la optimización general de la ejecución del sistema.
El concepto de gestión de memoria es comúnmente asociado a dos
tipos de memoria en específico, siendo estas la Memoria Principal y
la Memoria Virtual (también conocida como Memoria Secundaria).
(Rouse)
Memoria Principal
La memoria principal (también
llamada memoria interna), es la única memoria con acceso directo al
CPU, el cual están continuamente leyendo todo tipo de instrucciones
que se encuentran dentro de ahí almacenadas, y ejecutándolas al
mismo tiempo. Cualquier información previamente activa suele también
ser almacenada ahí de manera uniforme.
(Storage)

Estructura
de Memoria Principal (GAndreu)
Memoria Virtual
La memoria virtual (conocida también
como memoria secundaria o memoria auxiliar), a diferencia de la
memoria principal, tiene como principal característica distintiva,
el hecho de que esta, no puede acceder directamente al CPU. La
computadora en cambio, hace uso de dispositivos de entrada y salida
para acceder a este tipo de memoria, para así poder guardar y
transferir la información deseada, mediante el uso de un área
intermedia (región física del almacenamiento de una memoria,
utilizado para guardar información temporalmente, mientras esta es
movida de un lugar a otro) en la memoria principal.
(Storage S. )

Estructura
de Memoria Virtual (Kapnoc)
Sin embargo el manejo o gestión de
memoria reside no solo en el sistema operativo, sino también en el
hardware y en los diversos programas y aplicaciones software, de aquí
la anteriormente mencionada característica de la cadena crucial para
la realización de las operaciones, ya que todos trabajan de manera
simultánea en esta operación.
Gestión de Memoria en el Sistema Operativo (Sistemas de Sobremesa)
Moviéndonos dentro del Sistema
Operativo, la gestión de memoria implica la asignación (y constante
reasignación) de bloques de memoria específicos para programas
individuales a medida que las demandas del Usuario (ente del ciclo
antes mencionado) puedan ir cambiando con el paso del tiempo.
(DEVR)
- Gestión de Memoria en Windows
La
gestión de memoria en Windows es de memoria virtual con paginación
(se encarga del intercambio de información entre nuestra memoria y
el disco duro) y conjunto de trabajo (Working Set).
Cuando se crea un proceso el tamaño máximo es de 2GB, este espacio
está dividido en páginas de tamaño fijo y poseen uno de los
siguientes estados: (DEVR)
- Disponible:
Cuando hay
espacio disponible en la memoria, el gestor de memoria virtual
permite que los conjuntos residentes de los procesos activos
crezcan. Entonces se trae una nueva página a la memoria sin
expulsar ninguna. (DEVR)
- Reservada:
Cuando la
memoria empieza a escasear, el gestor de memoria virtual mueve las
páginas que se han utilizado hace más tiempo de cada uno de
los procesos hacia swap, liberando así memoria principal.
(DEVR)
- Asignada:
Existen
algunas similitudes en cuanto a la gestión de memoria en
Windows y Linux pero cuando es necesario liberar memoria Windows
lo hace una vez por segundo a diferencia en Linux que lo hace
solo cuando es necesario, esto hace de Linux más eficiente. (DEVR)
Gestión
de Memoria en Windows (Coito)
- Gestión de Memoria en Ubuntu (Linux)
Uno
de los primeras "restricciones" que los nuevos usuarios de
Linux enfrentan es el dilema con respecto a la utilización de la
memoria por Linux. En realidad no es lo que se piensa. "Linux
solo toma prestado memoria no utilizada para el disco de
almacenamiento en caché. Esto hace que parezca que se tiene poca
memoria, pero en realidad todo se encuentra bien.
(ubuntuinterclassroom)
El
requisito mínimo de memoria RAM para la utilización del sistema
operativo Ubuntu 12.04 LTS es de 384 MB. Se destaca que algunos
programas requieren mayor memoria ya que su tarjeta gráfica lo
demanda. Mayor memoria RAM mejor será el desempeño del sistema
operativo el cual también cuenta con un espacio llamado “swap
space” que se utiliza mayormente para guardar información durante
el modo suspend e hibernate. Si observamos a muchos de los sistemas
de Windows podemos destacar que esa memoria se convierte en memoria
cache. En un sistema operativo Linux, la memoria es utilizada para
crear un cache que utiliza el CPU. Esto es, utilizado para que el
proceso de cache tome más tiempo y el CPU pueda acceder la data en
el disco duro más rápido que la que está localizada en la memoria
principal, así acelera los procesos del sistema
(ubuntuinterclassroom)
El
sistema operativo Linux Ubuntu, utiliza la memoria swap que está en
una partición aparte esta memoria puede ser utilizada por el CPU.
Esta puede utilizar tres tipos de memoria llevando una secuencia
lineal a través de la misma en la cual la memoria se utiliza la
memoria ram y al verse esta utilizada a capacidad pasaría a utilizar
la memoria swap. En el sistema Windows no existe dicha optimación
así que la memoria no se utiliza y se pierde. En el caso en el cual
toda la memoria sea utilizada por la memoria que esté en cache como
última opción la memoria que está destinada en el “swap
partition” será utilizada. Si escribimos el siguiente comando en
el Terminal ( free -m ) para ver cuanta memoria está utilizada. En
esa misma pantalla en la segunda línea podemos ver que aparece
cuanta memoria se utiliza por las aplicaciones. Otro comando que
podemos utilizar el comando top para ver en detalle la memoria/ el
cpu y otros detalles acerca de qué proceso está ejecutándose en la
computadora. Como otra opción podemos utilizar el GUI-based System
Monitor para hacer lo que ya discutimos.
(ubuntuinterclassroom)

Gestión
de Memoria en Ubuntu 1 (ubuntuinterclassroom)
- Gestión de Memoria en Mac OS
La
manera en Mac OS realiza su gestión de memoria puede representar
cierta sorpresa para algunos usuarios, esto se debe a que Apple
(empresa dueña de Mac OS) tiene catalogado el uso de la gestión de
memoria de la siguiente manera:
(Inchauspe)
- Libre:
Se
refiere al tipo de memoria que no está siendo utilizada en el
momento actual.
(Inchauspe)
- Sistema:
Es
la cantidad de memoria que se está usando por parte del sistema.
(Inchauspe)
- Activa:
Es
referente a la cantidad de memoria RAM utilizada recientemente.
(Inchauspe)
- Inactiva:
Cantidad
de memoria que por el momento no está siendo utilizada por el
sistema pero que podría volver a estar disponible para la aplicación
que la ha usado anteriormente. Mac OS reserva esta memoria solo para
las aplicaciones que se han cerrado, de esta forma si volvemos a
abrirlas, como su memoria ya está reservada, se abrirán de manera
más rápida.
(Inchauspe)
- En uso:
Es
la cantidad total de memoria que se encuentra actualmente en uso.
(Inchauspe)
Gestión
de Memoria en Mac OS (Inchauspe)
Gestión de Memoria en el Sistema Operativo (Sistemas Móviles)
La gestión de memoria en sistemas
operativos móviles, es bastante similar, en términos generales, a
la gestión de la misma en los sistemas operativos de sobremesa, a
continuación se detallara el proceso del mismo en los dos sistemas
operativos móviles más importantes del medio actual; Android e IOS.
- Gestión de Memoria en Android
Brevemente
diremos que Android es un sistema operativo basado en Linux y
propiedad de Google. En este sistema, la gestión de memoria es
bastante común; al igual que en Java y NET (plataformas de
desarrollo), Android utiliza el entorno de ejecución y la máquina
virtual, para gestionar la memoria de la aplicación. A diferencia de
cualquiera de estos 2 marcos, el entorno de ejecución de Android
también maneja los tiempos de vida del proceso, mediante métodos
que aseguran la respuesta de la aplicación, deteniendo y matando a
los procesos que obstaculizan la fluidez, y liberando recursos para
las aplicaciones de mayor prioridad.
(Alfonso)
Cada
aplicación Android se ejecuta en un proceso de manera independiente,
dentro de su propia instancia de Dalvik (máquina virtual exclusiva
de los dispositivos Android), renunciando de esta manera, a toda
responsabilidad de la memoria y de la gestión de los procesos.
(Alfonso)
Memoria
de Procesos, Android (Alfonso)
- Gestión de Memoria en IOS
El
sistema operativo móvil de la empresa multinacional Apple Inc. IOS
(IPhone Operating System), fue inicialmente exclusivo g los móviles
IPhone, aunque para la actualidad, también es utilizado para otros
dispositivos portátiles de la empresa Apple Inc. como IPods o IPads;
sistema operativo famoso por su rigurosa restricción a ser
instalado en hardware de terceros (dispositivos de otras empresas),
posee una manera de gestión de memoria bastante peculiar, ya que
inicialmente fue No ARC (Automatic Reference Counting, donde
básicamente teníamos que retener y liberar los objetos), hoy en día
ya es ARC, por lo cual ya no tiene que retener ni liberar objetos y
es Xcode (entorno de desarrollo diseñado por Apple Inc.), quien se
encarga del trabajo de manera automática en tiempo de compilación.
(W3ii)
Actualmente,
según la documentación oficial de Apple Inc. para cuestiones de
gestión de memoria se tiene que:
- Liberar o sobrescribir los datos que todavía están en uso, causa daños a la memoria y por lo general resulta en su aplicación estrellarse, o peor aún, podría terminar dañando los datos del usuario. (W3ii)
- No liberar datos que ya no están en uso provoca pérdidas de memoria, ya que cuando esta al estar asignada pero no utilizada provoca fugas, que hacen que la aplicación en cuestión, utilice mayores cantidades de memoria, que a su vez, pueden provocar un mal funcionamiento dentro del sistema operativo como tal. (W3ii)
Consumo
de memoria en IOS (W3ii)
Gestión de Memoria en Hardware
Específicamente en el Hardware, la
administración de la memoria involucra componentes que almacenan
datos físicamente, como chips de memoria RAM (Memoria de Acceso
Aleatorio), memoria cache y todo tipo de unidades de almacenamiento
solido flash como lo puede ser un disco duro.
(Management)
Gestión
de Memoria en Hardware (Salina)
Gestión de Memoria en Software
Por último, en la parte de las
Aplicaciones Software, la gestión de memoria garantiza la
disponibilidad de memoria adecuada para los objetos y las estructuras
de datos de cada programa que se encuentren en ejecución en
cualquier momento; combina 2 tareas relacionadas que son la
asignación (cuando el programa necesita un bloque de memoria, una
parte del administrador de memoria llamado “allocator” es el
encargado de asignar ese bloque de programa) y el reciclaje (cuando
un programa necesita la información previamente asignada en los
bloques de memoria, estos bloques vuelven a ser reasignados para
estar habilitados). (Management)

Gestión
de Memoria en Software (Memory)
CONCLUSION
Después de tanta búsqueda y
análisis, he logrado llegar a la conclusión de que en todos los
Sistemas Operativos, tanto Móviles como de Sobremesa, los conceptos
y métodos con los que se Gestiona las Memorias (Principal y Virtual)
son bastante similares, debido en gran parte, a que lógicamente,
cada empresa en el ámbito que sea, buscara la optimización de
cualquiera de sus procesos, de modo que estos ofrezcan mayores
beneficios a sus usuarios, (que en este particular caso somos
nosotros, ya que somos nosotros precisamente, quienes adquirimos sus
Sistemas Operativos) para obtener ellos mayores beneficios. Está
claro que si hubiera un método claramente superior a otro, este
sería imitado a modo de mejorarlo, por lo cual, si bien es cierto,
aunque hayan pequeñas diferencias, como ya mencione al principio, al
final terminan siendo bastantes similares.
A la larga, esta es una
característica que no determinara para alguien, el adquirir o no un
sistema en específico, sino más bien otras características que
sean más fuertemente diferenciadas, de manera que el que escojamos,
se adapte más a nuestras necesidades.
AGRADECIMIENTOS
Quiero comenzar agradeciendo a mis
padres, ya que fueron ellos quienes me han dado la oportunidad de
estar cursando mis estudios universitarios, por lo cual sin ellos,
evidentemente no hubiera logrado esto. También una mención especial
para el Catedrático que imparte mi clase de Sistemas Operativos 2,
ya que él se tomó la molestia de hacer las correcciones debidas a
mi investigación, a manera de poder editarlo y así perfeccionarlo
lo máximo posible. De igual manera, y aunque parezca un tanto
inútil, no está demás agradecer a todos y cada uno de los autores
de las distintas páginas, articulo e imágenes que utilice para
nutrir esta investigación.
Encarecidamente, gracias a todos
ustedes.
.
ReferencIAS
- Alfonso. (s.f.). Sozpic. Obtenido de https://www.sozpic.com/gestion-de-memoria-en-android/
- Coito, E. (s.f.). SlidePlayer. Obtenido de http://slideplayer.es/slide/25943/1/images/11/Gesti%C3%B3n+de+Memoria+Virtual.jpg
- DEVR. (s.f.). Sistemas Operativos 1. Obtenido de http://sopes12s.blogspot.com/2012/10/gestion-de-memoria-en-windows-y-linux.html
- GAndreu. (s.f.). LabVirtual. Obtenido de http://labvirtual.webs.upv.es/Applets/GAndreu/Objeto_Fijas_Una_cola/part_fijas_frag_interna.jpg
- Inchauspe, I. A. (s.f.). Crónicas de un informático. Obtenido de https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAzdrWu9tUN_gTjNVprfWcx166_x2uqusK7lY72fMgIC3YG6GbDyuOTBDF2sfn87IR7Hz1bCANBhWSHqSwyIZbppiJZv02eGm7khyYHy6ZcZhEq0fxUG914nuYNUNQ8i_73Zf7qctOYu7-/s1600/Captura+de+pantalla+2013-02-05+a+la(s)+21.37.14.png
- Kapnoc, C. (s.f.). Slide Share. Obtenido de https://image.slidesharecdn.com/memoriavirtual-111111081641-phpapp02/95/memoria-virtual-exposicion-2-728.jpg?cb=1320999473
- Management, M. (s.f.). Wikipedia, The Free Encyclopedia . Obtenido de https://en.wikipedia.org/wiki/Memory_management_(operating_systems)
- Memory, D. (s.f.). SlideShare. Obtenido de https://image.slidesharecdn.com/dma-150319180629-conversion-gate01/95/dynamic-memory-allocationdma-4-638.jpg?cb=1426788547
- Operaciones, C. d. (s.f.). Wikipedia, The Free Encyclopedia. Obtenido de https://upload.wikimedia.org/wikipedia/commons/thumb/d/dc/Operating_system_placement-es.svg/692px-Operating_system_placement-es.svg.png
- Rouse, M. (s.f.). Whatls.com. Obtenido de http://whatis.techtarget.com/definition/memory-management
- Salina. (s.f.). Faculty Salina. Obtenido de http://faculty.salina.k-state.edu/tim/ossg/_images/memory_hierarchy.png
- Storage, P. (s.f.). Wikipedia, The Free Encyclopedia. Obtenido de https://en.wikipedia.org/wiki/Computer_data_storage#Primary_storage
- Storage, S. (s.f.). Wikipedia, The Free Encyclopedia. Obtenido de https://en.wikipedia.org/wiki/Computer_data_storage#Seconday_storage
- System, O. (s.f.). Wikipedia, The Free Encyclopedia. Obtenido de https://en.wikipedia.org/wiki/Operating_system
- ubuntuinterclassroom. (s.f.). Linux Ubuntu 12.04 LTS. Obtenido de https://sites.google.com/site/ubuntuinterclassroom/_/rsrc/1472872519264/manejo-de-ram/Screenshot%20from%202013-04-08%2014%3A23%3A59.png
- W3ii. (s.f.). W3ii. Obtenido de http://www.w3ii.com/es/ios/ios_memory_management.html
