Gestión de Memoria II 2024: Universidad de Oriente

Summary

This document is a past paper on memory management, focusing on memory management principles, techniques, and associated challenges. It discusses the impact of memory management on overall system performance.

Full Transcript

Universidad de Oriente Núcleo de Monagas Escuela de Ingeniería y Ciencias Aplicadas Departamento de Ingeniería de Sistemas Sistemas de Operaciones (0713643) Gestión de Memoria Profesor:...

Universidad de Oriente Núcleo de Monagas Escuela de Ingeniería y Ciencias Aplicadas Departamento de Ingeniería de Sistemas Sistemas de Operaciones (0713643) Gestión de Memoria Profesor: Bachilleres: Heickel Loreto Cesar Cedeño CI:32108455 Daniel Cambas CI:31373287 Jesús González CI:30894187 Juan Caballero CI:30964209 Luis Pino CI:28139040 Luis Guatarasma CI:31615255 Nelson Leiva CI:30340996 Maturín, 12 de noviembre de 2024 INTRODUCCION La gestión de memoria es un aspecto fundamental en el funcionamiento de los sistemas operativos, ya que se encarga de coordinar y optimizar el uso del recurso más crítico en la computación: la memoria. A medida que las aplicaciones se vuelven más complejas y las demandas de los usuarios aumentan, la eficiencia en la asignación y utilización de la memoria se vuelve crucial para garantizar un rendimiento óptimo del sistema. Este trabajo se propone explorar los principios y técnicas de gestión de memoria, incluyendo la asignación de memoria, la fragmentación interna y externa de la memoria y como minimizar los daños que ocasiona a la optimización de los procesos, la paginación y la segmentación en el uso de memoria virtual junto a los algoritmos necesarios para su correcto uso. Además, se analizarán los desafíos que enfrentan los sistemas operativos en este ámbito, así como las soluciones implementadas para mejorar la eficiencia y minimizar problemas como la fragmentación. A través de este análisis, se busca proporcionar una comprensión integral de cómo la gestión de memoria impacta en el rendimiento general de los sistemas informáticos. 2 Índice INTRODUCCION............................................................................................................... 2 GESTIÓN DE MEMORIA.................................................................................................. 5 OBJETIVOS DE LA GESTIÓN DE MEMORIA............................................................. 6 OBJETIVOS ESPECIFICOS........................................................................................ 7 IMPORTANCIA DE LA GESTION DE MEMORIA....................................................... 7 OPTIMIZACION DEL USO DE RECURSOS............................................................. 7 PREVENCION DE ERRORES.................................................................................... 7 MEJORA DEL RENDIMIENTO DEL SISTEMA........................................................ 8 FACILITA LA MULTITAREA................................................................................... 8 Memoria principal y memoria secundaria............................................................................. 8 espacio de direcciones y su relación con la memoria física................................................... 9 Direcciones lógicas y físicas............................................................................................. 9 Tabla de páginas............................................................................................................. 10 asignación de memoria (particiones fijas y variables)......................................................... 10 Tipos de particiones....................................................................................................... 10 ALGORITMO DE ASIGNACION CONTIGUA................................................................ 11 PRIMER AJUSTE (FIRST FIT)..................................................................................... 11 MEJOR AJUSTE (BEST FIT)........................................................................................ 12 PEOR AJUSTE (WORST FIT)...................................................................................... 12 Fragmentación de memoria................................................................................................ 13 Tipos de fragmentación.................................................................................................. 13 Fragmentación externa............................................................................................... 13 Fragmentación interna................................................................................................ 14 Consecuencias de la fragmentación de memoria................................................................. 14 ¿Cómo prevenir y solucionar la fragmentación de memoria?.............................................. 15 Técnicas para Reducir la Fragmentación de Memoria......................................................... 15 Técnicas de Gestión de Memoria.................................................................................... 15 Técnicas de Programación.............................................................................................. 16 Técnicas de Sistema Operativo....................................................................................... 16 MEMORIA VIRTUAL...................................................................................................... 17 ¿COMO FUNCIONA LA MEMORIA VIRTUAL?............................................................ 17 PAGINACION............................................................................................................... 17 3 SEGMENTACIÓN........................................................................................................ 18 PAGINACIÓN POR DEMANDA.................................................................................. 20 SEGMENTACIÓN PAGINADA................................................................................... 21 ALGORITMOS DE REEMPLAZO DE PAGINAS............................................................ 22 COMO GESTIONAN LA MEMORIA LOS SISTEMAS OPERATIVOS ACTUALES..... 23 Herramientas que se usan para la gestión de memoria..................................................... 24 Problemas de la gestión de memoria actual..................................................................... 25 CONCLUSIÓN.................................................................................................................. 26 REFERENCIAS BIBLIOGRAFICAS................................................................................ 27 4 GESTIÓN DE MEMORIA La memoria es uno de los recursos más valiosos que gestiona el sistema operativo. Uno de los elementos principales que caracterizan un proceso es la memoria que utiliza. Esta está lógicamente separada de la de cualquier otro proceso del sistema (excepto los threads de un mismo proceso que comparten normalmente la mayor parte de la memoria que tienen asignada). Un proceso no puede acceder, al espacio de memoria asignado a otro proceso, lo cual es indispensable para la seguridad y estabilidad del sistema. La memoria principal de un sistema operativo es también conocida como memoria RAM (Random Access Memory), es la parte del computador donde se almacenan temporalmente las aplicaciones de software, el sistema operativo y otra información para que la unidad central de procesamiento (CPU) tenga un acceso directo y rápido cuando se requiera para efectuar las tareas, sin embargo, este tipo de memoria es volátil, es decir, si se apaga el computador toda la información se perderá. Para ello es imprescindible contar con una memoria secundaria que es un tipo de memoria de ordenador que no es accedida directamente por la CPU y que almacena datos de forma permanente, como es el caso de los discos sólidos (HDD, SDD, DVD…) Ambos componentes comprenden un conjunto de características particulares. La memoria principal, posee alta velocidad de acceso, facilita el multitasking efectivo y es usado para la ejecución rápida de aplicaciones, aunque posee un mayor costo por GB y tiene una capacidad limitada, por otro lado, la memoria secundaria tiene una mayor capacidad de almacenamiento, retiene datos incluso sin energía y es más económica en términos de costo por GB, pero tiene una velocidad de acceso más lenta y no es adecuada para la ejecución de aplicaciones, complementándose mutuamente. La funcionalidad de un sistema operativo viene dada por la memoria, para ello se necesita obtener su máxima utilidad, para organizar todos los procesos y programas que se ejecuten, de modo que se aproveche de la mejor manera posible el espacio disponible, esto se conoce como gestión de memoria. La gestión de memoria es una de 5 las tareas más importantes que realiza el Sistema Operativo, buscando siempre el mejor rendimiento, aplicando métodos y operaciones que ayuden a mejorar el uso de los recursos. El sistema se va a encargar, mediante sus esquemas de manejo de memoria en trabajar por medio del procesador que va a ser designado para estas operaciones como memoria virtual. La gestión de memoria realiza un seguimiento de todas y cada una de las ubicaciones de memoria, independientemente de si están asignadas a algún proceso o no. OBJETIVOS DE LA GESTIÓN DE MEMORIA Entre los objetivos fundamentales de la gestión de memoria se encuentra:  Maximizar el uso de la memoria: Buscar que la mayor cantidad posible de la memoria física esté siendo utilizada de manera eficiente, evitando desperdicios de espacio.  Evitar la fragmentación: La fragmentación ocurre cuando la memoria se divide en bloques pequeños y dispersos, dificultando la asignación de grandes bloques contiguos. El objetivo es minimizar este fenómeno.  Proporcionar un entorno de ejecución seguro: Garantizar que los procesos no interfieran entre sí al acceder a la memoria, evitando así conflictos y errores.  Aislamiento de procesos: Cada proceso debe tener la percepción de que dispone de toda la memoria del sistema, aunque en realidad esté compartiendo la memoria con otros procesos.  Facilitar la ejecución de múltiples programas: Permitir que varios programas se ejecuten de forma concurrente, compartiendo la memoria de manera eficiente.  Mejorar el rendimiento del sistema: Una buena gestión de memoria contribuye a reducir los tiempos de acceso a la memoria y, por tanto, a mejorar el rendimiento general del sistema. 6 OBJETIVOS ESPECIFICOS  Asignación eficiente de memoria: Decidir qué porción de memoria se asigna a cada proceso cuando lo solicita.  Liberación de memoria: Recuperar la memoria que ya no está siendo utilizada por los procesos.  Gestión de la memoria virtual: Permitir que los procesos utilicen más memoria de la que físicamente está disponible, utilizando el disco duro como una extensión de la memoria principal.  Protección de la memoria: Impedir que un proceso acceda a áreas de memoria que no le pertenecen IMPORTANCIA DE LA GESTION DE MEMORIA La gestión de memoria es un componente fundamental de cualquier sistema operativo, ya que determina la eficiencia y estabilidad de las aplicaciones que se ejecutan en un equipo. Su importancia radica en los siguientes aspectos: OPTIMIZACION DEL USO DE RECURSOS  Aprovechamiento máximo: Permite que la mayor cantidad posible de memoria física sea utilizada de manera eficiente, evitando desperdicios.  Equilibrio entre procesos: Asigna los recursos de memoria de forma justa entre los diferentes procesos que se ejecutan en el sistema. PREVENCION DE ERRORES  Evita conflictos: Garantiza que los procesos no interfieran entre sí al acceder a la memoria, evitando así errores de segmentación y otros problemas relacionados.  Protección de datos: Ayuda a proteger la integridad de los datos al prevenir accesos no autorizados a áreas de memoria de otros procesos. 7 MEJORA DEL RENDIMIENTO DEL SISTEMA  Reducción de tiempos de acceso: Una buena gestión de memoria puede reducir los tiempos de acceso a la memoria, lo que se traduce en una mayor velocidad de ejecución de las aplicaciones.  Minimización de la fragmentación: La fragmentación de la memoria puede disminuir el rendimiento. La gestión de memoria busca evitarla o minimizarla. FACILITA LA MULTITAREA  Ejecución simultánea: Permite que múltiples programas se ejecuten de forma concurrente, compartiendo la memoria de manera eficiente.  Aislamiento de procesos: Cada proceso tiene la percepción de que dispone de toda la memoria del sistema, aunque en realidad esté compartiendo la memoria con otros procesos. En resumen, la gestión de memoria es esencial para garantizar un funcionamiento estable y eficiente de un sistema operativo. Al optimizar el uso de la memoria, prevenir errores y mejorar el rendimiento, contribuye a una experiencia de usuario más satisfactoria. MEMORIA PRINCIPAL Y MEMORIA SECUNDARIA. La memoria principal, también llamada memoria interna o central, es aquella que almacena datos temporalmente y de forma rápida. La CPU puede acceder directamente a los datos almacenados en la memoria principal. Entre ellas se encuentran la memoria RAM, ROM y CACHÉ.  La Memoria RAM (Random Access Memory – Memoria de Acceso Aleatorio) es un circuito integrado que almacena los programas, datos y resultados ejecutados por la computadora y de forma temporal, pues su contenido se pierde cuando esta se apaga. Se llama de acceso aleatorio – porque se puede acceder a 8 cualquier posición de memoria sin necesidad de seguir un orden. La Memoria RAM puede ser leída y escrita por lo que su contenido puede ser modificado.  La Memoria ROM (Read Only Memory – Memoria de sólo lectura) viene grabada con una serie de programas por el fabricante de hardware y es sólo de lectura, por lo que no puede ser modificada – al menos no muy fácilmente – y tampoco se altera por cortes de corriente. En esta memoria se almacenan los valores correspondientes a las rutinas de arranque del sistema y su configuración.  La Memoria Caché es una memoria auxiliar de alta velocidad, que no es más que una copia de acceso rápido de la memoria principal almacenada en los módulos de RAM. Por otra parte, la Memoria Secundaria (también llamada Periférico de Almacenamiento) es aquella que está compuesta por todos aquellos dispositivos capaces de almacenar datos en dispositivos que pueden ser internos como el disco duro, o extraíble como los discos flexibles (disquetes), CDs, DVDs, etc. ESPACIO DE DIRECCIONES Y SU RELACIÓN CON LA MEMORIA FÍSICA El espacio de direcciones es un rango de direcciones virtuales que el sistema operativo asigna a un programa o usuario para que pueda ejecutar instrucciones y almacenar datos. La relación entre el espacio de direcciones y la memoria física se explica a través de los conceptos de direcciones lógicas y físicas, y de la tabla de páginas: DIRECCIONES LÓGICAS Y FÍSICAS Las direcciones lógicas son generadas por la CPU en referencia a un programa, mientras que las direcciones físicas son las asignadas a las direcciones lógicas correspondientes. El usuario puede ver la dirección lógica de un programa, pero no la física. 9 TABLA DE PÁGINAS El sistema mantiene una tabla de páginas para cada proceso, que es una estructura de datos que traduce las direcciones virtuales en sus direcciones físicas correspondientes. Cada proceso tiene un espacio de direcciones privado, al que no pueden acceder otros procesos a menos que se comparta. De esta forma, cada proceso ve un conjunto diferente de direcciones lineales, y la dirección que utiliza un proceso no guarda relación con la que utiliza otro. La gestión de memoria es la encargada de traducir las direcciones lógicas del espacio de direcciones a direcciones físicas en la memoria física. Esto permite a varios programas compartir la misma memoria física sin interferir entre sí. Ejemplo: Imagina que un programa intenta acceder a la dirección lógica 0x1000. La gestión de memoria puede asignar esa dirección lógica a la dirección física 0x2000 en la RAM. De esta manera, el programa puede acceder a la memoria física de forma transparente, sin tener que preocuparse por las direcciones físicas reales. ASIGNACIÓN DE MEMORIA (PARTICIONES FIJAS Y VARIABLES) La asignación de memoria en particiones fijas y variables se refiere a la división de la memoria en espacios (particiones) para ejecutar procesos. La diferencia entre ambas es que las particiones fijas tienen el mismo tamaño, mientras que las particiones variables pueden ser de distintos tamaños. TIPOS DE PARTICIONES Particiones fijas: estas crean particiones de memorias de tamaños idénticos. Variables: crea particiones de distintos tamaños, lo que crea flexibilidad. En el caso de las particiones variables, el proceso solo recibe el espacio que necesita y el resto se convierte en un nuevo hueco. El estado de la memoria cambia con el tiempo, ya que cuando un proceso finaliza, se libera su memoria y se crea un nuevo 10 hueco. Otra forma de asignación de memoria es la partición dinámica, que asigna particiones de los tamaños requeridos por los programas. En este caso, la descomposición en zonas no se define de forma permanente, sino que se redefine cada vez que un programa termina. ALGORITMO DE ASIGNACION CONTIGUA La asignación contigua es un algoritmo de sistema de archivos simple y rápido que asigna a cada archivo una secuencia contigua de bloques de disco. Esto minimiza la fragmentación de archivos y permite un fácil acceso a los archivos utilizando un solo puntero y una longitud. Sin embargo, la asignación contigua tiene algunos inconvenientes, como desperdiciar espacio en disco debido a la fragmentación interna, requerir la asignación dinámica de bloques de disco y causar fragmentación externa cuando se crean y eliminan archivos. PRIMER AJUSTE (FIRST FIT) La asignación de primer ajuste es una asignación de memoria algoritmo que pasa por una lista de bloques libres de memoria y asigna la tarea al primer bloque lo suficientemente grande como para acomodar la solicitud. Los principales puntos de venta de este algoritmo son la simplicidad y la baja sobrecarga computacional, pero la asignación de primer ajuste a menudo sufre problemas relacionados con la fragmentación. Ejemplo: Si un proceso necesita 10KB de memoria, y hay una partición libre de 15KB, se asigna esa partición. Si la siguiente partición libre fuera de 5KB, no se usará, incluso si se necesita esa memoria. Ventajas: Simple de implementar y rápido. Desventajas: Puede generar fragmentación externa, ya que deja huecos pequeños y dispersos, dificultando la asignación de procesos grandes en el futuro. 11 MEJOR AJUSTE (BEST FIT) La asignación de mejor ajuste es una estrategia de gestión de la memoria que tiene como objetivo minimizar el espacio desperdiciado al asignar bloques de memoria. Cuando un proceso solicita memoria, este algoritmo busca el bloque de memoria más pequeño disponible que sea lo suficientemente grande para acomodar el tamaño solicitado. Al elegir el bloque que más se ajusta, la asignación de mejor ajuste se esfuerza por reducir la fragmentación y maximizar el uso eficiente de la memoria. Ejemplo: Si un proceso necesita 10KB de memoria, y hay particiones libres de 12KB, 15KB y 20KB, se asignará la partición de 12KB, ya que es la más pequeña que cumple el requisito. Ventajas: Minimiza la fragmentación externa a corto plazo, ya que deja la menor cantidad de espacio libre desperdiciado. Desventajas: Puede ser más lento que el primer ajuste, ya que tiene que buscar la partición más pequeña. También puede generar fragmentación interna si la partición asignada es mucho más grande que el proceso. PEOR AJUSTE (WORST FIT) La asignación del peor ajuste es una gestión de la memoria estrategia que utilizan los sistemas operativos para asignar recursos de memoria a los procesos. Implica encontrar y asignar el mayor bloque de memoria disponible al proceso en cuestión. En otras palabras, el peor ajuste algoritmo busca el bloque de memoria que está más alejado en tamaño del tamaño solicitado del proceso. El objetivo del algoritmo de asignación del peor ajuste es maximizar la memoria fragmentación. Mantiene los bloques más grandes disponibles, lo que puede ser útil en situaciones en las que se pueden asignar procesos más grandes en el futuro. Sin embargo, puede resultar en una utilización ineficiente de la memoria, ya que es posible que los bloques más pequeños no se utilicen por completo, lo que lleva a la fragmentación. 12 Ejemplo: Si un proceso necesita 10KB de memoria, y hay particiones libres de 12KB, 15KB y 20KB, se asignará la partición de 20KB. Ventajas: Puede ser más rápido que el mejor ajuste, ya que no necesita buscar la partición más pequeña. Desventajas: Genera la mayor fragmentación externa, ya que deja un hueco muy grande disponible después de la asignación, lo que puede dificultar la asignación de procesos más grandes en el futuro. FRAGMENTACIÓN DE MEMORIA Cuando ejecutas programas en tu computadora, estos ocupan espacios específicos en la memoria. Con el tiempo, a medida que abres y cierras programas, estos espacios pueden quedar fragmentados, es decir, divididos en pequeños bloques libres que no son lo suficientemente grandes como para contener un nuevo programa completo. TIPOS DE FRAGMENTACIÓN FRAGMENTACIÓN EXTERNA Ocurre cuando hay muchos bloques libres entre bloques asignados a procesos, pero estos bloques libres son demasiado pequeños para satisfacer una nueva solicitud de memoria. Causas:  Asignación dinámica de memoria: Cuando los procesos solicitan y liberan memoria de forma variable a lo largo de su ejecución.  Diferentes tamaños de procesos: Procesos de tamaños muy variados pueden dejar espacios libres de diferentes tamaños. Consecuencias:  Pérdida de espacio de memoria disponible. 13  Dificultad para encontrar un bloque contiguo lo suficientemente grande para un nuevo proceso FRAGMENTACIÓN INTERNA Se produce cuando un proceso ocupa un bloque de memoria más grande de lo que realmente necesita, dejando parte de ese bloque sin utilizar. Causas:  Tamaño fijo de los bloques de memoria: Cuando el sistema operativo asigna bloques de memoria de un tamaño fijo, incluso si el proceso necesita menos.  Redondeo hacia arriba: A veces, el sistema operativo redondea hacia arriba el tamaño de memoria solicitado por un proceso para facilitar la gestión, lo que puede generar fragmentación interna. Consecuencias  Pérdida de espacio de memoria dentro de los bloques asignados.  Menor eficiencia en el uso de la memoria. CONSECUENCIAS DE LA FRAGMENTACIÓN DE MEMORIA La fragmentación de memoria puede tener varias consecuencias negativas en el rendimiento del ordenador, producto de errores en la ejecución de ciertos algoritmos, entre estas consecuencias tenemos:  Desempeño más lento: Al tener que buscar fragmentos libres y unirlos para asignar memoria a nuevos procesos, el sistema operativo debe realizar un trabajo adicional, lo que puede ralentizar el sistema.  Pérdida de espacio: Los pequeños fragmentos libres no pueden ser utilizados por procesos más grandes, lo que lleva a una pérdida de espacio de memoria disponible. 14  Inestabilidad del sistema: En casos extremos, la fragmentación severa puede llevar a que el sistema operativo se quede sin memoria disponible, incluso si hay suficiente memoria física en el equipo. ¿CÓMO PREVENIR Y SOLUCIONAR LA FRAGMENTACIÓN DE MEMORIA? Para evitar que una fragmentación de la memoria ocurra, se recomienda realizar las siguientes practicas:  Desfragmentación de disco: Para los sistemas operativos que utilizan discos duros tradicionales, la desfragmentación de disco es una herramienta útil para reorganizar los archivos y reducir la fragmentación.  Memoria virtual: Los sistemas operativos modernos utilizan la memoria virtual para gestionar la memoria de forma más eficiente, lo que ayuda a mitigar los efectos de la fragmentación.  Gestión de memoria avanzada: Los sistemas operativos más recientes incorporan algoritmos de gestión de memoria más sofisticados para optimizar el uso de la memoria y reducir la fragmentación.  Cerrar programas innecesarios: Al cerrar los programas que no estás utilizando, liberas memoria y reduces la probabilidad de fragmentación. TÉCNICAS PARA REDUCIR LA FRAGMENTACIÓN DE MEMORIA La fragmentación de memoria es un problema común en los sistemas operativos que puede afectar significativamente el rendimiento. Afortunadamente, existen diversas técnicas y estrategias para minimizar sus efectos. Algunas de las más comunes, son: TÉCNICAS DE GESTIÓN DE MEMORIA  Algoritmo de asignación “First-fit”: Se asigna el primer bloque libre lo suficientemente grande.  Algoritmo de asignación “Best-fit”: Se asigna el bloque libre más pequeño que sea lo suficientemente grande. 15  Algoritmo de asignación “Worst-fit”: Se asigna el bloque libre más grande.  Algoritmo de asignación “Buddy system”: Divide la memoria en bloques de tamaño potencia de 2 y los subdivide según sea necesario.  Compactación: Reubica los procesos en memoria para agrupar los bloques libres y crear un gran bloque contiguo.  Paginación: Divide la memoria en páginas de tamaño fijo y los procesos en marcos de página.  Segmentación: Divide la memoria en segmentos de tamaño variable y los procesos en segmentos lógicos. TÉCNICAS DE PROGRAMACIÓN  Asignación de memoria dinámica: Utilizar funciones de la biblioteca estándar para solicitar y liberar memoria cuando sea necesario.  Optimización del uso de memoria: Evitar fugas de memoria, utilizar estructuras de datos eficientes y reducir el tamaño de las variables.  Alineación de datos: Alinear los datos en direcciones de memoria que sean múltiplos del tamaño de la palabra para mejorar el rendimiento. TÉCNICAS DE SISTEMA OPERATIVO  Memoria virtual: Permite que los procesos utilicen más memoria de la que físicamente está disponible, utilizando el disco duro como almacenamiento auxiliar.  Swap: Intercambia páginas de memoria entre la memoria principal y el disco duro.  Montón de fragmentación baja (LFH): Una técnica utilizada en algunos sistemas operativos para reducir la fragmentación del montón. 16 MEMORIA VIRTUAL “La Memoria Virtual (o Virtual Memory) es una técnica que se utiliza para darle a los programas la ilusión de que la memoria es más grande de lo que en realidad es. La misma consiste en que los procesos utilicen un conjunto de direcciones diferentes a las del espacio de direcciones físicas. Dicho conjunto recibe el nombre de espacio de direcciones virtuales” (Chimento, J. M. M, s.f, p.12) Por lo tanto, se puede decir que, la memoria virtual es una técnica de gestión de memoria utilizada para ejecutar procesos grandes; generalmente cuando el programa ejecutado excede la capacidad de la memoria física, haciendo uso de una combinación entre la RAM y el espacio de almacenamiento en disco. Es así, que el sistema operativo es capaz de utilizar más memoria física de la que en realidad posee. ¿COMO FUNCIONA LA MEMORIA VIRTUAL? La memoria virtual funciona mediante un archivo de intercambio presente en el disco duro; el cual almacenara información que la memoria física no este usando. De esta manera, al Sistema Operativo cargar un programa que exceda la memoria física disponible, este transferirá parte de la información no relevante, o no utilizada por el momento, al archivo de intercambio. Luego, de ser necesaria la información transferida al archivo de intercambio, esta se cargará y ejecutará en la memoria física. Este archivo de intercambio funcionara dependiendo de si se emplea la paginación o la segmentación. PAGINACION La paginación en la memoria virtual es una técnica que divide en particiones de tamaño fijas, llamadas “frames”, a la memoria física. De la misma forma, se le denomina página a la dirección lógica de la memoria dividida en partes fijas de igual tamaño que los frames. En esta técnica, el paso de instrucciones o procesos entre la memoria principal y el disco se hace en unidad de páginas 17 Figura 1 Proceso de paginación y traducción de la memoria Nota. Adoptado de la Universidad de la Republica de Uruguay, 2016 (https://www.fing.edu.uy/tecnoinf/paysandu/cursos/2do/so/material/2016/teo/8-SO- Teo-AdministracionMemoria.pdf) SEGMENTACIÓN “El espacio de direcciones se divide en segmentos, cada uno de los cuales corresponderá a una rutina (procedimiento, función), un programa o un conjunto de datos (una entidad lógica). Todo aquello que se corresponda con subespacio de direcciones independientes. Cada programa contiene una cierta cantidad de segmentos. Los primeros segmentos se reservan para procedimientos, datos y pila, pertenecientes al programa en ejecución. Los segmentos restantes contienen un archivo por segmento, así que los procesos pueden direccionar todos sus archivos directamente sin tener que abrirlos ni usar primitivas especiales de entrada/salida. Cada archivo puede crecer de forma completamente independiente de los otros, con cada byte direccionado por un par (segmento, desplazamiento). Por otro lado, colocando objetos diferentes en 18 diferentes segmentos, se facilita la compartición de estos objetos entre procesos múltiples” (Universidad de Almería, s.f). Figura 2 Proceso de segmentación y traducción de la memoria Nota. Adoptado de la Universidad de la Republica de Uruguay, 2016 (https://www.fing.edu.uy/tecnoinf/paysandu/cursos/2do/so/material/2016/teo/8-SO- Teo-AdministracionMemoria.pdf) 19 PAGINACIÓN POR DEMANDA La técnica de paginación por demanda se basa en cargar una página en la memoria principal solo cuando esta sea requerida. Debido a ello, mientras se ejecuta un proceso, habrá páginas en la memoria física y otras en el almacenamiento secundario; dicha distinción, con soporte de Hardware, se realiza a través de bits validos e inválidos que determinan si una página se ira a la memoria (bit valido) o, si dicha página no se encuentra en el espacio de direcciones lógicas del proceso (bit invalido), se genera un page fault (Falta de página) Figura 3 Paginación por Demanda Nota. Adoptado de la Universidad Nacional del Sur, 2020, Gustavo C. Diesel (https://cs.uns.edu.ar/~gd/soyd/clasesgus/10-Memoriavirtual.pdf) 20 Ahora, esta técnica puede afectar significativamente el rendimiento del sistema, debido a los tiempos de lectura y traducción de páginas que puede verse aún más ralentizado por las faltas de páginas. Por lo que, al momento de trabajar con ella, la asignación de memoria virtual debe ser, como mucho, uno punto cinco veces más grande que la cantidad de memoria física. SEGMENTACIÓN PAGINADA “Como su propio nombre indica, la segmentación paginada intenta aunar lo mejor de los dos esquemas. La segmentación proporciona soporte directo a las regiones del proceso y la paginación permite un mejor aprovechamiento de la memoria y una base para construir un esquema de memoria virtual. Con esta técnica, un segmento está formado por un conjunto de páginas y, por tanto, no tiene que estar contiguo en memoria. La MMU utiliza una tabla de segmentos, tal que cada entrada de la tabla apunta a una tabla de páginas.” (Universidad de Almería, s.f). Figura 4 Proceso de Segmentación Paginada Nota. Adoptado de ADMINISTRACION DE MEMORIA (https://imipz4.tripod.com/tareas/PAGINACION_SEGMENTACION.pdf) 21 ALGORITMOS DE REEMPLAZO DE PAGINAS Los algoritmos de reemplazo son técnicas utilizadas en sistemas operativos y gestión de memoria para decidir qué páginas (o bloques de datos) deben ser eliminadas de la memoria cuando se necesita espacio para cargar nuevas páginas. Estos algoritmos son fundamentales en la administración de la memoria virtual, donde la capacidad de la memoria física es limitada y se debe gestionar el uso de la memoria de manera eficiente. Existen varios tipos de algoritmos de reemplazo, entre los más comunes se encuentran:  FIFO (First In, First Out): El algoritmo FIFO reemplaza la página que ha estado en memoria por más tiempo. Se basa en una cola, donde la página que entra primero es la que sale primero.  LRU (Least Recently Used): Este algoritmo reemplaza la página que no ha sido utilizada durante el periodo de tiempo más largo. Se basa en el principio de que las páginas que han sido utilizadas recientemente probablemente se utilizarán nuevamente en un futuro cercano.  OPT (Optimal Page Replacement): Este es un algoritmo teórico que reemplaza la página que no será utilizada durante el período más largo en el futuro. Aunque es difícil de implementar en la práctica, sirve como un estándar para evaluar otros algoritmos.  NRU (Not Recently Used): Este algoritmo clasifica las páginas en cuatro categorías basadas en su uso reciente y si han sido modificadas o no, y reemplaza una página de la categoría menos reciente.  Clock: Una variante del algoritmo FIFO que utiliza un puntero circular para rastrear las páginas en memoria y permite una selección más eficiente al considerar el uso reciente de las páginas. 22 Cada uno de estos algoritmos tiene sus ventajas y desventajas, y su eficacia puede variar según el patrón de acceso a la memoria de las aplicaciones que se estén ejecutando. La elección del algoritmo adecuado puede influir significativamente en el rendimiento del sistema operativo y la eficiencia en el uso de recursos. COMO GESTIONAN LA MEMORIA LOS SISTEMAS OPERATIVOS ACTUALES La gestión de memoria a nivel del sistema operativo implica la asignación (y reasignación constante) de bloques de memoria específicos a procesos individuales a medida que cambian las demandas de recursos de la CPU. Para adaptarse al proceso de asignación, el sistema operativo mueve procesos continuamente entre la memoria y los dispositivos de almacenamiento (disco duro o SSD), mientras realiza un seguimiento de cada ubicación de memoria y su estado de asignación. El sistema operativo también determina qué procesos obtendrán recursos de memoria y cuándo se asignarán esos recursos. Como parte de esta operación, un sistema operativo puede utilizar el intercambio para dar cabida a más procesos. El intercambio es un enfoque de la gestión de la memoria en el que el sistema operativo intercambia temporalmente un proceso de la memoria principal al almacenamiento secundario para que la memoria esté disponible para otros procesos. Luego, el sistema operativo intercambiará el proceso original de nuevo en la memoria en el momento adecuado. El sistema operativo también es responsable de gestionar los procesos cuando el equipo se queda sin espacio en la memoria física. Cuando esto sucede, el sistema operativo recurre a la memoria virtual, un tipo de pseudomemoria asignada desde una unidad de almacenamiento que se ha configurado para emular la memoria principal del equipo. Si la demanda de memoria supera la capacidad de la memoria física, el sistema operativo puede asignar automáticamente memoria virtual a un proceso como lo haría con la memoria física. Sin embargo, el uso de la memoria virtual puede afectar al 23 rendimiento de las aplicaciones porque el almacenamiento secundario es mucho más lento que la memoria principal de un equipo. HERRAMIENTAS QUE SE USAN PARA LA GESTIÓN DE MEMORIA Monitores de Recursos:  Task Manager (Administrador de Tareas): En Windows, permite ver el uso de memoria por parte de los procesos en ejecución.  Activity Monitor (Monitor de Actividad): En macOS, proporciona información sobre el uso de CPU, memoria, disco y red.  top/htop: En sistemas Linux, estas herramientas de línea de comandos muestran información en tiempo real sobre los procesos y su uso de memoria. Herramientas de Diagnóstico:  Valgrind: Una herramienta de análisis de memoria que ayuda a detectar fugas de memoria, errores de acceso a memoria y otros problemas relacionados con la gestión de memoria en programas escritos en C y C++.  AddressSanitizer: Un detector de errores en tiempo de ejecución para programas en C/C++, que ayuda a identificar accesos a memoria no válidos. Profilers:  gprof: Un perfilador que puede ayudar a identificar funciones que consumen mucha memoria y CPU.  Visual Studio Profiler: En entornos de desarrollo de Microsoft, ayuda a analizar el rendimiento y el uso de memoria de las aplicaciones. 24 PROBLEMAS DE LA GESTIÓN DE MEMORIA ACTUAL Entre los problemas que debe solucionar la gestión de memoria se encuentran:  Reubicación: Como la memoria disponible estará compartida por varios procesos, el programador no puede conocer mientras programa qué área de memoria se asignará al proceso que está programando. Cuando se ejecute el programa, el SO asignará un bloque de memoria libre, que podrá ser diferente en cada ejecución.  Protección: No resulta conveniente que un proceso pueda acceder (para leer y/o modificar) al espacio de memoria asignado a otro proceso. El SO debe garantizar la protección de memoria, de manera que se eviten accesos indebidos accidentales o intencionados.  Compartición: En ocasiones algunos procesos necesitan intercambiar datos. Estos procesos pueden querer compartir un área de memoria a la que ambos tengan acceso. El sistema de gestión de memoria debe permitir en estos casos que los procesos autorizados accedan al bloque de memoria que comparten, de manera similar a como el sistema de ficheros permite a través de los permisos que varios usuarios compartan un fichero.  Organización lógica: Normalmente en un sistema informático la memoria principal está organizada de forma lineal como una secuencia de posiciones de memoria. Del mismo modo la memoria secundaria se puede ver como una secuencia de bloques. Esta organización física no se corresponde con la visión del programador que estructura su programa en diferentes módulos. El sistema gestor de memoria debe permitir organizar lógicamente partes de la memoria para acercarse a la visión del programador. La técnica que más fácilmente satisface esta necesidad es la segmentación.  Organización física: Físicamente la memoria está organizada en dos espacios claramente diferenciados:  Memoria principal rápida, volátil y escasa  Memoria secundaria lenta, persistente y abundante 25 CONCLUSIÓN En conclusión, la gestión de memoria en los sistemas operativos es un componente esencial que garantiza la eficiencia y el rendimiento del sistema. A través de la asignación y el control de la memoria, los sistemas operativos permiten que múltiples procesos se ejecuten de manera simultánea y sin conflictos, maximizando el uso de los recursos disponibles. La comprensión de cómo funciona la gestión de memoria, incluyendo los algoritmos contiguos de asignación, es crucial para abordar problemas como la fragmentación interna y externa, que pueden afectar significativamente el rendimiento del sistema. La introducción de la memoria virtual ha revolucionado la forma en que los sistemas operativos manejan la memoria, permitiendo a los procesos utilizar más memoria de la que físicamente está disponible mediante técnicas como la paginación y la segmentación. Estos métodos no solo optimizan el uso del espacio de direcciones, sino que también facilitan una mejor protección y aislamiento entre procesos. Sin embargo, la implementación de algoritmos de reemplazo de páginas es fundamental para gestionar eficazmente la memoria virtual, ya que determinan qué páginas deben ser eliminadas cuando se requiere espacio adicional. Cabe destacar que, a pesar de los avances en la gestión de memoria, los sistemas operativos actuales enfrentan desafíos significativos, como la creciente demanda de aplicaciones y servicios que requieren un uso intensivo de recursos. Las técnicas actuales pueden presentar problemas como la alta latencia en el acceso a la memoria y el overhead asociado con la gestión de la memoria virtual. Por lo tanto, es vital seguir investigando y desarrollar nuevas estrategias y algoritmos que optimicen aún más la gestión de memoria, mejorando así la eficiencia y el rendimiento global de los sistemas operativos en un entorno cada vez más complejo y exigente. 26 REFERENCIAS BIBLIOGRAFICAS Administración de Memoria. (s/f). Uji.es. Recuperado el 11 de noviembre de 2024, de https://www3.uji.es/~redondo/so/capitulo4_IS11.pdf Aller, Á. (10 de junio de 2020). ¿Cómo funciona la paginación de memoria? Profesional Review. https://www.profesionalreview.com/2020/06/10/como-funciona-la- paginacion-de-memoria/ Alzogaray, J. (2019). memoria principal y secundaria...Ed.team. https://ed.team/comunidad/memoria-principal-y-secundaria Carceler, V. (s.f.). Gestión de la memoria. Plone site. Recuperado el 11 de noviembre de 2024, de https://elpuig.xeill.net/Members/vcarceler/c1/didactica/apuntes/ud3/na9 Chimento, J. M. M. (s.f.). Edu.Ar. Recuperado el 2 de noviembre de 2024, de https://dcc.fceia.unr.edu.ar/sites/default/files/tesinas/53.pdf Distel, G. (2020). Sistemas operativos y distribuidos. Edu.Ar. https://cs.uns.edu.ar/~gd/soyd/clasesgus/10-Memoriavirtual.pdf Ensayo Gestión de Memoria. (s.f.). Scribd. Recuperado el 11 de noviembre de 2024, de https://es.scribd.com/document/544426225/ensayo-gestion-de-memoria Espacio de direcciones virtuales (Administración de memoria). (s/f). Microsoft.com. Recuperado el 11 de noviembre de 2024, de https://learn.microsoft.com/es- es/windows/win32/memory/virtual-address-space Guasp, J. R. (s.f.). Eslabón. Estación para Laboratorios Online. Upv.es. Recuperado el 11 de noviembre de 2024, de https://labvirtual.webs.upv.es/Worst_Fit.htm 27 LinkedIn. (13 de septiembre de 2023). ¿Cómo manejan los algoritmos del sistema de archivos la fragmentación de archivos? Linkedin.com; www.linkedin.com. https://es.linkedin.com/advice/1/how-do-file-system-algorithms-handle- fragmentation?lang=es Lora, D. C. A., & Gómez, D. E. R. (15 de abril de 2013). Administración de memoria. SlideShare. https://es.slideshare.net/toofymen/administracion-de- memoria-18859649 Sheldon, R. (6 de junio de 2022). Memory management. WhatIs; TechTarget. https://www-techtarget-com.translate.goog/whatis/definition/memory- management?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=es&_x_tr_pto=rq Spasojevic, A. (3 de julio de 2023). ¿Qué es la asignación de peor ajuste? phoenixNAP IT Glossary; phoenixNAP. https://phoenixnap.mx/glosario/asignaci%C3%B3n-peor-ajustada Spasojevic, A. (13 de mayo de 2024). ¿Qué es la asignación de mejor ajuste? phoenixNAP IT Glossary; phoenixNAP. https://phoenixnap.mx/glosario/asignaci%C3%B3n-de-mejor-ajuste Tema 17 - Sistemas operativos: gestión de memoria. (2015, marzo 2). Oposinet. https://www.oposinet.com/temario-de-informatica/temario-1- informatica/tema-17-sistemas-operativos-gestin-de-memoria/ Universidad de Almeria. (s.f.). TEMA 3. GESTIÓN DE MEMORIA. Ual.Es. Recuperado el 11 de noviembre de 2024, de https://w3.ual.es/~acorral/DSO/Tema_3.pdf 28 Universidad de Uruguay. (2016). Edu.Uy. https://www.fing.edu.uy/tecnoinf/paysandu/cursos/2do/so/material/2016/teo/8 -SO-Teo-AdministracionMemoria.pdf Villareal, V. (2017). Utp.Ac.Pa. https://ridda2.utp.ac.pa/bitstream/handle/123456789/5074/folleto_sistemas_o perativos.pdf?sequence=3&isAllowed=y Z/OS basic skills. (2023, junio 28). Ibm.com. https://www.ibm.com/docs/en/zos- basic-skills?topic=storage-what-is-address-space 29

Use Quizgecko on...
Browser
Browser