Asignacion de Memoria

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

UNIVERSIDAD NACIONAL

JOSÉ FAUSTINO SANCHEZ CARRIÓN

FACULTAD DE INGENIERIA INDUSTRIAL, SISTEMAS E INFORMATICA

ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA

SISTEMAS OPERATIVOS

TEMA:

LA ASIGNACION DE MEMORIA

Presentado por:

HERNANDEZ GAONA, Iker Jair

NAVARRO MORALES, Angelo Kedwin

ROSALES CHANGANAQUI, Sebastian Eduardo

Docente:

BAZALAR GANOZA ELVI RENEE

CICLO VII

AÑO 2023
2

INDICE

1.INTRODUCCIÓN...................................................................................................................3

2. FUNDAMENTOS..................................................................................................................3

3. TIPOS DE ASIGNACIÓN DE MEMORIA...........................................................................4

4. VENTAJAS Y DESVENTAJAS............................................................................................4

5. ALGORITMOS DE ASIGNACIÓN......................................................................................6

6. CASOS DE USO PRÁCTICO................................................................................................8

7. PROBLEMAS QUE SE PUEDEN PRESENTAR.................................................................9

8. CONCLUSIONES................................................................................................................11
3

1. INTRODUCCION

La asignación de memoria es el proceso de reservar y administrar secciones de la memoria de


una computadora para que los programas y datos puedan ser almacenados y accedidos. Consiste
en asignar porciones de la memoria a diferentes procesos, aplicaciones o componentes del
sistema operativo de manera eficiente.

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

3. TIPOS DE ASIGNACIÓN DE MEMORIA:

 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:

 Rápida: La asignación estática se realiza en tiempo de compilación, lo que la hace


rápida.
5

 Sencilla: Es fácil de implementar y comprender.

Desventajas:

 Inflexible: La cantidad de memoria asignada no puede cambiarse durante la


ejecución.
 Uso ineficiente: Puede desperdiciar memoria si se asigna más de lo necesario.

b) ASIGNACIÓN DINÁMICA (PILA Y MONTÓN):

Ventajas:

 Flexibilidad: Permite asignar memoria según las necesidades durante la ejecución


del programa.
 Eficiencia: La asignación de pila es rápida y eficiente para variables locales.
 Uso eficiente: Puede utilizar la memoria de manera más eficiente al liberarla
cuando ya no se necesita.

Desventajas:

 Limitaciones de tamaño: La pila puede ser limitada en tamaño y estructura.


 Fragmentación: El montón puede sufrir fragmentación, lo que puede llevar a una
gestión menos eficiente de la memoria.
 Mayor complejidad: Requiere una gestión más cuidadosa para evitar fugas de
memoria y problemas de asignación incorrecta.
c) ASIGNACIÓN CONTIGUA VS. NO CONTIGUA:

Ventajas de la Asignación Contigua:

 Acceso rápido: Acceso más rápido a los datos debido a la contigüidad en la


memoria.
 Uso eficiente: Menos espacio adicional utilizado para punteros o referencias.

Desventajas de la Asignación Contigua:

 Fragmentación interna: Puede haber desperdicio de espacio dentro de los bloques


asignados.
6

 Tamaño fijo: La asignación contigua puede requerir un tamaño fijo de bloques, lo


que puede llevar a desperdiciar memoria si los bloques son más grandes de lo
necesario o a la fragmentación si son más pequeños.

Ventajas de la Asignación No Contigua:

 Flexibilidad: Permite una mejor gestión del espacio y puede reducir la


fragmentación.
 Adaptabilidad: Adecuado para estructuras de datos dinámicas que pueden crecer o
reducirse sin la necesidad de mover grandes bloques de datos.

Desventajas de la Asignación No Contigua:

 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:

Objetivo de los Algoritmos de Asignación de Memoria:


 Eficiencia: Buscan utilizar la memoria de manera efectiva para maximizar su
disponibilidad.
 Reducción de la Fragmentación: Intentan minimizar la fragmentación de la memoria,
tanto interna como externa.
 Velocidad: Buscan asignar y liberar memoria de manera rápida y eficiente.
7

Existen varios algoritmos utilizados para asignar y liberar memoria en sistemas informáticos.

Algunos de los algoritmos más comunes son:

1. FIRST FIT (PRIMER AJUSTE):

 Método: Asigna el primer bloque de memoria disponible que sea lo suficientemente


