Estrategias

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

Asignación de partición

En este tipo de sistemas, las particiones para cada proceso se van creando a medida que son
asignadas al procesador. Tiene como ventaja principal que evitamos el desperdicio de memoria
dentro de cada bloque ya que cada uno está hecho a medida para el proceso que contiene. Por el
contrario, una vez que un proceso ha concluido, su partición se queda en desuso y sería necesario
aplicar algoritmos de desfragmentación de memoria (supone un alto coste de rendimiento) para
poder unificar todas las partes que han quedado libres y así reciclar las particiones que quedaron
huérfanas. Otra forma de obtener particiones de mayor tamaño es unificar dos o más huecos
adyacentes en uno sólo.

La memoria se divide en diferentes bloques o particiones. Cada proceso se asigna


según el requisito. La asignación de particiones es un método ideal para evitar la
fragmentación interna.

A continuación, se muestran los distintos esquemas de asignación de particiones:

Primer ajuste
Consiste en asignar el primer hueco disponible que tenga un espacio suficiente para almacenar el
programa. La principal desventaja es el reiterado uso de las primeras posiciones de memoria. Este
último inconveniente repercute negativamente en la circuitería, debido a que se produce un mayor
desgaste en dichas posiciones.

Mejor ajuste
Consiste en asignarle al proceso el hueco con menor desperdicio interno, i.e, el hueco el cual al serle
asignado el proceso deja menos espacio sin utilizar. Su mayor inconveniente es su orden de
complejidad (orden lineal, O(n)) debido a que hay que recorrer todo el mapa de bits o toda la lista de
control (una posible solución sería usar una lista de control encadenada que mantenga los huecos
ordenados por tamaño creciente). Otro problema es la fragmentación externa, debido a que se asigna el
menor hueco posible, el espacio sobrante será del menor tamaño posible lo que da lugar a huecos de
tamaño normalmente insuficiente para contener programas.

Peor ajuste
Al contrario que el criterio anterior, se busca el hueco con mayor desperdicio interno, i.e, el hueco el cual
al serle asignado el proceso deja más espacio sin utilizar, y se corta de él el trozo necesario (así la
porción sobrante será del mayor tamaño posible y será más aprovechable). Tiene el mismo
inconveniente en cuanto a orden de complejidad que el mejor ajuste (debido a la longitud de las
búsquedas) y la fragmentación no resulta demasiado eficiente.

. Almacenamiento No contiguo.
1. Asignación de memoria contigua: la asignación de memoria
contigua es básicamente un método en el que una sola
sección/parte de memoria contigua se asigna a un proceso o
archivo que la necesita. Debido a esto, todo el espacio de memoria
disponible reside en el mismo lugar, lo que significa que las
particiones de memoria disponibles libres o no utilizadas no se
distribuyen de forma aleatoria aquí y allá en todo el espacio de
memoria.

La memoria principal es una combinación de dos partes


principales: una para el sistema operativo y otra para el programa
de usuario. Podemos implementar/lograr una asignación de
memoria contigua dividiendo las particiones de memoria en
particiones de tamaño fijo.

2. Asignación de memoria no contigua: la asignación de memoria


no contigua es básicamente un método contrario al método de
asignación contigua, asigna el espacio de memoria presente en
diferentes ubicaciones al proceso según sus requisitos. Como todo
el espacio de memoria disponible está en un patrón distribuido, el
espacio de memoria disponible libremente también está disperso
aquí y allá. Esta técnica de asignación de memoria ayuda a reducir
el desperdicio de memoria, lo que finalmente da lugar a la
fragmentación interna y externa.

Hasta ahora se han estudiado esquemas de administración de la memoria en los


