“Año del Bicentenario, de la consolidación de nuestra Independencia, y de la conmemoración
de las heroicas batallas de Junín y Ayacucho”
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
(Universidad del Perú, Decana de América)
FACULTAD DE INGENIERÍA
ELECTRÓNICA Y ELÉCTRICA
INFORME 7
Gestión de Memoria y Memoria Virtual
CURSO:
Sistemas Operativos
DOCENTE:
Mg. Ing. CIP Sergio Villavicencio Jimenez
INTEGRANTES:
Carhuachin Pezantes Angel Hever
Castillejo Obregon Jhems
Perú - Lima
2024
INTRODUCCIÓN
La gestión de memoria y la implementación de memoria virtual son componentes esenciales
en los sistemas operativos modernos, ya que permiten optimizar el uso de recursos físicos y
maximizar el rendimiento en entornos con gran demanda de procesamiento. La memoria
virtual es una técnica que extiende la capacidad de la memoria física, permitiendo a los
sistemas operar más allá de los límites de la RAM mediante el uso del espacio en disco, lo
cual resulta particularmente útil en aplicaciones que procesan grandes cantidades de datos,
como las de telecomunicaciones.
En este contexto, comprender cómo Windows y Linux Ubuntu administran tanto la memoria
física como la memoria virtual resulta crucial para analizar el desempeño de los sistemas y
optimizar la gestión de recursos en el desarrollo de aplicaciones de alto rendimiento. El uso
de herramientas de monitoreo en ambos sistemas permite estudiar el comportamiento del
consumo de memoria de los procesos y facilita la toma de decisiones para liberar, asignar o
ajustar recursos de acuerdo con las necesidades de cada aplicación. Al aplicar estos
conocimientos en un entorno práctico, los desarrolladores pueden diseñar aplicaciones más
eficientes y adaptadas a sistemas multitarea, aprovechando al máximo las capacidades del
hardware y mejorando el rendimiento global.
OBJETIVOS
● Comprender cómo los sistemas operativos Windows y Linux Ubuntu
gestionan la memoria y asignan memoria virtual a los procesos.
● Analizar el uso de memoria de diferentes aplicaciones y cómo se
administra la memoria virtual.
● Familiarizarse con herramientas de monitoreo y diagnóstico de memoria en
ambos sistemas operativos.
● Aplicar los conocimientos en un contexto relacionado con la
Ingeniería de Telecomunicaciones.
MATERIALES
● Computadora con suficiente capacidad de memoria y almacenamiento.
● Software de virtualización (VirtualBox y/o VMware Workstation
Player).
● ISO de sistemas operativos Linux y Windows instalados en la
máquina virtual.
FUNDAMENTOS TEÓRICOS
1. Gestión de Memoria Física y Virtual:
La gestión de memoria en un sistema operativo es un proceso crucial para la ejecución
eficiente de los programas. La memoria física (RAM) es el espacio que los programas
utilizan para almacenarse temporalmente mientras se ejecutan. Los sistemas
operativos gestionan esta memoria para asegurarse de que cada proceso tenga acceso
a los recursos que necesita sin interferir con otros procesos. La memoria virtual, en
cambio, es una técnica que permite que el sistema operativo utilice el espacio en disco
duro como una extensión de la memoria RAM. Este espacio en disco, también
conocido como archivo de paginación o swap, se utiliza cuando la RAM se llena,
permitiendo que el sistema simule más memoria de la que realmente está disponible.
2. Funcionamiento de la Memoria Virtual:
La memoria virtual trabaja con el concepto de paginación, donde la memoria física se
divide en bloques pequeños llamados páginas. Cada vez que un proceso necesita más
memoria de la que hay disponible en la RAM, el sistema operativo mueve algunas de
estas páginas a la memoria virtual (el disco duro). El proceso de mover datos entre la
RAM y el disco se llama swap, y si este proceso ocurre de manera constante, el
rendimiento puede verse afectado, ya que el acceso a la memoria virtual es mucho
más lento que el acceso a la RAM. Aunque permite ejecutar programas más grandes
de lo que la memoria física permite, un uso excesivo de la memoria virtual puede
hacer que el sistema se vuelva más lento y menos eficiente.
3. Importancia en la Ingeniería de Telecomunicaciones:
En el campo de la Ingeniería de Telecomunicaciones, la gestión eficiente de la
memoria es esencial debido a las altas demandas de procesamiento de datos en tiempo
real. Las aplicaciones como la transmisión de señales, la simulación de redes, el
procesamiento de imágenes o el análisis de grandes volúmenes de datos requieren un
manejo eficaz de la memoria para evitar que el sistema se vea sobrecargado. Los
sistemas operativos deben ser capaces de asignar memoria de manera eficiente para
que los procesos no se vean ralentizados o interrumpidos, lo que es crucial en
aplicaciones que requieren alta disponibilidad y bajo retardo en el procesamiento de
información. Por lo tanto, comprender cómo los sistemas operativos gestionan la
memoria, especialmente la memoria virtual, es esencial para optimizar el rendimiento
de las aplicaciones de telecomunicaciones.
DESARROLLO
Parte 1: Monitoreo de Memoria en Windows
a) Uso del Administrador de Tareas
● Abrir el Administrador de Tareas:
-Presione Ctrl + Shift + Esc para abrir el Administrador de Tareas.
● Ver el uso de memoria:
● Observación:
∙ Identifique los procesos que consumen más memoria.
∙ Pregunta: ¿Qué proceso está consumiendo más memoria en su sistema? ¿Por
qué podría ser esto?
El proceso que está consumiendo más memoria en el sistema es Google Chrome,
con un uso de 922.1 MB. Esto se debe a que Chrome tiene múltiples pestañas y/o
extensiones activas, lo cual incrementa el consumo de memoria. Además,
páginas con contenido multimedia, extensiones pesadas o problemas internos en
Chrome pueden aumentar aún más el uso de recursos.
b) Uso del Monitor de Recursos
● Abrir el Monitor de Recursos:
● Analizar el uso de memoria:
● ∙Actividad:
∙ Identifique procesos con alto consumo de memoria y observe cómo fluctúa su
uso en el tiempo.
∙ Pregunta: ¿Cómo afecta el uso de memoria de un proceso al rendimiento
general del sistema?
El uso excesivo de memoria por parte de un proceso puede ralentizar el sistema,
causar inestabilidad y provocar cierres inesperados de aplicaciones si la RAM se
llena. Esto sucede porque el sistema debe recurrir a la memoria virtual en el
disco, que es mucho más lenta. Para mejorar el rendimiento, es útil cerrar
aplicaciones innecesarias, limpiar la caché, y considerar aumentar la memoria
RAM.
c) Simulación de Consumo de Memoria
● Descargar una herramienta de prueba:
● ∙Ejecutar una aplicación que consuma memoria:
Observación: Monitoree cómo cambia el uso de memoria en el sistema.
⮚ Pregunta:
∙¿Qué sucede cuando la memoria física disponible se agota? ¿Cómo
responde el sistema operativo?
Cuando la memoria física se agota, el sistema usa memoria virtual en el disco,
lo cual es mucho más lento y puede ralentizar el sistema. Si también se llena la
memoria virtual, el sistema podría cerrar aplicaciones o bloquearse para
mantener la estabilidad.
Parte 2: Monitoreo de Memoria en Linux Ubuntu
a) Uso del Comando free
● Abrir la Terminal.
● Ejecutar el comando:
free-h
● Observación:
∙ El comando muestra la memoria total, usada, libre y el uso de la
swap (memoria virtual).
∙ Pregunta: ¿Cuál es la cantidad de memoria libre y utilizada en su
sistema?
En el sistema mostrado en la captura de pantalla la memoria se
distribuye de la siguiente manera
Memoria total 1.9 GiB
Memoria utilizada 777 MiB
Memoria libre 439 MiB
Memoria en buffer cache 750 MiB
Memoria disponible 1,0 GiB
b) Uso del Comando top
● Ejecutar:
. top
● Observación:
∙ Presione M para ordenar por uso de memoria.
⮚ Actividad:
∙ Identifique los procesos que más memoria consumen.
∙ Pregunta: ¿Qué procesos están consumiendo más memoria y por qué?
gnome-shell: Es el componente principal del entorno de escritorio
GNOME en Linux. Maneja la interfaz gráfica de usuario, como la
barra de tareas, el menú de aplicaciones y las animaciones, por lo
que consume una cantidad considerable de memoria.
c) Simulación de Consumo de Memoria
● Crear un programa en C que consuma memoria:
● Compilar y ejecutar:
● Actividad:
Ingrese una cantidad de memoria para asignar (por ejemplo, 500 MB).
Monitoree el uso de memoria utilizando top o free -h en otra terminal.
● Pregunta: ¿Cómo afecta la asignación de memoria al sistema?
¿Qué sucede si intenta asignar más memoria de la disponible?
Cuando se ejecuta el programa y se asigna una cantidad
significativa de memoria, el uso de memoria del sistema
aumenta. Esto se puede observar en herramientas como top o
free -h en otra terminal, donde el consumo de memoria del
proceso mem_consumo se refleja en el total del sistema.
Parte 3: Análisis de Memoria Virtual
a) Swap en Linux Ubuntu
● Verificar el uso de swap:
swapon –show
● Observación:
Si el sistema utiliza swap, se mostrará información sobre el espacio de
intercambio.
● Pregunta: ¿El sistema está utilizando memoria swap? ¿En qué situaciones
se utiliza?
Sí, el sistema está utilizando memoria swap. En la captura de
pantalla, se puede ver que de un total de 945368 KiB de espacio de
swap, se están utilizando 718912 KiB.
b) Memoria Virtual en Windows
⮚ Verificar la configuración de memoria virtual:
∙ Abra el Panel de control > Sistema y seguridad > Sistema.
∙ Haga clic en Configuración avanzada del sistema.
∙ En la pestaña Opciones avanzadas, en la sección Rendimiento, haga clic en
Configuración.
∙ Vaya a la pestaña Opciones avanzadas y en Memoria virtual, haga clic en
Cambiar.
⮚ Observación:
∙ Verifique el tamaño del archivo de paginación (memoria virtual).
∙ Pregunta: ¿Cuál es el tamaño de la memoria virtual configurada? ¿Es
administrada por el sistema o personalizada?
El tamaño de la memoria virtual configurada es de 5537 MB y está
administrada por el sistema. Esto significa que Windows ajusta
automáticamente el tamaño del archivo de paginación según las necesidades
del sistema, lo cual es la configuración recomendada en la mayoría de los
casos.
⮚ Actividad:
∙ No modifique los valores a menos que tenga autorización y entienda las
implicaciones.
Parte 4: Aplicación en Ingeniería de Telecomunicaciones
Las aplicaciones de telecomunicaciones, como servidores de comunicación,
sistemas de procesamiento de señales y gestión de redes, pueden ser intensivas en
el uso de memoria.
a) Caso Práctico: Servidor de Comunicaciones
⮚ Descripción:
∙ Suponga que está ejecutando un servidor que maneja múltiples
conexiones de clientes y procesa datos en tiempo real.
⮚ Actividad:
∙ Simular múltiples conexiones utilizando un programa que cree hilos o
procesos que consuman memoria.
∙ En Linux Ubuntu, puede modificar el programa mem_consumo.c para
crear múltiples procesos.
⮚ Análisis:
∙ Monitoree el uso de memoria mientras se incrementa el número de
conexiones (procesos).
Cada hilo que se crea en el programa asigna una cierta cantidad de memoria
especificada por el usuario. A medida que aumenta el número de hilos, el
uso total de memoria aumenta linealmente.
∙ Pregunta: ¿Cómo afecta el aumento de conexiones al uso de memoria?
¿Qué estrategias podrían implementarse para optimizar el uso de
memoria?
Un mayor número de hilos que asignan grandes bloques de memoria puede
llevar al agotamiento de la memoria RAM, lo que puede causar swapping
(uso de la memoria de intercambio en el disco) y disminuir el rendimiento
del sistema.
Estrategias para poder optimizar pueden ser:
● Implementar un pool de hilos en lugar de crear un número arbitrario
de hilos. Esto ayuda a reutilizar hilos y limitar el número de hilos
simultáneos, reduciendo la carga en la memoria.
● Asegurarse de que la memoria se libere tan pronto como ya no sea
necesaria. En el código, ya haces uso de free(buffer);, lo cual es
importante, pero hay que asegurarse de que no haya pérdidas de
memoria (memory leaks).
b) Estrategias de Optimización
⮚ Liberación de Memoria:
∙ Asegurar que las aplicaciones liberen la memoria que ya no necesitan.
⮚Uso de Memoria Compartida:
∙ Implementar mecanismos para compartir memoria entre procesos cuando sea
posible.
⮚ Pregunta:
∙ ¿Qué técnicas de programación pueden ayudar a reducir el consumo de
memoria en aplicaciones intensivas?
● Elegir estructuras de datos que se adapten al caso de uso específico. Por
ejemplo, usar vector en lugar de list en C++ si se accede secuencialmente a
los datos y no se necesitan inserciones/eliminaciones frecuentes.
● Implementar o usar técnicas de desfragmentación de memoria en sistemas
en los que la memoria se pueda fragmentar después de múltiples
asignaciones y liberaciones.
● Reducir el tamaño de las estructuras de datos mediante tipos de datos más
pequeños (e.g., uint8_t en lugar de int si es suficiente).
Parte 5: Preguntas de laboratorio
⮚ Explique la diferencia entre memoria física y memoria virtual.
La memoria física es la cantidad de RAM instalada en el equipo, utilizada para
almacenar temporalmente los datos y procesos activos. La memoria virtual, por otro
lado, es un espacio en el disco duro que el sistema operativo utiliza como una
extensión de la RAM cuando esta se llena. Esto permite que el sistema ejecute más
programas de los que caben en la memoria física, aunque a un costo en rendimiento,
ya que el acceso al disco es mucho más lento que a la RAM.
⮚ Describa cómo el sistema operativo gestiona la memoria virtual y en qué
situaciones se utiliza.
El sistema operativo gestiona la memoria virtual utilizando un archivo de paginación
o swap. Cuando la RAM se llena, mueve algunos datos inactivos al archivo de
paginación para liberar espacio en la memoria física. Esto se usa en situaciones donde
la RAM no es suficiente para soportar todos los procesos activos, lo que permite que
el sistema continúe operando, aunque a una velocidad reducida.
⮚ Analice el impacto en el rendimiento del sistema cuando se utiliza
excesivamente la memoria virtual (swap).
Cuando se usa excesivamente la memoria virtual, el rendimiento del sistema puede
disminuir drásticamente. Esto ocurre porque el acceso al disco duro es mucho más
lento que el acceso a la RAM. Como resultado, el sistema pasa más tiempo leyendo y
escribiendo en el disco en lugar de ejecutar los procesos, lo cual puede causar una
gran ralentización y hasta bloqueos en el sistema.
⮚ Investigue qué es una fuga de memoria y cómo puede afectar a las
aplicaciones y al sistema.
Una fuga de memoria ocurre cuando una aplicación no libera la memoria que ya no
necesita. Esto provoca que la memoria se ocupe innecesariamente, afectando el
rendimiento y pudiendo hacer que el sistema se quede sin memoria disponible, lo cual
podría llevar al cierre de aplicaciones o a un bloqueo del sistema.
⮚ Proponga buenas prácticas para gestionar la memoria en aplicaciones de
telecomunicaciones intensivas en datos.
En aplicaciones de telecomunicaciones, es fundamental liberar la memoria que ya no
se usa, optimizar el uso de recursos y aprovechar la memoria compartida entre
procesos cuando sea posible. Además, se recomienda monitorear regularmente el
consumo de memoria y manejar las conexiones de datos de manera eficiente para
evitar un uso excesivo de la RAM y optimizar el rendimiento de las aplicaciones en
tiempo real.
CONCLUSIONES
● Se comprendió cómo ambos sistemas operativos gestionan la memoria y asignan
memoria virtual, con Windows ajustando automáticamente el tamaño del archivo de
paginación y Linux usando particiones de intercambio (swap) para optimizar el uso de
recursos.
● Se analizó el consumo de memoria de diversas aplicaciones, destacando cómo la
memoria virtual ayuda a mantener el rendimiento del sistema al manejar la sobrecarga
de la memoria RAM.
● Se adquirió experiencia utilizando herramientas como el Administrador de Tareas en
Windows y `top` o `htop` en Linux, fundamentales para monitorear el uso de la
memoria y detectar posibles problemas.
● Se aplicaron los conocimientos adquiridos en el contexto de telecomunicaciones,
demostrando la importancia de la gestión eficiente de la memoria para asegurar el
rendimiento y la estabilidad en sistemas con alta demanda de datos.
RECOMENDACIONES
● Se recomienda asegurarse de que los estudiantes tengan correctamente configurados
sus sistemas operativos y herramientas necesarias antes de iniciar el laboratorio.
Deben recibir guías claras para la instalación de herramientas como el Administrador
de Tareas en Windows y `htop` en Linux Ubuntu, y tener acceso a documentación o
recursos en línea para resolver posibles dudas sobre la configuración.
● Es importante que los estudiantes trabajen en equipo durante las actividades, lo que
les permitirá compartir experiencias al analizar el uso de memoria en diferentes
aplicaciones y gestionar la memoria virtual. Este enfoque facilitará el intercambio de
ideas y la identificación de mejores prácticas.
● Se sugiere que los estudiantes mantengan un registro detallado de su progreso,
incluyendo los éxitos y obstáculos encontrados al gestionar la memoria. Esto les
ayudará a identificar áreas de mejora y servirá como referencia para resolver futuros
problemas relacionados con la memoria en sistemas operativos.
● Se deben diseñar actividades que permitan a los estudiantes explorar diversas técnicas
de gestión de memoria, como la memoria virtual y la optimización de recursos. Las
actividades deben centrarse en el uso de herramientas de monitoreo y diagnóstico de
memoria, y deben ser aplicadas tanto en clase como en casa, especialmente en el
contexto de la ingeniería de telecomunicaciones.
● Al final del laboratorio, se recomienda organizar una sesión de reflexión donde los
estudiantes puedan compartir sus experiencias y conclusiones. Esta sesión debe
centrarse en los desafíos enfrentados, las soluciones encontradas y cómo aplicar lo
aprendido en proyectos futuros en telecomunicaciones, consolidando así el
conocimiento adquirido.
BIBLIOGRAFÍA
● Bellard, F. (2005). QEMU, A Fast and Portable Dynamic Translator. Proceedings
of the 2005 USENIX Annual Technical Conference.
https://www.usenix.org/legacy/event/usenix05/tech/freenix/full_papers/bellard/bellard
.pdf
● Pizlo, F. (2014). The Design and Implementation of a Microkernel for Multicore
Systems. Proceedings of the ACM SIGPLAN 2014 Conference on Programming
Language Design and Implementation.
https://www.researchgate.net/publication/2568140_Design_and_Implementation_of_t
he_L4_Microkernel_for_Alpha_Multiprocessors
● Tanenbaum, A. S., & Bos, H. (2015). Modern Operating Systems (4th ed.). Pearson.
https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Mo
dern%20Operating%20Systems.pdf