grande como para satisfacer la solicitud.
 Ventajas: Es simple y fácil de implementar.
 Desventajas: Puede llevar a una fragmentación más rápida de la memoria.

2. BEST FIT (MEJOR AJUSTE):

 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.

3. WORST FIT (PEOR AJUSTE):

 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.

4. NEXT FIT (SIGUIENTE AJUSTE):

 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.

5. BUDDY SYSTEM (SISTEMA DE AMIGOS):


8

 Método: Divide la memoria en bloques de tamaño potencia de 2 y asigna bloques según


la solicitud. Los bloques se dividen o se combinan según sea necesario para satisfacer las
solicitudes de asignación y liberación.
 Ventajas: Reduce la fragmentación externa y permite una asignación eficiente de
memoria.
 Desventajas: Puede llevar a cierto desperdicio de memoria debido a la reserva de
bloques de tamaño fijo.

6. CASOS DE USO PRÁCTICO:

La asignación de memoria es fundamental en la programación y el funcionamiento de sistemas

informáticos. Se utiliza en una variedad de casos:

a) PROGRAMACIÓN DINÁMICA:
Para crear listas enlazadas, árboles, pilas, colas, entre otros, se necesita asignar y liberar memoria

dinámicamente según la cantidad de datos que se manejen.

b) APLICACIONES MULTITAREA Y MULTIPROCESO:


En un sistema operativo, cada proceso o tarea requiere su propio espacio de memoria para

almacenar datos y código ejecutable. La asignación de memoria es esencial para gestionar estos

espacios de manera eficiente.

c) SISTEMAS DE ALMACENAMIENTO Y CACHÉ:


En sistemas informáticos, la memoria caché se utiliza para almacenar datos temporalmente para

acceder rápidamente a ellos. La asignación de memoria se utiliza para gestionar esta memoria

caché de manera efectiva.

d) APLICACIONES DE SOFTWARE:
9

Los programas y aplicaciones que interactúan con el usuario necesitan asignar memoria para

almacenar variables, objetos, imágenes, texto, etc.

e) BASES DE DATOS Y SISTEMAS DE ALMACENAMIENTO:


Los sistemas de gestión de bases de datos necesitan asignar y liberar memoria para almacenar y

manipular datos de manera eficiente.

f) SISTEMAS EMBEBIDOS Y DE TIEMPO REAL:


En dispositivos pequeños y sistemas embebidos, la asignación de memoria es crucial para el

funcionamiento eficiente y efectivo del sistema.

g) COMPUTACIÓN DE ALTO RENDIMIENTO:


En aplicaciones de computación de alto rendimiento, como simulaciones científicas o cálculos

complejos, se utiliza la asignación de memoria para gestionar grandes conjuntos de datos.

7. PROBLEMAS QUE SE PUEDEN PRESENTAR:

La asignación de memoria puede presentar varios desafíos y problemas en los sistemas


informáticos:

 FRAGMENTACIÓN:

Fragmentación Interna: Ocurre cuando la memoria asignada es mayor que la necesaria, lo


que resulta en un desperdicio de espacio dentro de los bloques asignados.

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:

Cuando se asigna memoria dinámicamente pero no se libera adecuadamente, se generan fugas de


memoria. Los programas pueden seguir asignando memoria sin liberarla, lo que lleva a una
disminución gradual de la memoria disponible.

 OVERHEAD DEL SISTEMA:

La asignación y liberación frecuente de memoria pueden generar un alto costo computacional,


especialmente si se utilizan algoritmos de gestión ineficientes.

 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.

 TAMAÑO FIJO DE BLOQUES:

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:

Si los datos se dispersan en la memoria (como en asignación no contigua), puede haber


problemas de acceso más lentos debido a la no contigüidad en la memoria.

 FRAGMENTACIÓN DEL MONTÓN (HEAP):

A medida que se asigna y libera memoria dinámicamente en el montón, puede ocurrir


fragmentación del espacio de memoria, lo que dificulta encontrar bloques de memoria contiguos
para satisfacer solicitudes grandes.

 LIMITACIONES DE HARDWARE Y SISTEMA OPERATIVO:

Algunos sistemas operativos o hardware pueden imponer restricciones en la cantidad de memoria


asignable a un proceso o limitaciones en los algoritmos de asignación que se pueden utilizar.
11

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.

También podría gustarte