que los procesos se almacenan en posiciones contiguas (consecutivas) de
memoria. Sin embargo, un proceso puede dividirse en bloques, y estos bloques
pueden situarse en posiciones no contiguas de memoria principal. Es más, no es
preciso que se encuentren en la memoria todos los bloques de un proceso para
que se pueda ejecutar, basta con que se encuentren los bloques que contienen
código o datos actualmente referenciados, el resto puede permanecer en
memoria secundaria.
• Cada programa tenía que
ocupar un único bloque
contiguo de localidades de
memoria.
• El almacenamiento no
contiguo aparece con la
multiprogramación con
particiones variables.
• En el almacenamiento no
contiguo, un programa se
divide en varios bloques
o segmentos que se pueden
colocar en el
almacenamiento principal en
fragmentos que no necesitan
ser adyacentes.
• Almacenamiento
Contiguo: Cada archivo
ocupa un conjunto de
bloques
contiguos en disco
o Ventajas
▪ Sencillo: solo necesita la
localización de comienzo
(nº de
bloque) y la longitud
o Desventajas:
▪ Derroche de espacio
(problema de la asignación
dinámica ->
fragmentación externa)
▪ – Los archivos no
pueden crecer, a no ser que
se realice
compactación -> ineficiente
▪ La asignación de memoria
contigua también conduce a
la
fragmentación interna. Por
ejemplo, si un bloque de
memoria
de tamaño fijo asignado a un
proceso es ligeramente mayor
que
su requisito, el espacio de
memoria que queda en el
bloque se
denomina fragmentación
interna.
memoria.
• El almacenamiento no
contiguo aparece con la
multiprogramación con
particiones variables.
• En el almacenamiento no
contiguo, un programa se
divide en varios bloques
o segmentos que se pueden
colocar en el
almacenamiento principal en
fragmentos que no necesitan
ser adyacentes.
• Almacenamiento
Contiguo: Cada archivo
ocupa un conjunto de
bloques
contiguos en disco
o Ventajas
▪ Sencillo: solo necesita la
localización de comienzo
(nº de
bloque) y la longitud
o Desventajas:
▪ Derroche de espacio
(problema de la asignación
dinámica ->
fragmentación externa)
▪ – Los archivos no
pueden crecer, a no ser que
se realice
compactación -> ineficiente
▪ La asignación de memoria
contigua también conduce a
la
fragmentación interna. Por
ejemplo, si un bloque de
memoria
de tamaño fijo asignado a un
proceso es ligeramente mayor
que
su requisito, el espacio de
memoria que queda en el
bloque se
denomina fragmentación
interna.
Memoria Virtual: direcciones reales (físicas) y virtuales
(lógicas).
¿Qué es la memoria virtual?
Memoria virtual es un mecanismo de almacenamiento que ofrece al usuario la ilusión de tener una memoria
principal muy grande. Se realiza tratando una parte de la memoria secundaria como memoria principal. En la
memoria virtual, el usuario puede almacenar procesos con un tamaño mayor que la memoria principal
disponible.

Por lo tanto, en lugar de cargar un proceso largo en la memoria principal, el sistema operativo carga las
distintas partes de más de un proceso en la memoria principal. La memoria virtual se implementa
principalmente con paginación y segmentación de la demanda.

¿Por qué necesita memoria virtual?


Estas son las razones para usar la memoria virtual:

 Siempre que su computadora no tiene espacio en la memoria física, escribe lo que necesita recordar
en el disco duro en un archivo de intercambio como memoria virtual.
 Si una computadora ejecuta Windows necesita más memoria/RAM, luego se instala en el sistema,
utiliza una pequeña porción del disco duro para este propósito.

¿Cómo funciona la memoria virtual?


En el mundo moderno, la memoria virtual se ha vuelto bastante común hoy en día. Se utiliza siempre que
algunas páginas requieren cargarse en la memoria principal para la ejecución y la memoria no está disponible
para tantas páginas.

Entonces, en ese caso, en lugar de evitar que las páginas entren en la memoria principal, el sistema operativo
busca el espacio de RAM que es mínimo utilizado en los últimos tiempos o que no está referenciado a la
memoria secundaria para hacer espacio para las nuevas páginas en la memoria principal.

