sábado, 23 de noviembre de 2024

Multiprogramación en Memoria Real

Ventajas

Simplicidad: La implementación es directa en comparación con los sistemas con memoria virtual. 

Baja sobrecarga: ya que No se requiere la traducción de direcciones, lo que reduce el tiempo de procesamiento.

Es la memoria principal de un dispositivo 

Es la memoria más rápida a la que la CPU puede acceder



Desventajas

Fragmentación: La memoria puede fragmentarse, lo que genera un uso ineficiente del espacio disponible. 

Limitaciones de Memoria Física: La cantidad de programas que pueden ejecutarse depende estrictamente del tamaño de la memoria principal.
 
Reubicación Manual: Los programas deben ser diseñados considerando las direcciones físicas, lo que dificulta la portabilidad.





Ejemplos de Memorias Reales

RAM (Random Access Memory)
Memoria ROM (Read-Only Memory)
Memoria Caché
VRAM (Video RAM)


Casos de Uso

Ejecución de Procesos del Sistema Operativo
Ejecutar Aplicaciones de Usuario
Almacenamiento Temporal para el CPU
Operaciones de Gráficos y Multimedia
Virtualización
Desarrollo de Software
Edición de Video y Renderizado
                                                               

Multiprogramación en memoria real


Concepto

 Memoria Real en Sistemas Operativos

La memoria real, también conocida como memoria principal o primaria, es esencial en el diseño de sistemas operativos, ya que permite la ejecución y referencia directa de programas y datos. En contraposición, el almacenamiento secundario o auxiliar se encuentra generalmente en discos.

La Ley de Parkinson parafraseada indica que los programas tienden a expandirse para ocupar toda la memoria disponible. Para gestionar esto, el administrador de memoria se encarga de:

  • Registrar las partes de memoria utilizadas y disponibles.
  • Asignar espacio a procesos según necesidad.
  • Liberar memoria de procesos finalizados.
  • La gestión eficaz de la memoria real es crucial para el rendimiento del sistema operativo.








Características principales:

  • Varios programas residen simultáneamente en la memoria principal.
  • Mejora la utilización del CPU y los recursos del sistema.
  • No utiliza memoria virtual o técnicas de paginación.
  • Los programas se ejecutan directamente desde la memoria física.


































ADMINISTRACIÓN DE LA MEMORIA PANORAMA GENERAL 💻💻💻.

 

ADMINISTRACIÓN DE LA MEMORIA PANORAMA GENERAL


Es un aspecto crucial en la informática, especialmente en los sistemas operativos. Se refiere al proceso mediante el cual un sistema operativo maneja la asignación y el uso de la memoria del sistema (RAM) para los programas y datos en ejecución.

Objetivos de la Administración de Memoria

  • Asignación eficiente: Distribuir los recursos de memoria de manera que todos los procesos reciban la memoria que necesitan sin desperdiciar recursos.
  • Aislamiento de procesos: Asegurar que los procesos no interfieran entre sí, garantizando la protección de los datos y la estabilidad del sistema.
  • Optimización del rendimiento: Minimizar la sobrecarga de la administración de la memoria y asegurar que el sistema mantenga un buen rendimiento.
  • Gestión de la fragmentación: Evitar que se queden pequeños bloques de memoria inutilizados, un fenómeno conocido como fragmentación.

Administración De Memoria (ejemplo)

Espacio de direccionamiento

Cada que se requiere el hardware entrega un cojunto de bits (8, 16,32,64) según la arquitectura.

De forma que:

Una arquitectura de 8 bits, puede direccionar 2^8 direcciones (256)

Una de 16 bits = 65536 bytes (64 KB).

Una de 32 bits = 4294967269 bytes ( 4096 MB = 4 GB)

Una de 64 bits puede direccionar hasta 16 exabytes


 Problemas comunes en la administración de la memoria

  • Fragmentación interna y externa:
    • Fragmentación interna: Ocurre cuando se asigna más memoria de la necesaria a un proceso (por ejemplo, en el caso de la asignación contigua de memoria), lo que resulta en un espacio no utilizado dentro de una partición.
    • Fragmentación externa: Ocurre cuando hay suficiente memoria total, pero se encuentra dispersa en fragmentos pequeños, lo que impide asignar bloques contiguos grandes de memoria.
  • Falta de espacio de direcciones (limitación de la memoria física): A veces, los programas necesitan más memoria de la que puede proporcionar la RAM física disponible. La memoria virtual ayuda a mitigar este problema, pero el acceso al disco es más lento que el acceso a la RAM.
  • Conflictos entre procesos: El mal manejo de la memoria puede resultar en que un proceso sobrescriba la memoria de otro, lo que causa errores o fallos en el sistema.

