3. Jerarquía de Memoria - Registros del CPU
La CPU debe obtener las instrucciones de la memoria y las
ejecutarlas.
Toma la primera instrucción de la memoria, la decodifica
para determinar su tipo y operandos, la ejecuta y después el
ciclo se repite hasta que el programa termina.
4. Jerarquía de Memoria - Registros del CPU
Como el acceso a la memoria RAM principal para obtener
una instrucción o palabra de datos requiere mucho más
tiempo que ejecutar una instrucción, todas las CPU
contienen ciertos registros en su interior para contener las
variables clave y los resultados temporales.
5. Jerarquía de Memoria - Registros del CPU
Están al tope de la jerarquía de memoria de una PC.
Están compuestos del mismo material que la CPU y tienen
la misma rapidez. No hay retraso a la hora de utilizarlos.
La CPU puede acceder a los datos de los registros en 10
picosegundos (0,000.000.000.010 seg) (1 segundo dividido
por 100.000.000.000)
6. Jerarquía de Memoria - Registros del CPU
La capacidad de almacenamiento es generalmente de:
32 x 32 bits en una CPU de 32 bits
64 x 64 bits en una CPU de 64 bits.
Menos de 1 KB en ambos casos.
7. Jerarquía de Memoria - Caché
El siguiente nivel en la jerarquía de memoria es la caché.
Hoy por hoy las CPU tienen hasta 3 niveles de esta
memoria.
Cada nivel de caché es más grande, lenta y barata que la
anterior.
8. Jerarquía de Memoria - Caché
Cuando el programa necesita leer una palabra de memoria,
primero se comprueba si la línea que se requiere se
encuentra en la caché.
Si está (acierto de caché), la petición se cumple y no se pide
a la memoria RAM.
9. Jerarquía de Memoria - Caché
Los aciertos de caché por lo general requieren un tiempo
aproximado de dos ciclos de reloj.
Los fallos de caché obligan a ir a memoria principal, con un
castigo considerable de tiempo.
10. Jerarquía de Memoria - Caché
Caché de nivel 1
Está en el mismo núcleo del procesador, así que es el más
rápido de todos.
Se guardan datos e instrucciones de uso muy frecuente
Su capacidad es de hasta 128 kb
11. Jerarquía de Memoria - Caché
Caché de nivel 2
Es más lenta que la caché L1, pero más rápida que la
memoria RAM.
Se encuentra en el procesador, pero no en su núcleo.
Su capacidad es de hasta 1 Mb.
12. Jerarquía de Memoria - Caché
Caché de nivel 3
Se agiliza el acceso a datos e instrucciones que no fueron
localizadas en L1 o L2.
Es generalmente de un mayor tamaño que la L2 y ayuda a
que el sistema guarde gran cantidad de información
agilizando las tareas del procesador.
13. Jerarquía de Memoria - Caché
Como la idea es poner en las cachés los datos que más se
utilizan o se van a utilizar, la creación de algoritmos de
reemplazo es uno de los problemas que más se piensan
durante la programación de SO.
¿Qué elemento tengo que poner y en qué nivel de caché?
¿Qué elemento saco cuando tengo que poner uno nuevo?
14. Jerarquía de Memoria - Memoria Principal
Es la memoria más grande e importante del sistema
Tiene que dividirse entre todos los programas que están
ejecución por lo que tiene que ser lo más abundante posible
Hoy en día tenemos memorias de hasta 16 Gb
15. Jerarquía de Memoria - Memoria Principal
Cuando el procesador no encuentra un dato en alguna de
las caché, debe ir a buscarlo a la memoria principal
Dependiendo del tipo de memoria y de la velocidad de los
buses del sistema (placa madre) puede demorarse entre 5 y
250 nano segundos (entre 100 y 10000 veces más lento que
el acceso a caché)
16. Jerarquía de Memoria - Memoria Principal
Las principales características de esta memoria son:
Es de acceso aleatorio (acceder a un dato en cualquier
posición requiere el mismo tiempo)
Es volátil, cuando se quita la energía se eliminan los datos
Cada cierto tiempo los capacitores se descargan, por lo que
deben volver a cargarse (refresco)
17. Jerarquía de Memoria - Disco Magnético
Cuando la memoria principal no alcanza para guardar los
datos de todos los programas que se están ejecutando,
debemos utilizar un dispositivo que tenga esa capacidad.
Un disco magnético, es muy barato en relación cantidad a
almacenar, pero es muy lento (0,010 segundos contra
0,000.000.050 segundos)
Intercambio - Memoria Virtual
18. Jerarquía de Memoria - Cinta Magnética
Es el elemento más lento del sistema, pero es, por lejos el
más económico
Para acceder a un elemento guardado en una cinta se debe
debe adelantar o atrasar hasta encontrar el lugar correcto.
19. Administrador de Memoria
Componente del sistema operativo que administra (parte
de) la jerarquía de memoria de una computadora.
Su trabajo es administrar la memoria con eficiencia:
llevar el registro de cuáles partes de la memoria están en
uso
asignar memoria a los procesos cuando la necesiten
desasignarla cuando terminen.
20. Administrador de Memoria
Para poder realizar su trabajo se necesita un cierto grado de
abstracción, y tratar a todos los componentes destinados a
servir como memoria como si fueran uno solo, aunque en
realidad tienen características muy diferentes
21. Cuando no hay abstracción
Los programas acceden directamente a toda la memoria.
Esto crea el problema de que no hay control de dónde se
escriben los datos nuevos
Los programas pueden escribir en zonas donde hay datos
de otros programas, produciéndose un error en la lectura y
la falla de los procesos
23. Cuando no hay abstracción
No es muy fácil ejecutar varios procesos a la vez. Por más
que se encuentre una solución parcial, siempre cabe la
posibilidad de que un error del SW provoque que un
programa quiera utilizar la memoria reservada a otro
proceso (incluso el del Sistema Operativo) lo que provocaría
un error fatal y el cierre de los procesos involucrados
24. Primera Abstracción: Espacio de Direcciones
Crea un tipo de memoria abstracta para que los programas
vivan ahí.
Un espacio de direcciones (address space) es el conjunto
de direcciones que puede utilizar un proceso para
direccionar la memoria y guardar sus datos.
25. Primera Abstracción: Espacio de Direcciones
Cada proceso tiene su propio espacio de direcciones,
independiente de los que pertenecen a otros procesos
(excepto en ciertas circunstancias especiales en donde los
procesos desean compartir sus espacios de direcciones).
Un programa se carga en el primer espacio de memoria
suficientemente grande como para caber entero.
26. Primera Abstracción: Espacio de Direcciones
El primer problema al que se enfrenta el SO es que durante
diferentes ejecuciones el proceso se va a cargar en
diferentes espacios de memoria.
¿cómo hacer para que cuando el programa pida la posición
de memoria x (no cambia de ejecución a ejecución), el SO
entregue la posición correcta y no trate de leer en la
posición física x?
27. Primera Abstracción: Espacio de Direcciones
La solución más sencilla es que junto con el estado del
programa, se creen dos registros:
Base: primer dirección de memoria del proceso
Límite: el tamaño total de la memoria usada por el proceso
28. Primera Abstracción: Espacio de Direcciones
Cuando el proceso pida la posición 28, el SO va a sumar 28
a la base y verificar que el número obtenido no supere al
límite.
Esta solución tiene el problema de que cada vez que se va
a ejecutar dos operaciones, lo que requiere más tiempo de
procesamiento.
29. Segunda Abstracción: Paginación
Otro problema al que nos enfrentamos cuando queremos
cargar varios programas a la vez, se da cuando el programa
no entra completo en un espacio de la memoria.
30. Segunda Abstracción: Paginación
En este caso, pueden ocurrir dos cosas:
● Que queden espacios demasiado pequeños entre
procesos cuando un proceso se quita de la memoria
● Que un proceso sea demasiado grande para la memoria
que queda al final del espacio disponible
31. Segunda Abstracción: Paginación
Un proceso se divide en páginas, todas del mismo tamaño,
excepto la última
La memoria se divide en marcos, con el mismo tamaño que
las páginas en que se dividen los procesos.
Para evitar la fragmentación de la memoria, un proceso se
puede colocar en marcos separados.
32. Segunda Abstracción: Paginación
Supongamos que tenemos cuatro procesos para cargar en
la memoria en diferentes momentos:
Proceso A que se divide en 4 páginas
Proceso B en 3 páginas - Proceso C también 4 páginas
Proceso D utiliza 5 páginas
33. Segunda Abstracción: Paginación
Nuestra memoria dispone de 15 marcos
Si sumamos, 4 + 3 + 4 + 5 = 16 páginas
En un primer momento tenemos cargados los procesos A, B
y C
34. Segunda Abstracción: Paginación
Nuestra memoria dispone de 15 marcos
Si sumamos, 4 + 3 + 4 + 5 = 16 páginas
En un primer momento tenemos cargados
los procesos A, B y C
35. Segunda Abstracción: Paginación
En un segundo momento el proceso B se
envía a disco (se suspende) dejando libres
los tres marcos que estaba utilizando
36. Segunda Abstracción: Paginación
Luego cuando tenemos que cargar el
proceso D
Para ello usamos primero los tres marcos
dejados por B y luego 2 marcos más de los
que están después de C
37. Segunda Abstracción: Paginación
Ahora bien, para poder recuperar una posición de memoria,
ya no nos alcanza con dos registros (Base y límite) como
teníamos, sino que necesitamos algo más complejo.
En concreto el Sistema Operativo guarda una tabla con las
páginas y los marcos de memoria que se utilizan
38. Segunda Abstracción: Paginación
La Gestión de Memoria llevada a cabo por la MMU mediante
el espacio de direcciones y la paginación implica:
1. Todas las referencias a la memoria que se hacen dentro
de un proceso se refieren a direcciones lógicas que
deben ser traducidas a las direcciones físicas durante la
ejecución
39. Segunda Abstracción: Paginación
La Gestión de Memoria llevada a cabo por la MMU mediante
el espacio de direcciones y la paginación implica:
2. Un proceso puede dividirse en varias páginas o
segmentos y estos no tienen por qué estar todos juntos,
ya que se le puede seguir el rastro mediante una tabla
40. Tercera Abstracción: Memoria Virtual
Cuando se inicia un proceso, el sistema operativo carga en
memoria únicamente algunas porciones del programa y de
los datos necesarios para ejecutarlo.
Esta porción se mantiene todo el tiempo en la Memoria
Principal y se denomina “conjunto residente del proceso”.
41. Tercera Abstracción: Memoria Virtual
Mientras las peticiones a memoria se encuentren dentro de
este conjunto residente, el sistema operativo no necesita
traer otras partes del proceso a memoria.
Ese resto está, por ahora, guardado en el disco duro.
El programador y el usuario no tienen por qué saber que
esto es así.
42. Tercera Abstracción: Memoria Virtual
Cuando el procesador encuentra una dirección lógica la
traduce a una dirección física, si resulta que la página donde
está esa dirección lógica no está cargada en memoria
genera una interrupción indicando el fallo de acceso a
memoria.
43. Tercera Abstracción: Memoria Virtual
El sistema operativo bloquea al proceso e inicia una petición
de E/S trayendo los datos desde el disco hacia l memoria
principal.
¿Qué hace el Sistema Operativo luego de bloquear a un
proceso?
44. Tercera Abstracción: Memoria Virtual
Cuando las páginas requeridas ya fueron cargadas en la
memoria principal, se genera una nueva interrupción.
El sistema operativo puede retomar el control, quitar del
procesador al proceso que se estaba ejecutando y volver a
ejecutar al proceso que le faltaban los datos.
45. Tercera Abstracción: Memoria Virtual
Debido a que un proceso ejecuta sólo en la memoria
principal, esta memoria se denomina memoria real.
Pero el programador o el usuario perciben una memoria
potencialmente mucho más grande —la cual se encuentra
localizada en disco. Esta última se denomina memoria
virtual.
46. Tercera Abstracción: Memoria Virtual
La memoria virtual permite una multiprogramación muy
efectiva que libera al usuario de las restricciones
excesivamente fuertes de la memoria principal.
Puede haber más procesos ejecutándose
Un proceso puede ser más grande que la memoria principal
47. Tercera Abstracción: Memoria Virtual
Un posible problema al que hay que estar atentos es que si
tengo muchos procesos en memoria (algunos segmentos de
cada proceso), voy a tener que ir y venir al disco con
demasiada frecuencia y además voy a tener que sacar lo
que considere innecesario para hacer lugar.
¿Qué pasa si saco de la memoria algo que voy a utilizar
enseguida? Que pierdo mucho tiempo en operaciones E/S
48. Tercera Abstracción: Memoria Virtual
Principio de proximidad:
Las referencias al programa y a los datos dentro de un
proceso tienden a agruparse.
Por tanto, se presume que sólo unas pocas porciones del
proceso se necesitarán a lo largo de un periodo de tiempo
corto.
49. Tercera Abstracción: Memoria Virtual
Principio de proximidad:
También, es posible hacer suposiciones inteligentes sobre
cuáles son las porciones del proceso que se necesitarán en
un futuro próximo, para evitar el problema de cargar y
descargar porciones de un proceso en memoria.
50. Tercera Abstracción: Memoria Virtual
Área de Intercambio:
Es el lugar físico que se utiliza para alojar la memoria virtual.
Los sistemas operativos tienen diferentes formas de
establecer una zona exclusiva del disco para la memoria
virtual.
51. Tercera Abstracción: Memoria Virtual
Área de Intercambio - Archivo de Paginación:
Es un archivo de gran tamaño
Forma parte del mismo sistema de archivos
Puede cambiar de tamaño o tener un tamaño fijo
Es fácil crear, borrar o cambiar un archivo
52. Tercera Abstracción: Memoria Virtual
Área de Intercambio - Archivo de Paginación:
Desventajas:
Puede verse afectado por la fragmentación propia de los
archivos comunes
En las particiones pequeñas puede ocupar casi todo el
espacio
53. Tercera Abstracción: Memoria Virtual
Área de Intercambio - Archivo de Paginación:
Es utilizado sobre todo por los sistemas Windows
archivo oculto pagefile.sys (normalmente en C:)
Para configurarlo: Configuración avanzada del sistema ->
Rendimiento -> pestaña Opciones Avanzadas -> Memoria
Virtual
54. Tercera Abstracción: Memoria Virtual
Área de Intercambio - Archivo de Paginación:
Se puede configurar tamaño fijo (normalmente 1 ½ el
tamaño de la memoria RAM)
Se puede configurar un mínimo y un máximo
Se puede configurar que el sistema operativo administre
automáticamente el tamaño
55. Tercera Abstracción: Memoria Virtual
Área de Intercambio - Partición Swap:
En lugar de ocupar espacio en el sistema de archivos, se
crea una partición específica para la memoria virtual
No tiene problema de fragmentación del espacio
Tiene un tamaño fijo (normalmente el doble de la RAM)
Se puede colocar en la zona más rápida del disco (al
principio)
56. Tercera Abstracción: Memoria Virtual
Área de Intercambio - Partición Swap:
Desventajas:
No es tan sencillo particionar un disco
Siempre ocupa el mismo espacio del disco, aunque no
se utilice el 100%
57. Tercera Abstracción: Memoria Virtual
Área de Intercambio - Partición Swap:
Utilizado por los sistemas Unix - Linux
Al momento de instalar el sistema se puede configurar el
tamaño