Vamos a entender gestión de memoria virtual con la ayuda de un ejemplo.

Por ejemplo:
Supongamos que un sistema operativo requiere 300 MB de memoria para almacenar todos los programas en
ejecución. Sin embargo, actualmente sólo hay 50 MB de memoria física disponible almacenada en la RAM.

 Luego, el sistema operativo configurará 250 MB de memoria virtual y utilizará un programa llamado
Virtual Memory Manager (VMM) para administrar esos 250 MB.
 Entonces, en este caso, VMM creará un archivo en el disco duro de 250 MB para almacenar la
memoria adicional necesaria.
 El sistema operativo ahora procederá a direccionar la memoria ya que considera 300 MB de memoria
real almacenada en la RAM, incluso si solo hay 50 MB de espacio disponibles.
 El trabajo del VMM es administrar 300 MB de memoria incluso si solo hay disponibles 50 MB de
espacio de memoria real.

Ventajas de la memoria virtual


A continuación, se detallan las ventajas y ventajas de utilizar la memoria virtual:
 La memoria virtual ayuda a ganar velocidad cuando solo se requiere un segmento particular del
programa para la ejecución del programa.
 Es muy útil para implementar un entorno de multiprogramación.
 Le permite ejecutar más aplicaciones a la vez.
 Le ayuda a encajar muchos programas grandes en programas más pequeños.
 Se pueden compartir datos o códigos comunes entre la memoria.
 El proceso puede llegar a ser incluso más grande que toda la memoria física.
 Los datos/códigos deben leerse desde el disco siempre que sea necesario.
 El código se puede colocar en cualquier lugar de la memoria física sin necesidad de reubicación.
 Se deben mantener más procesos en la memoria principal, lo que aumenta el uso efectivo de la
CPU.
 Cada página se almacena en un disco hasta que se requiere; después de eso, se eliminará.
 Permite ejecutar más aplicaciones al mismo tiempo.
 No existe un límite específico sobre el grado de multiprogramación.
 Se deben escribir programas grandes, ya que el espacio de direcciones virtuales disponible es mayor
en comparación con la memoria física.

Desventajas de la memoria virtual


A continuación, se detallan las desventajas/desventajas del uso de la memoria virtual:

 Las aplicaciones pueden ejecutarse más lentamente si el sistema utiliza memoria virtual.
 Es probable que tome más tiempo cambiar entre aplicaciones.
 Ofrece menos espacio en el disco duro para su uso.
 Reduce la estabilidad del sistema.
 Permite ejecutar aplicaciones más grandes en sistemas que no ofrecen suficiente RAM física para
ejecutarlas.
 No ofrece el mismo rendimiento que la RAM.
 Afecta negativamente el rendimiento general de un sistema.
 Ocupar el espacio de almacenamiento, que puede ser utilizado por otroswise para almacenamiento
de datos a largo plazo.

Resumen

 La memoria virtual es un mecanismo de almacenamiento que ofrece al usuario la ilusión de tener una
memoria principal muy grande.
 La memoria virtual es necesaria siempre que su computadora no tenga espacio en la memoria física.
 Un mecanismo de paginación por demanda es muy similar a un sistema de paginación con
intercambio en el que los procesos almacenados en la memoria secundaria y las páginas se cargan
sólo según demanda, no por adelantado.
 Los métodos importantes de reemplazo de página son 1) FIFO 2) Algoritmo óptimo 3) Reemplazo de
página LRU.
 En el método FIFO (primero en entrar, primero en salir), la memoria selecciona la página para un
reemplazo que ha estado en la dirección virtual de la memoria durante más tiempo.
 El método de reemplazo de página óptimo selecciona aquella página para un reemplazo cuyo tiempo
hasta la siguiente referencia es el más largo.
 El método LRU ayuda al sistema operativo a encontrar el uso de la página en un corto período de