Métodos de gestión de la memoria

·         Alocación estática: No cambia durante la ejecución del proceso.

·         Alocación dinámica: Los procesos pueden solicitar memoria mientras se ejecutan, y esta memoria puede liberarse cuando ya no se necesita.

·         Swapping: Cuando la memoria RAM está llena, algunas partes de un proceso se mueven temporalmente al disco duro (swap space) para liberar espacio en la RAM para otros procesos.

 

Evolución y tendencias actuales

  •        Memoria no volátil (NVM): Dispositivos como la memoria Flash o la memoria de estado sólido (SSD) están comenzando a jugar un papel más importante en la administración de la memoria, ya que permiten una integración más cercana entre la memoria de trabajo y el almacenamiento de largo plazo.                                                                                                                

·         Memoria compartida: En sistemas multiprocesador o multiproceso, los procesos pueden compartir ciertas áreas de memoria, lo que mejora la eficiencia y reduce el uso de la memoria.

·         Administración de memoria en la nube: Con el aumento de los servicios en la nube, los sistemas de administración de memoria deben ser más dinámicos y adaptarse a la naturaleza escalable y distribuida de los entornos de la nube. 

Video Informativo. 




"La informática es una herramienta, no un fin."

 



Manejo de memoria en sistemas monousuario o sin intercambio



Definición:

