Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MEMORIA PRINCIPAL
INDICE
• Introducción
• Gestión de memoria para un solo proceso
• Gestión de memoria con particiones fijas
• Gestión de memoria con particiones variables
• Paginación
• Segmentación
• Paginación y segmentación combinadas
• Memoria virtual
• Prácticas
INTRODUCCIÓN
• Podemos entender la memoria principal como un inmenso casillero, que almacena programas
y datos. Cada una de las casillas está numerada (con una dirección) y su contenido recibe el nombre
de palabra.
• El gestor de memoria deberá asignar la porción necesaria de memoria principal a cada proceso que lo
necesite.
• Como ya dijimos, para ejecutar una instrucción, habría que leerla desde la memoria a un registro del
procesador y decodificarla (averiguar qué significa). A continuación, es posible que el sistema deba volver
a la memoria para obtener los datos implicados en la operación. Finalmente, es común que los resultados
obtenidos también haya que guardarlos en la memoria. Por todo ello, si la gestión de la memoria no es
adecuada, el rendimiento general del sistema se verá inmediatamente disminuido.
INTRODUCCIÓN
• Otra opción es disponer de una cola única y elegir las tareas que se adapten a las particiones que quedan
libres, aunque esto discrimina a las tareas con menos requisitos, porque tienden a desperdiciar espacio.
• En este tipo de esquema surge el concepto de intercambio (en inglés, swapping), que consiste,
básicamente en mover a memoria secundaria (normalmente disco), los procesos que se encuentran
bloqueados en espera de un suceso. De esta forma, se puede dar cabida a nuevos procesos.
• El módulo del sistema operativo que se encarga del intercambio se llama, precisamente, intercambiador y
se encarga de elegir los procesos que deben moverse de memoria principal a secundaria y a la inversa.
También administra el espacio reservado en la memoria secundaria para estos fines.
GESTIÓN DE MEMORIA CON PARTICIONES FIJAS
En cuanto a la asignación, debe estar destinada a retrasar el momento en que sea necesaria la compactación de memoria. Existen diferentes
opciones a la hora de elegir el bloque más adecuado para un proceso:
• El primer ajuste: Se asigna el proceso al primer bloque libre en el que quepa. Con el tiempo, los espacios disponibles del principio de la
memoria tenderán a ser pequeños y difíciles de utilizar. Es bastante rápido, aunque necesita recorrer los primeros bloques hasta encontrar un
hueco disponible.
• El siguiente ajuste: Busca un hueco a partir de la última asignación. Es frecuente que se reserve espacio en el bloque que queda disponible
al final de la memoria, que se divide en pequeñas porciones. Lo normal es que requiera frecuentes compactaciones de memoria para obtener
un bloque grande al final de la memoria.
• El mejor ajuste: Se asigna el bloque más pequeño cuya capacidad sea suficiente para contener al proceso. El resultado es peor que el
anterior, porque los fragmentos resultantes son más pequeños y, por lo tanto, difíciles de utilizar. Lo normal es que requiera
frecuentes compactaciones de memoria.
• El peor ajuste: Se asignan primero los fragmentos de memoria más grandes, esperando que los restos obtenidos puedan ser más sencillos
de utilizar. Suele requerir compactaciones de memoria más tardías, aunque necesita recorrer todos los bloques libres antes de elegir cada
destino.
GESTIÓN DE MEMORIA CON PARTICIONES VARIABLES
• Según lo que acabamos de decir, cada vez que un proceso (o una parte de este), se
descargue a memoria secundaria (o cada vez que se compacte la memoria), al volver
a ejecutarse, podrán haber cambiado las direcciones físicas donde se encontraba. Este
mecanismo recibe el nombre de Reubicación.
• Para lograr que la Reubicación funcione, el proceso de traducción de direcciones
virtuales a direcciones físicas necesitará de la participación de dos registros en el
procesador:
• Registro base: Que contiene la dirección en memoria principal del proceso.
• Registro límite: Que contiene la última posición a la que puede hacer referencia el
proceso.
• En la Gestión de memoria con particiones variables, hemos visto que la memoria disponible tiende a no
estar en posiciones contiguas, por lo que se produce una considerable fragmentación externa (la
memoria disponible se dispersa a lo largo del espacio de direcciones.
• Para resolver esta circunstancia, se planteó la posibilidad de que el espacio de memoria que usa un
determinado proceso no tuviese que estar en posiciones contiguas. Así, en un esquema de paginación, la
memoria se divide en trozos del mismo tamaño que reciben el nombre de marcos de página (o, en
inglés, frames). Del mismo modo, los procesos se dividen en fragmentos del mismo tamaño
denominados páginas.
• A modo de ejemplo, imagina que el proceso que queremos cargar en memoria lo representáramos con
el zumo contenido en la botella de la siguiente imagen. Por su parte, la memoria donde pretendemos
almacenarlo estaría representada por los vasos. Cada vaso, sería el equivalente a un marco de página de
la memoria.
PAGINACIÓN
• Así, cuando carguemos el proceso en memoria, cada página (cantidad de zumo del tamaño de un vaso)
se ubicará en un marco de página diferente.
• De este modo, cuando llegue un nuevo proceso, el único problema será encontrar la cantidad
suficiente de marcos de página disponibles en la memoria principal.
• Gracias a este planteamiento, se acaba con la fragmentación externa, y la fragmentación
interna quedará reducida al último marco de página asignado a cada proceso. Lo que equivaldría, en
nuestro ejemplo, al último vaso.
• Cabe esperar que, por término medio, la mitad del último marco de página quede desocupado.
PAGINACIÓN
• Como podrás suponer, este esquema necesita un método que traduzca las direcciones
virtuales a direcciones físicas, teniendo en cuenta la ubicación real de cada marco de
página. Este método se basa en la creación de una tabla de páginas, para cada proceso, en el
momento de cargarlo en memoria. En ella se establecerá el paralelismo entre cada página y
su marco de página correspondiente.
• Por lo tanto, las direcciones virtuales constarán de un número de página y un desplazamiento
dentro de ella. El número de página actuará como índice en la tabla de páginas.
• Además, es frecuente que el sistema operativo mantenga una lista de marcos de página
disponibles.
PAGINACIÓN
• Hasta ahora, hemos visto el problema de la gestión de memoria desde el punto de vista
del sistema operativo, donde la asignación de memoria se realiza en función del tamaño
total de un proceso o dividiendo éste en porciones de la misma longitud. Sin embargo, los
programadores y los usuarios necesitan manejar sus datos de un modo más flexible:
Tanto las funciones y procedimientos en las que se dividen los programas, como las
estructuras en las que se organizan los datos (como tablas o pilas), tienen tamaños
diversos.
• Por lo tanto, podemos decir que un programa es un conjunto de elementos lógicos de
tamaños variables.
SEGMENTACIÓN
• Es como si el zumo del ejemplo anterior fuese en realidad una mezcla (por ejemplo,
naranja, kiwi y fresa) y nos interesara mantenerlos separados. Entonces, podríamos
utilizar varios envases más pequeños. Todos juntos representarían al mismo proceso:
SEGMENTACIÓN
• Dado que la segmentación ofrece ventajas desde el punto de vista del usuario, pero
la paginación simplifica la perspectiva del sistema operativo, cuando el tamaño de los
segmentos es grande, es frecuente que se utilice una combinación de ambas. La idea es
dividir cada segmento en páginas de longitud fija para su ubicación en memoria.
PAGINACIÓN Y SEGMENTACIÓN COMBINADAS
• Siguiendo con nuestro ejemplo anterior, el contenido de cada botella utilizaría su propio
conjunto de vasos para cargarse en memoria. Aunque no debemos olvidar que todo el
zumo forma parte del mismo proceso:
PAGINACIÓN Y SEGMENTACIÓN COMBINADAS
Este método ofrece una gran flexibilidad, pero tiene tres inconvenientes:
• El proceso de traducción es más complejo, por lo que consumirá más recursos.
• Dado que cada segmento tiene su propia tabla de páginas, el espacio destinado al
almacenamiento de tablas de páginas será mucho mayor.
• Como cada segmento tiene su propia tabla de páginas, podremos tener un marco de
páginas incompleto al final de cada uno de los segmentos asignados a un proceso, lo que
implica una mayor fragmentación interna.
MEMORIA VIRTUAL
• Todos los métodos estudiados hasta el momento suponen que un proceso debe estar completamente cargado en
memoria para poder ejecutarse. Sin embargo, el modelo de Memoria virtual aplica los mecanismos de intercambio
que ya hemos mencionado para que las partes de un proceso que no estén siendo utilizadas en un momento
concreto, puedan residir en memoria secundaria. De esta forma, se libera una mayor cantidad de memoria principal
para albergar un número de procesos superior. Además, este planteamiento nos permitiría ejecutar procesos que
fuesen más grandes que la memoria física.
• Normalmente se implementa a partir de los conceptos de paginación y/o segmentación que hemos estudiado
antes.
• Cuando el proceso hace referencia a una dirección de memoria que no reside en memoria principal, se produce
un fallo de página. En ese momento, el sistema localiza un marco de página libre y carga en él la página necesaria. Si
no hubiese marcos libres, habría que aplicar un algoritmo de sustitución para elegir la página de este u otro
proceso que debe abandonar la memoria principal para dejar espacio a la que debe cargarse.
MEMORIA VIRTUAL
• Mientras dura toda esta operación, el proceso que originó el fallo de página permanece
en estado Bloqueado.
• Para saber qué páginas se encuentran en memoria principal y cuáles están en el disco,
la tabla de páginas puede incluir un bit de presencia.
• Este tipo de esquemas consiguen que la memoria se aproveche mucho mejor. Además, al
poder cargar más procesos en la misma cantidad de memoria, el procesador estará
mejor aprovechado. Sin embargo, si se produce una situación que provoque una cantidad
elevada de fallos de página, los accesos a disco se multiplicarán y el rendimiento puede
caer de forma considerable. Este fenómeno recibe el nombre de hiperpaginación.
MEMORIA VIRTUAL
ADMINISTRACIÓN DE LA MEMORIA
• Si lo cierras, liberas la memoria que está ocupando para que puedan usarla otros
programas y el procesador, que no tendrá que dedicarle tiempo de proceso. Siempre
podrás volver a abrirlo más tarde.
• Relacionado con lo anterior, conviene mencionar todos esos complementos que
embellecen el sistema, como las animaciones para abrir o cerrar ventanas, los relojes en
el escritorio o los complementos de la barra de tareas que nos indican la predicción del
tiempo. Todos ellos se están ejecutando en segundo plano y están consumiendo tiempo
de procesador y capacidad de memoria, lo que significa que, si tu ordenador no ofrece el
rendimiento que esperas, estos deben ser los primeros candidatos de los que prescindir.
PRÁCTICAS.
WINDOWS 10 UBUNTU 18
• Averiguar qué memoria y procesador tiene • Averiguar qué memoria y procesador tiene
un equipo con Windows 10. un equipo con Ubuntu 18.04 LTS.
• Administrar la memoria virtual en Windows • Obtener información sobre el hardware en
10. Ubuntu 18.04 LTS.
• Comprobar el estado de la memoria RAM • Administrar la memoria virtual en Ubuntu
usando Windows 10. 18.04 LTS.
• Comprobar el estado de la memoria RAM
usando Ubuntu 18.04 LTS.
WEBGRAFÍA