Subido por Hazel Enrique Hoil Diaz

EnsayoCapitulo4Corregido

Anuncio
Tecnológico Nacional de México
Instituto tecnológico de Mérida
Sistemas Operativos
Ingeniería en Sistemas Computacionales
Ensayo Gestión de Memoria
Equipo #7
Integrantes:
Hazel Enrique Hoil Diaz
Alan Josue Alcocer Lopez
Jose Carlos Tuz Puc
Profesor:
Manuel Jesus Rodriguez Morayta
Entrega: 31 de Octubre de 2022
La memoria es un recurso importante que debe ser cuidadosamente gestionado. A todo
programador le gustaría poder contar con una memoria infinitamente grande, infinitamente
rápida y que fuese además no volátil, esto es, que no perdiese su contenido en ausencia de
energía eléctrica. Pero al no poder contar con algunas de estas características han surgido
técnicas y algoritmos capaces de administrar de una forma óptima la memoria de nuestra
computadora. En este ensayo de la materia de Sistemas Operativos veremos un resumen de
lo aprendido durante esta unidad al igual que se presentara mapas conceptuales para poder
mejorar la comprensión del tema, el resumen que veremos a continuación fue obtenido del
capítulo 4 del libro Sistemas Operativos: una visión aplicada, en este capítulo presentaremos
los requisitos que debe cumplir la gestión de memoria en un sistema con multiprogramación,
al igual se mostrara las distintas fases que conlleva la generación de un ejecutable, se
analizara como ha sido la evolución de la gestión de la memoria desde los sistemas
multiprogramados más primitivos hasta los sistemas actuales basados en la técnica de
memoria virtual.
Capítulo 4: Gestión de memoria
La memoria es uno de los recursos más importantes de la computadora y en consecuencia la
parte del sistema operativo responsable de tratar con este recurso el gestor de memoria, es un
componente básico de el mismo. En un sistema con multiprogramación, el sistema operativo
debe encargarse de realizar un reparto transparente, eficiente y seguro de los distintos
recursos de la máquina entre los diversos procesos, de forma que cada uno de ellos crea que
“tiene una máquina para él solo”. En el caso de la memoria, el sistema operativo, con el
apoyo del hardware de gestión memoria del procesador, debe repartir el almacenamiento
existente proporcionando un espacio de memoria independiente para cada proceso y evitando
la posible interferencia voluntaria o involuntaria de cualquier otro proceso.
La gestión de memoria se necesita protección, en un sistema con multiprogramación el
problema se acentúa ya que no sólo hay que proteger al sistema operativo sino también a los
procesos entre sí. El mecanismo de protección en este tipo de sistemas necesita del apoyo del
hardware puesto que es necesario validar cada una de las direcciones que genera un programa
en tiempo de ejecución.
Para cumplir el requisito de protección, el sistema operativo debe crear espacios lógicos
independientes y disjuntos para los procesos. Sin embargo, en ciertas situaciones, bajo la
supervisión y control del sistema operativo, puede ser provechoso que los procesos puedan
compartir memoria.
El compartimiento de memoria puede ser beneficioso en varios aspectos. Por un lado, permite
que cuando se estén ejecutando múltiples instancias del mismo programa, los procesos
correspondientes compartan el código, lo que resulta en un mejor aprovechamiento de la
memoria disponible.
El modelo de memoria ha ido evolucionando desde este estado inicial, habitualmente los
programadores desarrollan sus aplicaciones utilizando lenguajes de alto nivel. En general,
una aplicación estará compuesta por un conjunto de módulos de código fuente que deberán
ser procesados para obtener el ejecutable de la aplicación. Este procesamiento consta de dos
fases: compilación y Montaje o enlace.
•
En la compilación, se genera el código máquina correspondiente a cada módulo fuente
de la aplicación asignando direcciones a los símbolos definidos en el módulo y
resolviendo las referencias a los mismos.
•
En el Montaje o enlace, se genera un ejecutable agrupando todos los archivos objeto y
resolviendo las referencias entre módulos, o sea, haciendo que las referencias a un
determinado símbolo apunten a la dirección asignada al mismo.
La gestión de memoria consta de esquemas, en la cual un esquema simple de gestión de
memoria consiste en asignar a cada proceso una zona contigua de memoria para que en ella
resida su mapa de memoria. Dentro de esta estrategia general hay diversas posibilidades. Sin
embargo, dado el alcance y objetivo de este tema, la exposición se centrará sólo en uno de
estos posibles esquemas: la gestión contigua basada en particiones dinámicas. Se trata de un
esquema que se usó en el sistema operativo OS/MVT de IBM en la década de los sesenta.
Para realizar un esquema de gestión de memoria se requiere del hardware, esta se divide en
registros: limite y base.
•
Registro límite: El procesador comprueba que cada dirección que genera el proceso no
es mayor que el valor almacenado en este registro. En caso de que lo sea, se generará una
excepción.
•
Registro base: Una vez comprobado que la dirección no rebasa el límite permitido, el
procesador le sumará el valor de este registro, obteniéndose con ello la dirección de
memoria física resultante.
La memoria virtual, prácticamente en todos los sistemas operativos modernos se usa esta
técnica.
La memoria en un sistema está organizada como una jerarquía de niveles de almacenamiento,
entre los que se mueve la información dependiendo de la necesidad de la misma en un
determinado instante, La técnica de memoria virtual se ocupa de la transferencia de
información entre la memoria principal y la secundaria, La memoria secundaria está
normalmente soportada en un disco (o partición), la memoria virtual se implementa sobre un
esquema de paginación, a este dispositivo se le denomina dispositivo de paginación. También
se usa el término dispositivo de swap. Aunque este término no es muy adecuado, ya que
proviene de la técnica del intercambio, por tradición se usa frecuentemente y se utilizará
indistintamente en esta exposición.
El objetivo del sistema de memoria virtual es intentar que la información que está usando un
proceso en un determinado momento (conjunto de trabajo) esté residente en memoria
principal. O sea, que el conjunto residente del proceso contenga a su conjunto de trabajo.
Algunos beneficios del uso de memoria virtual son los siguientes:
•
Se produce un aumento del grado de multiprogramación al no ser necesario que todo el
mapa de memoria de un proceso este en memoria principal para poder ejecutarlo. Este
aumento implica una mejora en el rendimiento del sistema.
•
Se pueden ejecutar programas más grandes que la memoria principal disponible. Hay que
resaltar que el uso de la memoria virtual no acelera la ejecución de un programa, sino que
puede que incluso la ralentice debido a la sobrecarga asociada a las transferencias entre
la memoria principal y la secundaria. Esto hace que esta técnica no sea apropiada para
sistemas de tiempo real.
El hardware requerido por esta técnica presentando los esquemas de paginación,
segmentación y segmentación paginada. Hay que resaltar que estos esquemas también se
pueden usar sin memoria virtual, aportando beneficios apreciables con respecto a los
esquemas de asignación contigua. De hecho, algunas versiones de UNIX usaban paginación
e intercambio, pero no memoria virtual. Sin embargo, en la actualidad el uso de estos
esquemas está ligado a la memoria virtual. Después de presentar el hardware, se mostrará
cómo construir un esquema de memoria virtual sobre el mismo estudiando las diferentes
políticas de gestión de memoria virtual.
Paginación: La paginación surge como un intento de paliar estos problemas sofisticando
apreciablemente el hardware de gestión de memoria del procesador aumentado
considerablemente la cantidad de información de traducción que se almacena por el proceso.
Como su nombre indica, la unidad básica de este tipo de esquema es la página. La página
corresponde con una zona de memoria contigua de un determinado tamaño. Por motivos de
eficiencia en la traducción, este tamaño debe ser potencia de 2 (un tamaño de página de 4 KB
es un valor bastante típico). El mapa de memoria de cada proceso se considera dividido en
páginas. A su vez, la memoria principal del sistema se considera dividida en zonas del mismo
tamaño que se denominan marcos de página.
Segmentación: Es una técnica hardware que intenta dar soporte directo a las regiones. Para
ello, considera el mapa de memoria de un proceso compuesto de múltiples segmentos. Cada
región se almacenará en un segmento. Se puede considerar que esta técnica es una
generalización del uso de los registros valla, pero utilizando una pareja de registro base y
registro límite por cada segmento. La MMU maneja una tabla de segmentos. Cada entrada
de esta tabla mantiene, además de información de protección, el registro base y límite
correspondientes a esa región. Una dirección lógica está formada por un número de segmento
y una dirección dentro del segmento.
Segmentación Paginada: La segmentación paginada intenta aun lo mejor de los dos esquemas
anteriores. 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.
Paginación por demanda: Una vez analizados los diversos esquemas hardware, en esta
sección se plantea cómo construir el mecanismo de la memoria virtual tomando como base
dichos esquemas. Estos esquemas también pueden usarse sin memoria virtual, ya que de por
sí proporcionan numerosas ventajas sobre los esquemas de asignación contigua. Sin
embargo, en la actualidad su uso siempre está ligado a la memoria virtual.
Para finalizar, en este capítulo hemos examinado la gestión de memoria. Vimos que los
sistemas más sencillos no realizan ni intercambio ni paginación. Una vez que un programa
se carga en la memoria, permanece allí hasta que termina. Algunos sistemas operativos sólo
permiten mantener un proceso a la vez en la memoria, mientras que otros soportan
multiprogramación.
El paso siguiente es el intercambio. Cuando se utiliza intercambio, el sistema puede contener
más procesos de los que caben en la memoria. Los procesos para los que no hay espacio
suficiente se intercambian al disco. Puede llevarse el control del espacio desocupado en la
memoria y en el disco con un mapa de bits o una lista de huecos.
Los ordenadores modernos suelen tener alguna forma de memoria virtual. En su forma más
simple, el espacio de direcciones de cada proceso se divide en bloques del mismo tamaño
que se denominan páginas y que pueden cargarse en cualquier marco de página disponible
en la memoria. Hay muchos algoritmos de sustitución de páginas; dos de los mejores
algoritmos son el de envejecimiento y WSClock.
Los sistemas de paginación pueden modelizarse abstrayendo la serie de referencias a las
páginas del programa y utilizándola con diferentes algoritmos. Estos modelos pueden servir
para hacer algunas predicciones respecto al comportamiento de la paginación.
La segmentación ayuda a manejar estructuras de datos que cambian de tamaño durante la
ejecución y simplifica el enlazado y la compartición. También facilita proporcionar
protección específica a diferentes segmentos. A veces se combinan la segmentación y la
paginación para crear una memoria virtual bidimensional. Los sistemas MULTICS y Pentium
de Intel manejan segmentación y paginación.
Referencias
Pérez, J. C., Carballeira, F. G., Anasagasti, P. M. & Costoya, F. P. (2001). Sistemas
operativos: una visión aplicada. McGraw-Hill Education.
Jesus Carretero Perez, F. G. (2012). Sistemas Operativos Una Vision Aplicada. España:
Area informatica y Computacion
Descargar