Este esquema es aún muy frecuente en México y se usa principalmente en sistemas monousuario y monotarea, como son las computadoras personales con DOS. Bajo este esquema, la memoria real es tomada para almacenar el programa que se esté ejecutando en un momento dado, con la visible desventaja de que si se está limitado a la cantidad de RAM disponible únicamente. La organización física bajo este esquema es muy simple: El sistema operativo se ubica en las localidades superiores o inferiores de la memoria, seguido por algunos manejadores de dispositivos ( `drivers' ). Esto deja un espacio contiguo de memoria disponible que es tomado por los programas del usuario, dejando generalmente la ubicación de la pila (` stack' ) al último, con el objetivo de que ésta pueda crecer hasta el máximo posible. Estas diferentes opciones se pueden ver en la figura 4.2. Como es obvio, bajo estos esquemas no se requieren algoritmos sofisticados para asignar la memoria a los diferentes procesos, ya que éstos son ejecutados secuencialmente conforme van terminando.




Características principales de los sistemas monousuario

  1. Monotarea: Solo un proceso ocupa la memoria principal en un momento dado.
  2. Ausencia de intercambio (swapping): No se utilizan mecanismos para mover procesos entre la memoria principal y secundaria.

  3. Espacios de memoria predefinidos: Los programas se cargan en ubicaciones fijas, eliminando la necesidad de una administración dinámica compleja.
  4. Bajo consumo de recursos: Sin la necesidad de gestionar múltiples procesos, estos sistemas suelen tener un bajo consumo de memoria y CPU.

    Ventajas de los sistemas  monousuario o sin intercambio

    • Simplicidad: La implementación del manejo de memoria es más fácil, reduciendo errores y costos.
    • Velocidad: La ausencia de operaciones de swapping o paginación elimina la latencia asociada con estas técnicas.
    • Requisitos mínimos de hardware: No se necesita hardware especializado para la gestión dinámica de la memoria.


Manejo de memoria en sistemas monousuario o sin intercambio

Desventajas

Optimización y problemas asociados con el manejo de memoria en sistemas monousuarios sin intercambio:

Este espacio se centrará en los desafíos y técnicas para optimizar el uso de memoria en un sistema monousuario sin intercambio. También cubrirá los problemas que surgen debido a la falta de intercambio y cómo se gestionan.


1. Problemas de manejo de memoria sin intercambio:
  • Limitaciones de memoria física: Dado que no se puede recurrir al intercambio, si un programa intenta usar más memoria de la que tiene disponible, puede producirse un error o mal funcionamiento.
  • Fragmentación de la memoria: A medida que los programas se cargan y descargan de la memoria, pueden dejar huecos de memoria no contiguos, lo que reduce la eficiencia.
  • Falta de flexibilidad: Sin el intercambio, los sistemas monousuarios tienen una capacidad limitada para ejecutar múltiples procesos grandes al mismo tiempo.
2. Optimización del uso de memoria en sistemas sin intercambio:
  • Algoritmos de asignación de memoria:
    • Primero ajustado (First-fit): Asigna el bloque de memoria más pequeño que se pueda usar.
    • Mejor ajustado (Best-fit): Busca el bloque más pequeño que pueda albergar el programa.
    • Peor ajustado (Worst-fit): Utiliza el bloque más grande disponible, para dejar el resto más fragmentado.
  • Liberación de memoria:
    • Se debe asegurar que los programas liberen memoria cuando ya no la necesiten para evitar que la memoria se quede bloqueada.
  • Compresión de memoria: Algunas veces, se utilizan técnicas para compactar la memoria y reducir la fragmentación.
3. Técnicas de prevención de problemas:
  • Monitoreo de memoria: Es importante vigilar el uso de la memoria para asegurarse de que no se sobrepase la capacidad física.
  • Asignación anticipada de memoria: Algunos sistemas pueden asignar más memoria de la que un programa pueda necesitar en un momento dado para reducir la probabilidad de fallos por falta de memoria.
  • Uso eficiente de la pila y el montón: Técnicas para asegurarse de que la memoria dinámica se maneje de manera eficiente, evitando fugas de memoria.

Casos de Uso o Ejemplos:

En sistemas monousuarios o sin intercambio, la memoria se gestiona de manera eficiente dentro de las limitaciones de la RAM, sin recurrir a la memoria secundaria como el disco para extender la capacidad de memoria, tales como los siguientes casos.

1. Sistemas embebidos (Ej. dispositivos de IoT, sistemas de control)

  • Descripción: Los sistemas embebidos son dispositivos con recursos limitados (memoria, procesamiento, etc.) que están diseñados para realizar tareas específicas. Algunos ejemplos son routers, dispositivos de automatización del hogar, o electrodomésticos inteligentes. Estos dispositivos suelen tener un sistema operativo monousuario y una cantidad limitada de RAM.
  • Manejo de memoria: Dado que la memoria RAM es limitada y no se utiliza intercambio, el sistema operativo del dispositivo debe gestionar eficientemente la memoria disponible. Generalmente, la memoria se asigna de manera estática o mediante técnicas simples de asignación dinámica, evitando el uso intensivo de memoria y optimizando el uso de la RAM disponible para tareas críticas.
  • Desafíos: En estos sistemas, el manejo de memoria es crucial, ya que no pueden depender de la memoria secundaria (disco) y, si la memoria se sobrepasa, puede causar fallos en el funcionamiento del dispositivo.

2. Sistemas operativos antiguos o simples (Ej. MS-DOS)

  • Descripción: MS-DOS es un sistema operativo monousuario que operaba en computadoras personales con recursos limitados (como memoria RAM). Durante su uso, MS-DOS no podía aprovechar técnicas de intercambio (swap) para extender la memoria, por lo que los programas debían ajustarse a la cantidad limitada de RAM disponible.
  • Manejo de memoria: MS-DOS gestionaba la memoria de manera sencilla, usando una asignación estática y dinámicamente. Los programas generalmente se cargaban en la memoria RAM, y la asignación era fija, lo que significaba que los programas que requerían más memoria no podían ejecutarse si excedían la capacidad disponible.
  • Desafíos: La principal limitación era la fragmentación de la memoria, ya que una vez que los programas se cargaban y descargaban, la memoria quedaba fragmentada. Los usuarios debían ser conscientes de las limitaciones de memoria al ejecutar múltiples programas.

3. Aplicaciones de software en computadoras personales de bajo rendimiento (Ej. procesadores antiguos o computadoras con 4 GB de RAM)

  • Descripción: En algunas computadoras de bajo rendimiento, como las que se encuentran con procesadores antiguos o con capacidades de RAM limitadas (por ejemplo, computadoras con 4 GB de RAM o menos), el sistema operativo puede ser monousuario y no utilizar intercambio para extender la memoria.
  • Manejo de memoria: Estos sistemas operativos, como algunas versiones antiguas de Linux o Windows, pueden utilizar técnicas de asignación de memoria básica como el "first-fit" o "best-fit" para gestionar la memoria disponible. También pueden implementar la asignación estática para procesos que no requieren mucha memoria o liberar espacio cuando un proceso finaliza.
  • Desafíos: Estos sistemas son propensos a problemas de sobrecarga de memoria si demasiados programas se ejecutan simultáneamente. La memoria debe ser manejada con cuidado para evitar bloqueos o caídas del sistema.

En todos estos ejemplos, el manejo eficiente de la memoria es crucial para mantener el rendimiento del sistema y evitar errores por falta de memoria, ya que no se utiliza memoria secundaria para intercambiar datos.

Este video al final, nos ofrece una explicación mas didáctica sobre Todo Lo relacionado con los Sistemas Operativos, ¿Que son? ¿Como Funcionan? los Tipos de sistemas operativos y las partes mas importantes que lo conforman.







Administración de la Memoria: Panorama General 💻


1. ¿Qué es la Administración de la memoria?
La administración de la memoria es la regulación mediante la cual un sistema operativo supervisa y alinea la utilización de la memoria primaria (RAM) y la memoria auxiliar (disco duro). Esta administración incluye.

Asignación de  memoria: determine los segmentos de memoria que ocuparán las tareas en ejecución.
Liberación de memoria: recupera memoria de procesos finalizados
Eficiencia: garantice la utilización de la memoria para reducir el desorden y mejorar la salida.

2. Tipos de memoria en los sistemas operativos
Memoria física: La RAM instalada en el sistema. Es más rápida, pero de capacidad limitada.
Memoria virtual: una mejora de la memoria real en el disco de almacenamiento que le permite ejecutar software que necesita más memoria de la que existe físicamente.

3. Estrategias de gestión de la memoria
Existen varias estrategias para el manejo de la memoria, dependiendo de la variante del sistema operativo

Asignación estática: la memoria se asigna de forma fija durante la ejecución del programa


Asignación dinámica: la memoria se asigna y libera de acuerdo con los requisitos del programa en tiempo de ejecución
Paginación: segmenta la memoria en pequeñas secciones denominadas páginas para mejorar la utilización
Segmentación: divide la memoria en segmentos de tamaño variable para una mayor flexibilidad.



4. Importancia de la gestión de la memoria
La gestión eficiente de la memoria es clave para

Mejorar el rendimiento del sistema.
Evitar conflictos entre procesos.
Admite la ejecución de múltiples programas simultáneamente.
Garantizar la estabilidad y seguridad del sistema operativo .


5. Ventajas de la gestión de la memoria

Mayor eficiencia

Permite realizar múltiples tareas al mejorar la RAM y la utilización de la memoria virtual


Flexibilidad

Utilice métodos como la división para manejar software de diferentes dimensiones


Escalabilidad

Admite aplicaciones modernas que requieren grandes cantidades de memoria


Estabilidad del sistema

Previene errores críticos mediante la gestión de recursos entre procesos


6. Desventajas de la gestión de la memoria

Complejidad

Las operaciones complejas exigen algoritmos sofisticados, lo que eleva la complejidad del sistema


Actuación

La dependencia excesiva de la memoria virtual impide el rendimiento, ya que el acceso a la unidad es más lento que la memoria


Fragmentación

La memoria se puede dividir en bloques inutilizables, lo que afecta la eficiencia


Costos de hardware

Requiere dispositivos de almacenamiento rápidos y una capacidad de memoria sustancial para lograr la máxima eficiencia


Comparación entre paginación y segmentación

Segmentación de paginación de apariencia

Tamaño Tamaño fijo de las páginas. Tamaño variable según segmentos.

Fragmentación Fragmentación interna. Fragmentación externa.

Uso ideal para sistemas multitarea. Más flexibilidad en la gestión de datos.

Ejemplo de sistemas Windows con memoria virtual. Sistemas UNIX con programas grandes.

Ejemplo práctico

Caso de memoria virtual en Windows

Un usuario inicia varios programas, como un navegador web, un editor multimedia y un software de edición de texto. Cuando la RAM está completamente ocupada, el sistema operativo reubica los datos a los que se accede con poca frecuencia en el disco de intercambio. Esto permite que el sistema siga funcionando sin encontrar problemas de desbordamiento de memoria.










Multiprogramación en Memoria Real

Ventajas Simplicidad: La implementación es directa en comparación con los sistemas con memoria virtual.  Baja sobrecarga: ya que No se requi...