Todos este es el primer
videotutoriales del tema 5,
jerarquía de memoria,
memoria virtual.
Este tema cinco está estrechamente
relacionados
con el tema anterior, el tema 4,
porque ambos temas están dedicados
a la jerarquía de memoria.
En concreto, si recordamos
el tema cuatro
lo que veíamos era que poniendo una
pequeña memoria, mi rápida,
una memoria caché que era una
memoria pequeña y rápida,
cerca de, nace hacíamos creer
a los procesos en ejecución
que tenían una memoria grande
y rápida, cercana,
gracias a los principios
de localidad,
tanto al principio de
localidad espacial
como al principio de localidad
temporal.
Esto hacía que el tiempo de ejecución
de dichos programas se redujera
de forma significativa,
porque lo que conseguíamos era
reducir el número de accesos,
del acepte o a la memoria principal.
La memoria virtual se podría
considerar que lo que está pasando
es que la memoria principal
hace de memoria cachete
de lo que serían los dispositivos
de almacenamiento,
los dispositivos de entrada salida
en concreto los discos duros
aunque como veremos más
adelante el propósito
de que la memoria principal actúe
de caché de los dispositivos
de almacenamiento, es totalmente
distinto al propósito
de lo que sería la memoria caché
que vimos en el tema anterior.
Destacar que este,
en el que el concepto
de memoria virtual
aparece por los años en el año
50 a mitad de los 50,
en concreto aparecen
una tesis doctoral
pero no simplemente hasta mediados
de los 60 también
en máquinas muy específicas
y mucho más tiempo
en aparecer en lo que sería máquinas
de propuesto general.
En este tema está dividido
en seis apartados
ni en este videotutoriales.
Nos vamos a centrar en el apartado 1,
en concreto en la introducción y
veremos los conceptos generales
y las consideraciones de diseño
de una memoria virtual.
Bien, empezamos con la introducción
y, como hemos indicado anteriormente,
la memoria bid principal puede
actuar como una memoria caché
de lo que sería.
El disco duro, almacenamiento
secundario
y eso sería la idea de
la memoria virtual.
Sin embargo, las razones por las
que la memoria principal
actúa de una especie de cachés
totalmente distinta
de lo que sería la memoria check
estudiamos en el tema cuatro concreto
serían dos razones.
La primera es proporcional
a los procesos que están
en ejecución,
un espacio de direcciones, de
memoria muchísimo mayor,
es decir,
hacer creer a los procesos que
tienen una memoria principal muchísimo mayor
que la que realmente tienen
a día de hoy,
teniendo en cuenta que es muy fácil
encontrar en el mercado
un incluso un portal, el que tenga 8.
Vais explicar este concepto
es un poco más complicado
que años anteriores, sin embargo,
nos vamos a centrar en que la
arquitectura que nosotros vemos
en esta asignatura es una
arquitectura de 32 pits.
Como vamos a explicar posteriormente,
este indica que el tamaño máximo de
lo que sería la memoria principal
va a ser cuatro jugabais
y nos vamos a centrar
en que el ordenador que
tenemos para tener
un Único gigavatio de memoria aun
así si nos vamos un poquito más atrás
en el tiempo tenemos que recordar
que había ordenadores,
que tenían 32 megas de radón,
128 nega Esteban
querrán e incluso menos.
Entonces,
qué pasaba cuando el ordenador
no tenía memoria virtual?
Pues el tamaño de los programas
estaban limitados
a lo que era la memoria principal.
Entonces, cuando se hacían
programas sus mayores,
que tenían un tamaño mayor que
esa memoria principal,
una de dos programas no
se podía ejecutar
o bien los programadores
eran los responsables
y eran los encargados de dividir
su propio programa,
en lo que eran parques mutuamente,
exclusivas, es decir,
que entre sino se llamaban, y las
partes se llamaban gobernáis,
era el propio programador el
encargado de decir, de indicar,
cuando se tenía que cargar en
memoria cada uno de esos de esas partes,
de esos gobernáis sin,
sino si nos damos cuenta.
Este trabajo era bastante,
te de Dios,
hoy lideramos bastante complicado
con un sistema de memoria virtual
es la memoria virtual.
Ese sistema de memoria virtual,
que hace de forma totalmente
automática
y de forma totalmente transparente
al programador esa división.
El programa creerá que tienen un
espacio, direcciones, que es
una memoria virtual, muchísimo
mayor que la memoria física,
que realmente tiene la creer.
El drama va a creer que tiene una
memoria principal grande
y en realidad solo va a disponer
de una memoria principal,
y lo que va a hacer el sistema
de memoria virtuales
calcados en memoria principal.
Sólo aquellos trozos
del programa que están en ejecución
en un momento concreto,
e irá cargando y sustituyendo según
se vayan trozos de programa,
según se vayan necesitando.
La segunda razón sería
permitir la compartición de
la memoria principal
entre múltiples procesos
en ejecución.
Recordamos que recordamos
que un proceso
es un programa de ejecución
que lo estudia,
estáis en la asignatura de
fundamentos de Computadores
y entonces, pues lo que el propósito
de la memoria virtual
es permitir que varios programas se
puedan ejecutar al mismo tiempo
de una forma eficiente y además
de una forma segura,
una forma que no haya peligro signos.
Si recordamos simplemente cuando
vosotros estáis trabajando,
por ejemplo, si estáis haciendo
las prácticas de,
pues lo normal es que tengáis
más abierto,
primer programa que tiene es
también el lector de PDF
para tener el Boletín de
la práctica abierta.
Segundo programa normalmente también
tendréis un navegador,
bien para buscar ayuda,
o bien porque tenéis el correo
electrónico abierto.
También, por ejemplo, tendremos
el código abierto,
con lo cual mínimo de cuatro
o cinco programas aparte
del sistema operativo tendremos
en ejecución.
Entonces se están ejecutando varios
procesos al mismo tiempo
y, sin embargo, tenemos una
única minoría principal
que se tiene que compartir.
Entre entre ellos.
La idea es que la memoria virtual
lo que va a conseguir
es que de cada proceso solo
vamos a tener un trozo cargado
en memoria principal aquel
que realmente se está utilizando
en un momento concreto.
La memoria principal además
va a estar compartida
por esos trozos activos de
los distintos procesos
y además va a estar compartida
de forma segura,
es decir, un proceso solo
va a poder acceder
a la memoria que tiene asignada
y el la memoria virtual.
Va a ser la responsable de cargar
los nuevos trozos de memoria
del programa según se necesita
una memoria y de forma,
como hemos dicho anteriormente,
totalmente transparente
para lo que sería el programador
y el usuario final
y por supuesto como ya hemos dicho,
la sistema de memoria virtual
sin carga de que un proceso
de un programa solo
puedan leer y escribir las partes
de memoria que tiene asignadas.
Vamos a ver los conceptos generales.
Como hemos indicado, la los
conceptos de memoria virtual
y memoria caché están totalmente
relacionados,
aunque el propósito final sea
totalmente distinto.
Entonces, en el caso
de memoria virtual
un bloque de memoria virtual
es un, es un consiste.
Llama página
y como veremos a continuación
el tamaño de la página
va a ser mucho, mucho mayor que
lo que eran los bloques,
en lo que sería la memoria caché
cuando el dato está cuando la página
perdón, esta memoria principal
se considera que es un
acierto de página.
Sin embargo,
cuando el dato no esta
memoria principal
se considera que es un
fallo de página
o un fallo de memoria virtual.
El espacio de direcciones virtuales
queda definido en páginas y el
espacio de direcciones físicas,
que sería la memoria principal
también queda dividido en páginas.
Todas ambas del mismo tamaño y la
idea es que en las páginas de,
de lo que sería la direcciones
virtuales, las páginas virtuales,
unas malestar van a tener
su correspondencia
en la memoria principal van a estar
almacenadas en páginas físicas,
mientras que otras,
porque no ha, no va a haber espacio
para todas, otras, estarán
almacenadas en el disco duro.
Aquellas a las que accedemos y
están en memoria principal
va a ser lo que decíamos antes,
que era una cierto página
y, sin embargo, aquellas que están
accediendo hasta en almacenadas,
perdonen, disco Durán, en
almacenamiento secundario.
Cuando intentemos acceder a ellas se
va a producir un fallo de página,
y lo que va a pasar es
que estas páginas
van a ser tener que ser leídas y
traídas a la memoria principal
para poderlas usar, según un
nuevo punto importantes,
que hay que hacer una traducción de
direcciones por cada dirección
que generan en concreto la
acepte y un general,
o que se llaman direcciones
virtuales.
Esas direcciones virtuales pasan
a una nueva unidad.
La y mi me una unidad
y manejo de memoria
que se va a encargar de traducir
todas las direcciones virtuales
a las directas, a direcciones
físicas;
estas direcciones físicas serían
con las que accederíamos
a la memoria principal y
en la memoria física,
y, en su caso, si lo tuviéramos,
a lo que sería la memoria Catsi.
Nosotros vamos a considerar
que nuestro sistema
no hay memoria cachee, solo tenemos
memoria principal importante;
la traducción sería de direcciones
virtuales a direcciones físicas
mediante la nn, o y con esas
direcciones físicas
accederíamos a la memoria principal
tener en cuenta,
y es muy importante destacar
que todas las direcciones
generadas por la tienen que
hacer esa traducción.
Por tanto la inaem se tiene que
encargar de hacer una traducción
de una manera eficiente y por
supuesto nos tenemos
que dar cuenta que la nn uno puede
tener una correlación
de cada una de las direcciones
virtuales a direcciones físicas.
Esto es lo que va a hacer, es
una traducción por páginas.
Como ya hemos dicho la tanto
la memoria virtual
como la memoria física van a
estar divididas en páginas
y entonces la enemigo va a ser
la responsable de determinar
para cada dirección virtual
cuál es su página física
y hacer la traducción
en páginas físicas.
Recordamos que una de estas páginas
virtuales van a estar realmente,
y lo que serían la memoria principal,
mientras que otras estarán
en disco y por tanto
había un fallo de página, tendrían
que ser leídas,
veamos ahora cómo consigue la
nbq hacer esa traducción.
Mediante páginas bien
primas de calle,
como hemos dicho, la
dirección virtual
es lo que me genera, es lo que
la dirección General.
Bien.
Segundo detalle.
La dirección física es la
que la que traduce
y la que finalmente se usa para
acceder a memoria principal
y la enemigo es la encargada
de hacer.
Es esta traducción, esta traducción
nos va a depender
de lo que sería el tamaño de página
para que ser eficientes
vamos a utilizar existido
en los sistemas a día
de hoy se está utilizando un
tamaño de páginas grandes,
como mínimo, de 4, cuatro
kilo va hecho.
Entonces, en concreto, el logaritmo,
en base de oro de 4, 12 veis dos
elevado de serían cuatro kilos
y, por tanto, en concreto
lo que tenemos
es que la dirección virtual
y la dirección física ambas
se dividen en dos partes.
La parte menos significativa sería
el desplazamiento de página
y el número de vips
desde desplazamiento de página
melva, el tamaño de la página,
que en este caso son 24.000
menos significativos,
que serían el desplazamiento
de página.
Cuando la en un hace la traducción,
el desplazamiento de páginas
lo copia y sin intacto,
sin hacer ningún cambio sobre
y luego la enemiga.
Por tanto, se queda con la
parte más significativa
de la dirección virtual?
Esa es la que le da el número
de página virtual
de hace la traducción y obtendrá
el número de páginas física,
como veremos en el siguiente
apartado.
La traducción la consigue
gracias a una tabla
de páginas que le indica la
correspondencia donde está el.
Para cada página virtual le indica
si esa página virtual
está tienen correspondencia física.
Es decir, esta memoria principal
o todavía no está almacenada
en memoria principal.
Segundo detalle.
El tamaño de las direcciones
virtuales
depende del tamaño de la dirección,
de la memoria virtual;
en concreto,
cuando estamos trabajando con
arquitecturas de 32 vips,
la memoria virtual va
a tener como mucho
cuatro llevabais, porque dos elevado
32 son cuatro jugabais
y por tanto, el número de bits que
tienen la dirección virtual
va a ser 32.
Esto hace que si, como hemos
dicho anteriormente,
el desplazamiento de páginas
son 12 vips.
Debido a los 4, vais que
tenemos por página;
los 20 bits restantes, 32 menos -12,
me compondrían el número
de página virtual.
Por otro lado, el tamaño de
la dirección física,
es decir, el número de vips que
forman la dirección física,
depende de nuevo del tamaño
de la memoria principal,
en concreto en el ejemplo
que vamos a ver
en este durante estas transparencias.
Durante este tema el tamaño de
la memoria vil principal,
vamos a considerar que
tiene un gin; ama,
y en concreto, dos elevado 30.
Tiene un, vais por tanto
dirección física,
30.000.
De esos 30 vips ya hemos dicho que
12, los 12 menos significativos
son el desplazamiento de página
y, por tanto los 18
más significativos es el número
de página física,
otro detalle si nos acordamos
con respecto a lo que sería las
direcciones para acceder
a la memoria caché teníamos
que esas direcciones,
se dimitiría, observa y se
palabra, y luego índice
y más tarde etiqueta; después
el hoxe se va.
Yo no sepan habrá perdón,
sería el equivalente a lo que sería
el desplazamiento de páginas,
y el número.
Página virtual
sería lo que el equivalente
a lo que sería el índice.
Veamos ahora unas consideraciones
de diseño
en el sistema de memoria virtual
debido a que el los dispositivos
de almacenamiento secundarios
son muchísimo más lentos que lo que
sería la memoria principal.
La diferencia de acceso
a dichos discos duros
pueden llegar a ser 10
veces más lenta
que lo que sería la memoria
principal,
los costes.
El coste de gestionar un fallo
de página es enorme.
Esto hace que nos podamos permitir
ciertas ciertos detalles,
por ejemplo, que tengamos que tener
no solo que nos podamos permitir,
sino que además tengamos que
considerar determinadas cosas
para intentar amortizar
ese ese tiempo.
Primer detalle,
lo interesante sería que las
páginas sean grandes
para amortizar el tiempo de
acceso y, por tanto,
para que poder utilizarlo el mayor
número de veces posible,
en concreto a día de hoy y
los sistemas operativos
y la, lo que serían los los.
El sistema de memoria virtual
está trabajando con páginas
de cuatro caballos hasta 64 caballos.
Como hemos dicho, la
memoria principal
es como una especie de memoria caché
del que serían disco duro
y el esquema que se utiliza es un
esquema totalmente asociativo.
La idea es reducir la tasa de fallos
e incrementar la tasa de aciertos.
Recordamos que el esquema totalmente
asociativo lo que hace
es que cualquier página virtual
pueda ir a cualquier página física,
y esto nos ha permitido, incluso,
como veremos, más tarde,
reubicaciones de lo que serían
las páginas en lo que sería
la memoria principal.
Cuando nos quedemos sin
memoria principal
los fallos de páginas se van
a gestionar por software,
facilitando en cierta medida es lo
que sería el componente hardware
va a ser mucho más sentido por son.
Cuarto suprimen, atañe, porque
la sobrecarga sobrecargadas,
de usar el software debido al a
lo que sería el tratamiento
del fallo de página
es, es poca comparado con lo que es
el tiempo de acceso al disco duro,
que, por tanto, nos podemos permitir.
Esa gestión por son buenos
lugar dejar bueno,
y, al hacerlo por software, los
algoritmos de reemplazo,
por ejemplo, pueden ser
más más inteligentes
y, por tanto, conseguir reducir
la tasa de fallos
como el tiempo de acceso
al disco duro.
Volvemos a destacar
que es muchísimo mayor que el tiempo
de acceso a la memoria principal.
La política para la escritura va a
ser una política de escritura,
es decir, se va a escribir solo
en la memoria principal
y cuando haya que hacer un
reemplazo de esa página,
se escribirá en lo que sería el
almacenamiento secundario
en el disco duro.
Una política de escritura directa
implicaría escribir,
tanto la memoria principal
como en el disco duro,
y sería una política muy lenta;
por tanto, se opta por una escritura