Pontificia Universidad Católica Madre y
Maestra Facultad de Ciencias de la
Ingeniería.
Departamento de Ingeniería en Ciencias de la
Computación.
CSTI-1810-4815
Tema:
Resumen de los capítulos 7 y 8
Del libro de W Stalling "Operating Systems
Internal and Design Principle"
Presentado por:
Wilson Gomez
1014-5694.
Presentado al profesor:
Felipe Núñez.
Asignatura
Sistemas Operativos.
Fecha de Entrega:
Domingo, 28 de octubre del 2023.
Capítulo 7: Gestión de Memoria
El Capítulo 7 del libro "Operating Systems Internal and Design Principles" de W. Stallings se adentra
en el complejo dominio de la gestión de memoria en sistemas operativos. Este capítulo se fragmenta
en varias secciones, cada una de las cuales aborda un aspecto crucial de este proceso vital.
7.1 - Requisitos de Gestión de Memoria:
La gestión de memoria en un sistema operativo es crucial para optimizar el uso de recursos y
garantizar la ejecución eficiente de los procesos. Para cumplir con estos objetivos, se deben
satisfacer varios requisitos fundamentales:
Reubicación: Implica la capacidad de cargar y ejecutar programas en cualquier ubicación de la
memoria, independientemente de la dirección donde fueron compilados. Esto permite una
utilización más eficaz de la memoria disponible y evita la fragmentación externa.
Protección: Es esencial para garantizar que un proceso no acceda ni modifique la memoria asignada
a otros procesos sin la autorización adecuada. Esto previene conflictos y asegura la integridad de los
datos.
Compartición: Permite que varios procesos accedan y utilicen la misma área de memoria, lo que es
fundamental para la colaboración entre procesos. Facilita la comunicación y la sincronización en
entornos multiusuario.
Organización Lógica: Se refiere a cómo los procesos ven y utilizan la memoria. La gestión de
memoria debe proporcionar una representación lógica y coherente de la disposición de la memoria
para cada proceso.
Organización Física: Se refiere a cómo se distribuye y utiliza la memoria física en el sistema. Esto
implica técnicas como el particionamiento y la paginación para asignar y gestionar la memoria física
de manera eficiente.
7.2 - Particionamiento de la Memoria:
El particionamiento de memoria es una técnica que divide la memoria física en bloques de tamaño
fijo o variable para alojar procesos concurrentes. Se pueden distinguir dos enfoques principales:
Particionamiento Fijo: En este enfoque, la memoria se divide en particiones de tamaño predefinido,
y cada partición se asigna a un proceso. Puede llevar a fragmentación interna si el tamaño de la
partición no coincide exactamente con el tamaño del programa.
Tamaños de Partición: La elección de los tamaños de las particiones es crítica, ya que determina
cuántos procesos pueden ser ejecutados simultáneamente. Demasiado pequeñas y no se pueden
ejecutar programas grandes; demasiado grandes y se desperdicia memoria.
Algoritmo de Ubicación: Define cómo se elige la partición para asignar un proceso. Algoritmos como
"First Fit" asignan el primer espacio disponible que es lo suficientemente grande, mientras que "Best
Fit" busca el espacio más cercano al tamaño del proceso.
Particionamiento Dinámico: En este enfoque, las particiones no tienen un tamaño fijo y pueden
crecer o disminuir según las necesidades de los procesos. Esto permite una utilización más eficiente
de la memoria.
Algoritmo de Reemplazamiento: Define qué proceso debe ser desalojado de la memoria cuando no
hay suficiente espacio para cargar un nuevo proceso. Algoritmos como el de "Least Recently Used"
(LRU) eligen el proceso menos utilizado recientemente.
Sistema Buddy: Es un enfoque específico de particionamiento dinámico que asigna bloques de
memoria que son potencias de 2. Esto facilita la asignación eficiente de memoria para procesos de
diferentes tamaños.
Reubicación: Es importante que el sistema operativo pueda reubicar los programas en memoria
para permitir su ejecución. Esto se refiere a la habilidad de cambiar la ubicación física de un
programa en la memoria sin afectar su funcionamiento.
7.3 - Paginación:
La paginación es una técnica que divide la memoria en bloques de tamaño fijo llamados "páginas".
Esto permite una gestión más flexible y eficiente de la memoria. Cada página es tratada como una
unidad independiente y puede ser asignada o liberada individualmente.
La ventaja principal de la paginación es que reduce la fragmentación interna, ya que los procesos
pueden ocupar múltiples páginas no necesariamente contiguas en la memoria física. Sin embargo, se
requiere una tabla de páginas para mapear direcciones virtuales a direcciones físicas.
7.4 - Segmentación:
La segmentación es otra técnica de gestión de memoria que divide la memoria en segmentos de
tamaño variable. Cada segmento representa una parte lógica o funcional del programa.
La segmentación permite una mayor flexibilidad en la asignación de recursos de memoria, ya que los
segmentos pueden ser de diferentes tamaños y representar distintas partes del programa. Sin
embargo, puede surgir fragmentación externa si no hay suficiente espacio contiguo para alojar un
segmento.
Capítulo 8: Memoria Virtual
En este capítulo se aborda el concepto y la implementación de la Memoria Virtual en sistemas
operativos. A través de diferentes secciones, se profundiza en los elementos clave para gestionar
eficazmente los recursos de memoria en un entorno informático.
8.1 Hardware y Estructuras de Control:
El Capítulo 8 se centra en el concepto de Memoria Virtual, que es una técnica que permite que la
RAM y el almacenamiento secundario (como el disco duro) trabajen juntos para extender la
capacidad de almacenamiento de un sistema.
Proximidad y Memoria Virtual: La Memoria Virtual permite al sistema operativo gestionar la
proximidad de la información, lo que significa que los datos no necesitan estar físicamente cerca en
la memoria para ser accesibles. Esto se logra mediante la Unidad de Gestión de Memoria (MMU),
que traduce direcciones virtuales a direcciones físicas.
Paginación: Esta técnica divide la memoria en bloques de tamaño fijo llamados "páginas", lo que
facilita la gestión y reduce la fragmentación.
Estructura de la Tabla de Páginas: Consiste en una estructura de datos que mapea direcciones
virtuales a direcciones físicas. Esto permite al sistema operativo traducir las solicitudes de memoria.
Tabla de Página Invertida: Es una técnica de paginación donde se mantiene una tabla que mapea
direcciones físicas a direcciones virtuales. Esto es útil en sistemas con grandes cantidades de
memoria física.
Buffer de Traducción Anticipada: Prevé las páginas que probablemente se accederán en el futuro
cercano, para evitar retrasos en la traducción de direcciones.
Tamaño de Página: Determina el tamaño de las unidades en que se divide la memoria física, lo que
puede influir en la eficiencia de la paginación.
Segmentación: Divide la memoria en segmentos de tamaño variable, lo que permite una gestión
más flexible de los recursos.
Paginación y Segmentación Combinadas: Algunos sistemas operativos utilizan ambas técnicas para
aprovechar las ventajas de ambas.
Protección y Compartimiento: Se refiere a las políticas y mecanismos implementados para
garantizar la seguridad y la separación entre procesos.
8.2 Software del Sistema Operativo:
Esta sección detalla cómo el sistema operativo colabora con el hardware para implementar la
Memoria Virtual. Aquí se describen las políticas y técnicas cruciales que determinan el
comportamiento y la eficiencia del sistema en cuanto a la administración de la memoria:
Política de Recuperación: Esta política establece cómo se gestiona el acceso a páginas que
actualmente no se encuentran en la RAM, sino que deben recuperarse del almacenamiento
secundario, como un disco duro o SSD. Define cómo se lleva a cabo este proceso y cuándo se decide
traer una página de vuelta a la RAM.
Política de Ubicación: Determina el lugar donde se colocarán las páginas en la RAM una vez que son
traídas desde el almacenamiento secundario. Esto es importante para optimizar la organización de la
memoria física y asegurarse de que las páginas críticas estén fácilmente accesibles.
Política de Reemplazo: Cuando la RAM está llena y se necesita espacio para cargar una nueva
página, esta política decide cuál de las páginas actualmente en la RAM será reemplazada por la
nueva. Esta decisión se toma utilizando algoritmos que consideran factores como la frecuencia de
acceso a la página y cuánto tiempo ha pasado desde el último acceso.
Bloqueo de Marcos: Esta técnica previene que ciertas páginas sean movidas de la RAM al
almacenamiento secundario. Es importante para asegurar que ciertas partes de la memoria
permanezcan en la RAM, lo cual puede ser crítico para el rendimiento de ciertos procesos.
Algoritmos Básicos: Estos incluyen algoritmos como el "Least Recently Used" (LRU), que determinan
qué página será reemplazada en la RAM cuando se necesita espacio. El LRU reemplaza la página que
no ha sido utilizada por más tiempo.
Buffering de Páginas: Consiste en mantener en la RAM las páginas que han sido accedidas
recientemente para evitar acceder repetidamente al almacenamiento secundario. Esto puede
acelerar la recuperación de datos y mejorar el rendimiento general del sistema.
Gestión de Conjunto Residente: Define el tamaño y el alcance de las páginas que se mantendrán
siempre en la RAM. Esto es esencial para garantizar un rendimiento consistente y evitar la constante
necesidad de acceder al almacenamiento secundario.
Política de Limpieza: Esta política determina cómo se actualizan las páginas en el almacenamiento
secundario. Esto es importante para mantener la integridad de los datos y evitar la pérdida de
información importante.
Control de Carga: Establece cuándo y cómo se cargan las páginas desde el almacenamiento
secundario a la RAM. Esto puede estar influenciado por factores como la demanda actual de
recursos y el nivel de ocupación de la RAM.
Suspensión de Procesos: Esta técnica mueve procesos completos desde la RAM al almacenamiento
secundario cuando no están en ejecución, liberando espacio en la RAM para otros procesos
prioritarios. Esto es crucial para optimizar la asignación de recursos y mejorar el rendimiento global
del sistema.
En conjunto, estas políticas y técnicas forman el núcleo de la gestión de memoria en un sistema
operativo, asegurando un uso eficiente de los recursos disponibles y un rendimiento óptimo del
sistema.
8.3 Gestión de Memoria de UNIX y Solaris:
En la gestión de memoria de UNIX y Solaris, se emplean estrategias específicas para asegurar un uso
eficiente de los recursos disponibles.
Sistema de Paginación: En estos sistemas operativos, la paginación es la técnica principal para
gestionar la memoria. Cada proceso tiene su propia tabla de páginas, lo que significa que el espacio
de direcciones virtuales es independiente del espacio de direcciones de otros procesos. La
paginación permite que se utilice de manera efectiva la memoria física y el almacenamiento
secundario.
Reemplazo de Páginas: A medida que los procesos se ejecutan, algunas páginas pueden necesitar
ser retiradas de la RAM para dar paso a nuevas. El sistema debe determinar qué página es menos
crítica para el rendimiento actual y la reemplaza. Esto puede hacerse utilizando algoritmos de
reemplazo de páginas como LRU (Least Recently Used) o FIFO (First In, First Out).
Asignador de Memoria de Núcleo: Este componente del sistema operativo se encarga de
administrar la asignación de memoria en el núcleo del sistema. Es responsable de reservar y liberar
bloques de memoria para las necesidades internas del sistema operativo. También asegura que los
procesos del sistema operativo tengan el espacio de memoria que necesitan para funcionar
correctamente.
Estas estrategias de gestión de memoria en UNIX y Solaris están diseñadas para optimizar el
rendimiento del sistema y garantizar que los procesos se ejecuten de manera eficiente y sin
interferencias. El sistema de paginación, el reemplazo de páginas y el asignador de memoria de
núcleo son componentes esenciales que trabajan juntos para mantener un equilibrio adecuado
entre la utilización de la RAM y la eficiencia en el acceso a los datos.
8.4 Gestión de Memoria en Linux:
La gestión de memoria en el sistema operativo Linux se basa en una serie de estrategias y técnicas
diseñadas para optimizar el uso de los recursos de memoria.
Memoria Virtual en Linux: Linux implementa la Memoria Virtual mediante el uso de la paginación.
Asocia direcciones virtuales a direcciones físicas, permitiendo que los procesos crean que tienen
acceso a una cantidad de memoria mayor de la que realmente está físicamente disponible. Esto es
esencial para permitir que múltiples procesos se ejecuten simultáneamente.
Direccionamiento de Memoria Virtual: Linux utiliza la MMU (Unidad de Gestión de Memoria) para
traducir direcciones virtuales a direcciones físicas. Esta traducción es crucial para que el sistema
opere eficientemente y para garantizar la protección de la memoria.
Reserva de Página: Linux tiene la capacidad de reservar espacio en la RAM para páginas que se
necesitarán en el futuro. Esto ayuda a mejorar el rendimiento y la eficiencia del sistema al evitar la
necesidad de asignar espacio dinámicamente cuando se requiere.
Algoritmo de Reemplazo de Página: Cuando la RAM está llena y se necesita espacio para cargar una
nueva página, Linux utiliza algoritmos para decidir qué página reemplazar. El algoritmo más
comúnmente usado es el "Least Recently Used" (LRU), que elige la página que no se ha accedido
durante el mayor tiempo.
Reserva de Memoria de Núcleo: El núcleo del sistema operativo necesita su propia área de memoria
para ejecutar operaciones esenciales. Linux asigna y administra esta memoria de manera eficiente
para garantizar el funcionamiento adecuado del sistema operativo.
La combinación de técnicas como la Memoria Virtual, la reserva de páginas y algoritmos de
reemplazo de páginas, junto con la gestión de la memoria en el núcleo, asegura que Linux pueda
utilizar la RAM de manera efectiva, optimizando el rendimiento del sistema y proporcionando una
experiencia fluida a los usuarios y aplicaciones.
8.5 Gestión de Memoria en Windows:
La gestión de memoria en el sistema operativo Windows se basa en estrategias específicas para
optimizar el uso de los recursos disponibles.
Mapa de Direcciones Virtuales en Windows:
En Windows, cada proceso tiene su propio espacio de direcciones virtuales, que puede ser mayor
que la cantidad de memoria física disponible. Esto se logra mediante el uso de la paginación, que
permite a Windows utilizar el almacenamiento secundario (como un disco duro) como extensión de
la memoria física.
El mapa de direcciones virtuales: está dividido en secciones, que incluyen espacio para código
ejecutable, datos, bibliotecas compartidas y espacio reservado para el sistema operativo. Este
diseño permite un uso eficiente de la memoria y garantiza la separación entre los procesos.
Paginación en Windows:
Windows implementa un sistema de paginación completo, lo que significa que parte del espacio de
direcciones virtuales de un proceso puede estar en la RAM y otra parte en el almacenamiento
secundario. Cuando se necesita más memoria de la que está disponible en la RAM, Windows utiliza
un archivo de paginación (pagefile.sys) en el disco para almacenar las páginas menos utilizadas.
El algoritmo de reemplazo de páginas en Windows es sofisticado y se basa en diversos factores,
como la frecuencia de acceso y el tiempo desde el último acceso. El objetivo es mantener en la RAM
las páginas que se acceden con mayor frecuencia para maximizar el rendimiento del sistema.
la gestión de memoria en Windows se basa en un mapa de direcciones virtuales que permite a cada
proceso tener su propio espacio de direcciones independiente. La paginación se utiliza para extender
la memoria física utilizando el almacenamiento secundario, y un algoritmo de reemplazo de páginas
asegura un uso eficiente de la RAM. Windows también proporciona mecanismos para ajustar la
configuración de paginación según las necesidades del sistema y la carga de trabajo.