tiempo.
 La memoria virtual ayuda a ganar velocidad cuando solo se requiere un segmento particular del
programa para la ejecución del programa.
 Las aplicaciones pueden ejecutarse más lentamente si el sistema utiliza memoria virtual.
Tipos de memoria virtual

 Existen varios tipos de memoria virtual, incluyendo:


 Memoria virtual de página: se utiliza para almacenar páginas de memoria que no están en uso en
la memoria RAM.
 Memoria virtual de swap: se utiliza para almacenar datos que no están en uso en la memoria RAM
y que se necesitan acceder rápidamente.
 Memoria virtual de cache: se utiliza para almacenar datos que se utilizan con frecuencia y que se
necesitan acceder rápidamente.
 Configuración y ajustes: La configuración y ajustes de la memoria virtual pueden variar
dependiendo del sistema operativo y del hardware del ordenador. En general, es recomendable dejar
que el sistema operativo ajuste automáticamente la memoria virtual según las necesidades del
sistema, pero también es posible ajustarla manualmente para mejorar el rendimiento o para liberar
espacio en la memoria RAM

 Directorios Virtuales
Un espacio de direcciones virtuales consiste de un conjunto de páginas de memoria
indexadas en forma continua. El núcleo agrupa internamente conjuntos de páginas
contiguas que tienen los mismos atributos (herencia, protección y otras propiedades) en
entidades internas denominadas regiones de memoria. Las regiones de memoria se
nombran únicamente por los rangos de direcciones virtuales que contienen a este espacio
de direcciones.

Direcciones Físicas
Una dirección física (también denominada dirección real o dirección binaria) es
una dirección de memoria que se representa en forma de un numero binario en la circuitería de
bus de direcciones para permitir que el bus de datos acceda a una celda de almacenamiento
particular de la red principal de memoria o un registro de dispositivo de E/S mapeada en
memoria
Traducción de direcciones.
Traducción de direcciones
Cuando se utiliza memoria virtual, los procesos utilizan referencias lógicas a otras posiciones de
memoria. Sin embargo, el SO, para acabar accediendo a los datos correctos, debe traducir las
direcciones lógicas en direcciones físicas. La manera en la que se realiza esta traducción depende del
esquema de gestión que se utilice. Normalmente el procesador cuenta con hardware específico (la
unidad de gestión de memoria, MMU) para realizar este proceso.

Dirección lógica:

Una dirección de memoria virtual. Identifica un dato en el espacio de memoria virtual, pero dice
muy poco sobre dónde se encuentra realmente este dato.

Dirección física:
Una dirección que identifica una posición de memoria principal.

Traducción de direcciones con paginación

Una dirección lógica estará compuesta por el número de página y desplazamiento. Para obtener la
dirección física, se buscará en la tabla de páginas del proceso la entrada que corresponda a la página
buscada, y allí se obtendrá la dirección de memoria física en la que se encuentra cargada la página.
Con el desplazamiento se puede acceder a un dato concreto en el interior de la página.

Traducción de direcciones con segmentación


Cuando se utiliza segmentación, la traducción de direcciones es similar al caso de la paginación, pero
como los segmentos tienen una longitud variable en la tabla de segmentos del proceso no sólo se
guarda la dirección base del segmento, sino también su longitud.

Buffers y caché
Gracias a la memoria virtual es posible utilizar espacio de disco, memoria secundaria, como si fuese
memoria principal. También se puede utilizar la memoria principal para acelerar las operaciones de
entrada/salida.

Directorios Virtuales
Un espacio de direcciones virtuales consiste de un conjunto de páginas de memoria indexadas en
forma continua. El núcleo agrupa internamente conjuntos de páginas contiguas que tienen los
mismos atributos (herencia, protección y otras propiedades) en entidades internas denominadas
regiones de memoria. Las regiones de memoria se nombran únicamente por los rangos de
direcciones virtuales que contienen a este espacio de direcciones.

También podría gustarte