Asignacion de Memoria
Asignacion de Memoria
Asignacion de Memoria
SISTEMAS OPERATIVOS
TEMA:
LA ASIGNACION DE MEMORIA
Presentado por:
Docente:
CICLO VII
AÑO 2023
2
INDICE
1.INTRODUCCIÓN...................................................................................................................3
2. FUNDAMENTOS..................................................................................................................3
4. VENTAJAS Y DESVENTAJAS............................................................................................4
5. ALGORITMOS DE ASIGNACIÓN......................................................................................6
8. CONCLUSIONES................................................................................................................11
3
1. INTRODUCCION
2. FUNDAMENTOS
Direcciones de memoria: Cada byte en la memoria tiene una dirección única. Los
programas acceden a la memoria utilizando estas direcciones para almacenar y
recuperar datos.
Espacio de direcciones: Es el rango total de direcciones de memoria disponibles.
Puede variar según la arquitectura de la computadora y el sistema operativo.
Protección de memoria: Los sistemas operativos pueden imponer reglas para proteger
ciertas áreas de la memoria. Por ejemplo, áreas de solo lectura, áreas reservadas para el
kernel, etc.
Solicitudes de memoria: Los programas solicitan memoria al sistema operativo para
almacenar datos. Esto puede hacerse estáticamente (en tiempo de compilación) o
dinámicamente (en tiempo de ejecución).
Gestión de la memoria: Una vez que se asigna memoria, se debe administrar. Esto
implica mantener un registro de qué partes de la memoria están asignadas, cuáles están
libres y cómo se pueden asignar o liberar para diferentes usos.
Fragmentación: La memoria puede fragmentarse, lo que significa que hay espacios
libres dispersos entre bloques asignados. La fragmentación puede ser interna (en un
bloque asignado) o externa (entre bloques asignados).
Algoritmos de asignación: Hay diferentes enfoques para asignar memoria, como el
first-fit (asignar al primer espacio libre que sea suficiente), best-fit (asignar al espacio
libre más cercano al tamaño solicitado), worst-fit (asignar al espacio libre más grande
disponible), entre otros.
Liberación de memoria: Cuando la memoria ya no se necesita, debe liberarse para que
esté disponible para otros usos. La gestión adecuada de la liberación de memoria es
crucial para evitar fugas de memoria.
4
Asignación estática:
Se reserva una cantidad fija de memoria durante la compilación o la ejecución inicial
del programa. Esta asignación no puede cambiarse durante la ejecución del programa.
Asignación dinámica:
Permite asignar y liberar memoria durante la ejecución del programa. Los lenguajes de
programación suelen ofrecer funciones para solicitar memoria en tiempo de ejecución y
liberarla cuando ya no se necesita, como malloc() y free() en C, o new y delete en C++.
Asignación por pilas y colas:
En la asignación por pilas (stack), se utiliza una estructura de datos tipo LIFO (Last In,
First Mut) para asignar y liberar memoria automáticamente, típicamente para variables
locales y llamadas a funciones. Por otro lado, la asignación por colas (heap) permite una
asignación más dinámica y es utilizada para datos de tamaño variable.
Asignación contigua:
Los bloques de memoria se asignan de manera contigua, lo que significa que se
encuentran uno al lado del otro en la memoria. Ejemplos son la asignación estática y la
asignación dinámica en el montón.
Asignación no contigua:
Los bloques de memoria se asignan en ubicaciones dispersas en la memoria. Ejemplos
son las estructuras de datos enlazadas, como listas enlazadas o árboles, donde los
elementos pueden estar ubicados en diferentes partes de la memoria y se accede a ellos
mediante referencias o punteros.
4. VENTAJAS Y DESVENTAJAS:
a) ASIGNACIÓN ESTÁTICA:
Ventajas:
Desventajas:
Ventajas:
Desventajas:
Acceso más lento: El acceso a datos dispersos puede ser más lento debido a la no
contigüidad en la memoria.
Uso de memoria adicional: Se puede utilizar más memoria debido a la necesidad
de referencias o punteros.
5. ALGORITMOS DE ASIGNACIÓN:
Los algoritmos de asignación de memoria son métodos y estrategias utilizadas por los sistemas
operativos para asignar segmentos de memoria a procesos o programas que lo requieren. Estos
algoritmos determinan cómo se asigna y libera la memoria disponible en un sistema informático.
Aquí te explico algunos conceptos:
Existen varios algoritmos utilizados para asignar y liberar memoria en sistemas informáticos.
Método: Busca el bloque de memoria más pequeño que sea suficiente para la solicitud y
lo asigna. Intenta minimizar el desperdicio de espacio.
Ventajas: Puede reducir la fragmentación al utilizar bloques más ajustados a las
necesidades.
Desventajas: Requiere una búsqueda exhaustiva, lo que puede hacerlo menos eficiente.
Método: Asigna el bloque de memoria más grande disponible. Tiende a dejar grandes
huecos libres en la memoria.
Ventajas: Puede reducir la fragmentación externa.
Desventajas: Puede llevar a una utilización menos eficiente de la memoria y aumentar la
fragmentación interna.
Método: Similar al first fit, pero comienza la búsqueda desde el último punto de
asignación en lugar del inicio.
Ventajas: Puede reducir la búsqueda inicial, especialmente si hay bloques contiguos que
se asignan en su mayoría en un área específica.
Desventajas: Puede provocar una fragmentación similar a la del first fit.
a) PROGRAMACIÓN DINÁMICA:
Para crear listas enlazadas, árboles, pilas, colas, entre otros, se necesita asignar y liberar memoria
almacenar datos y código ejecutable. La asignación de memoria es esencial para gestionar estos
acceder rápidamente a ellos. La asignación de memoria se utiliza para gestionar esta memoria
d) APLICACIONES DE SOFTWARE:
9
Los programas y aplicaciones que interactúan con el usuario necesitan asignar memoria para
FRAGMENTACIÓN:
Fragmentación Externa: Se produce cuando hay suficiente espacio total de memoria, pero
está fragmentado en bloques más pequeños, lo que dificulta la asignación de bloques
contiguos.
10
FUGAS DE MEMORIA:
TIEMPO DE BÚSQUEDA:
Algunos algoritmos de asignación de memoria pueden requerir una búsqueda exhaustiva para
encontrar el bloque adecuado, lo que puede ralentizar la asignación de memoria.
En sistemas con asignación de tamaño fijo, puede haber desperdicio de memoria si los bloques
asignados son más grandes de lo necesario.
PROBLEMAS DE ACCESO:
La gestión efectiva de la memoria es crucial para evitar estos problemas, utilizando algoritmos de
asignación apropiados, liberando la memoria de manera adecuada y optimizando el uso de
recursos disponibles en el sistema.
8.CONCLUSIONES:
La asignación de memoria es crucial para el rendimiento del software, con una diversidad de
métodos que impactan la seguridad y eficiencia del sistema. A pesar de los avances tecnológicos,
desafíos persistentes como la fragmentación requieren soluciones innovadoras. Casos exitosos
subrayan la importancia de estrategias efectivas, mientras que la gestión integral de la memoria
es esencial para optimizar recursos y garantizar un funcionamiento robusto del software.