La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 3. Gestión de Memoria

Presentaciones similares


Presentación del tema: "Tema 3. Gestión de Memoria"— Transcripción de la presentación:

1 Tema 3. Gestión de Memoria
INTRODUCCIÓN SIN INTERCAMBIO NI MEMORIA VIRTUAL (Estático) Monoprogramación Multiprogramación con Particiones Fijas INTERCAMBIO Introducción Particiones Variables Algoritmos de gestión Libre / Ocupado Lista encadenada y Mapa de bits MEMORIA VIRTUAL Paginación Algoritmos de sustitución de páginas Cuestiones de diseño Gestión de Memoria

2 Introducción Cada vez, más memoria, más barata y ocupa menos:
KB pts. PseudoPC 1985 1MB pts. Victory (Unix) PC 1991 8MB pts. MB pts. 128MB pts. MB pts. 512MB pts. MB pts. 1GB pts. Sin embargo, ¡ SIEMPRE AMPLIANDO ! Ley de Parkinson 512K, 640K, 1M, 4M, 8M, 16M, 32M, 64M, 128M MSDOS Win95 WinNT Win00 70MB 120MB 275MB ¿Windows XP? Gestión de Memoria

3 Introducción (objetivos)
Memoria: Recurso escaso y compartido (Multiprogramación) Poca memoria para los muchos procesos que quieren ejecutarse P1 P2 P3 P6 P5 P4 ? Memoria Principal OBJETIVOS Gestión eficiente Secundaria Principal Caché Física Proteger Compartir Organización eficiente Reubicación de procesos lineal segmentada Lógica Gestión de Memoria

4 Introducción (¿Proceso en memoria?)
Programa Fuente 1 Program principal; var Vector1: array [0..$FFF] of byte := (23,43,…,53); Vector2: array [0..$4FF] of byte; begin ... if Vector1[0] = Vector2[0] then Subrutina; end. $5000 … $5030 cmp $9000,$A000 $5036 bnz $503E $503A bsr $5200 $503E … $5200 (codigo de subrutina) $9000 (valores de vector1) $A000 (valores de vector2) Proceso Código máquina Compilador Programa Objeto 1 Programa Objeto n Objeto 2 Enlazador Fichero Ejecutable ? Cargador Gestión de Memoria

5 Introducción (¿Formato de un fichero ejecutable?)
Nº mágico CP inicial Tabla secciones Código máquina Variables inicializadas ..... Otras secciones Tabla símbolos (depurador) $0000 $1000 $5000 $8000 Fichero ejecutable  UNIX Secciones Cabecera Código Var. Inic. Var. No Inic. Tabla Símbolos Inicio Tamaño $1000 $5000 $8000 $4000 $500 $2000 Var. No Inic. ¡ Algunas secciones no ocupan espacio en el fichero ejecutable y sí en memoria ! Gestión de Memoria

6 Introducción (¿Imagen de un proceso en memoria?)
Nº mágico CP inicial Tabla secciones Código máquina Variables inicializadas ..... Otras secciones Tabla símbolos (depurador) $0000 $1000 $5000 $8000 Fichero ejecutable  UNIX Código máquina Variables inicializadas Variables no Memo. Dinámica Pila $5000 $0000 $4000 $5500 Imagen de un proceso $xxxx $0000 Memoria S.O. P1 P2 P4 ? $yyyy Pn “0” pc sp ... CPU P1 sp ... P4 Pn Gestión de Memoria

7 Introducción (modelo estático vs dinámico)
M.P. M.P. M.P. Pi exec ¡ Reubicar ! Pi Pi exec exit exit Pi Pi Pi se ejecuta en la misma zona de memoria desde que se crea hasta que termina Pi puede ir cambiando en su totalidad de zona de memoria Intercambio Pi puede ir cambiando por trozos de zona de memoria Memoria Virtual Gestión de Memoria

8 Cargar y depurar programas
Monoprogramación Máquina desnuda con monitor Monitor “Primeras máquinas” “Prácticas de arquitectura” RS232 Cargar y depurar programas Programa de usuario + drivers “Sistemas empotrados” Máquina con S.O. (MSDOS) IPL + drivers FFFFF 00000 ROM RAM ? Word S.O. + drivers RAM Word S.O. + drivers RAM ROM ? Word Power Point Excel S.O. Gestión de Memoria

9 Multiprogramación ( Particiones Fijas )
Se trocea la M.P. libre para procesos de usuario en particiones fijas, de diversos tamaños y reconfigurable sólo en arranque S.O. 300K 200K 100K S.O. 600K 250K 50K ? 320K 115K Estático “En arranque” CUESTIONES DE DISEÑO ¿Cuántas particiones? ¿De qué tamaño? Reubicación Protección ¿Planificación? Tabla de particiones Tamaño y Libre / Ocupada Cola/s de procesos entrantes Gestión de Memoria

10 Particiones Fijas ( ¿Cuántas particiones? )
Aprovechar UCP  Índice / Nivel de multiprogramación % de uso de la UCP Nivel de Multipro-gramación 100 80 60 40 20 ¿Caracterización de los procesos? ¡ Ojo ! Aprovechar la UCP al 100% no es el único objetivo 20% de su tiempo hacen E/S 50% de su tiempo hacen E/S 80% de su tiempo hacen E/S Usuarios interactivos Gestión de Memoria

11 Particiones Fijas ( ¿De qué tamaño? )
Intentar aprovechar la memoria al máximo (ocupada al 100% por Pi) GRANDES S.O. 300K Fragmentación interna 200K 50K 40K P200K no puede ejecutarse pese a haber 510K sin usar PEQUEÑAS S.O. 250K 50K 200K 60K 50K 40K P60K no puede ejecutarse pese a haber 5 particiones libres Fragmentación externa Gestión de Memoria

12 Particiones Fijas ( Planificación )
COLAS MÚLTIPLES / SEPARADAS F 125 D 150 Entra un Proceso Cola de la partición “Mejor Ajuste” 200K Se libera P400K  Partición grande libre y 6 procesos bloqueados 400K 350K Sale un Proceso P100K ¿Quién entra? A 250 80K 300K E 90 C 80 B 70 FIFO B Más grande E Más corto C 110 5 15 Tiempos 100K S.O. ¿Particiones de igual tamaño?  Equilibrar la carga Gestión de Memoria

13 Particiones Fijas ( Planificación )
COLA ÚNICA Entra un Proceso Partición para él o Se encola Sale un Proceso P200K ¿Quién entra? 200K B 70 C 80 D 150 F 90 E 125 4 110 25 5 15 3 400K A 250 300K FIFO B Más grande D Más corto F Tiempos 100K S.O. Más complejo y lento Mejor aprovechamiento de UCP y memoria Puede que injusticia: grandes vs pequeños Gestión de Memoria

14 Particiones Fijas ( Reubicación )
S.O. A 250 128K 512K 256K 100K Programa  Partición ¡No siempre la misma! IF A >= 0 THEN A := A-1 ELSE A := A+1 TST R0 JMI ELSE SUB #1,R0 JMP NEXT ELSE ADD #1,R0 NEXT ? 00000 00050 TST R0 00052 JMI 00060 00058 SUB #1,R0 0005A JMP 00062 00060 ADD #1,R0 00062 ¿Direcciones Absolutas? Problemas Gestión de Memoria

15 Particiones Fijas ( Reubicación )
SOLUCIONES ? S.O. 20000 20050 TST R0 20052 JMI 00060 20058 SUB #1,R0 2005A JMP 00062 20060 ADD #1,R0 20062 Reubicar al cargar (reubicación estática) Direcciones Absolutas Dirección de carga 20060 20062 Reubicación dinámica  Registro de Reubicación 20000 00060 dv + 20060 dr Código reubicable JMI 8(PC) Gestión de Memoria

16 Particiones Fijas ( Protección )
Controlar accesos de Pi fuera de su zona S.O. 20000 20050 TST R0 20052 JMI 00060 20058 SUB #1,R0 2005A JMP 00062 20060 ADD #1,R0 20062 5FC00 00060 dv + 20060 dr Registro de Reubicación (Registro Base) 20000 5FC00 No direccionable? SI dr>RL Excepción Gestión de Memoria

17 Intercambio ( Introducción )
Dos grandes problemas de las particiones fijas sin intercambio: Muchos procesos interactivos y poca memoria para ellos ¿Cómo gestionar la memoria dinámica de los procesos? 20 usuarios desean usar editor 1MB ? S.O. 16 particiones de 1MB S.O. P1 P2 P16 P17 P18 P19 P20 P1 P19 Máximo 16 procesos 4 try later ¡ Eficiente si no hay trasiego ! Ampliar la M.P. con más particiones en disco ¿Una solución? Gestión de Memoria

18 Intercambio ( Introducción )
S.O. P2 P16 P17 P18 P20 P1 P19 ? Algunas cuestiones: ¿ Cuándo intercambiar ? ¿ Quién por quién ? ¿ Coste del intercambio ? Word  Excel ¡ mseg ! Gestión de Memoria

19 Intercambio ( Introducción )
Dos grandes problemas de las particiones fijas sin intercambio: Muchos procesos interactivos y poca memoria para ellos ¿Cómo gestionar la memoria dinámica de los procesos? P1 300 S.O. 300K 200K 100K 300 250 200 150 100 ti tf K ¿Por qué P1 pide 300K? P200K P100K Particiones Fijas Partición de 300K ¿ Intercambio ? P300K P100K ¿Qué estructura tiene la memoria dinámica de un Pi? Gestión de Memoria

20 Intercambio ( Introducción )
Componentes de MP de un Pi Código Pila Datos Fijo Varía (bsr y rts) Varía (new y dispose) S.O. $00000 400K 50K 300K $FFFFF Necesita 325K y le doy 400K (crecer) 200K (C) + 75K (D) + 50K (P) Pila Código Datos Pila Código Datos 25K 50K ? Pila Código Datos 200K Dos zonas no contiguas ? Pila Código Datos Fragmentación Protección Gestión de Memoria

21 Particiones Variables
Asignar a cada proceso sólo la memoria que necesita S.O. 800 224 C 200 B 100 300 S.O. D C 200 B 100 150 S.O. D C 200 150 S.O. 250 D C S.O. E C 200 B 100 400 A 300 500 B A A300K B100K C200K Fragmentación externa D150K E225K ¿ Solución ? E esperando Gestión de Memoria

22 Particiones Variables (Compactación)
Siempre un único hueco con toda la memoria libre E D C 200 225 B 100 150 S.O. 125 S.O. 800 224 C 200 B 100 500 Compactar C 200 B 100 300 D C 200 350 B 100 150 S.O. E D C S.O. 225 C 200 B 100 400 A 300 500 A B S.O. A300K B100K C200K D150K E225K Compactar ¿ Siempre ? ¿ De vez en cuando ? ¿ Cuándo ? Costoso en tiempo Gestión de huecos Gestión de Memoria

23 Algoritmos de gestión trozos (Lista Encadenada)
Lista encadenada: distribuida vs centralizada Ordenada por direcciones y de cada trozo saber (al menos): Tipo (Libre/Ocupado); Tamaño S.O. P1 P2 P3 P4 P5 P1 Ocupado 5MB Libre 6MB Libre 4MB Gestión de Memoria

24 Algoritmos de gestión trozos (Lista Encadenada)
Lista encadenada: distribuida vs centralizada 64MB 20 5 6 4 13 12 S.O. P1 P3 P5 Ocupado $ $ dirTrozo Tipo Tamaño Sig P1 ¿Lista dinámica? => Array estático => ¿Tamaño? La memoria se da a trozos (sean de 4KB) P 00500 01400 H 00600 01900 00400 01F00 00D00 02300 00C00 03000 03C00 Libre $ $ Ocupado $ $01F0 0000 $00D0 0000 $ $03C0 0000 $00C0 0000 $ P3 P5 Gestión de Memoria

25 Algoritmos de gestión trozos (Liberación de Memoria)
Lista encadenada: Supongamos que termina un proceso (sea P2) Hay que tener en cuenta cuatro situaciones: P1 P2 P3 P1 P3 P1 P2 P1 P2 P3 P3 P2 ¡ Fusionar !  Ventaja de tener la lista ordenada (contigüidad) Conveniencia de tener la lista doblemente enlazada Gestión de Memoria

26 Algoritmos de gestión trozos (Asignación de Memoria)
Lista encadenada: Asignación de memoria First Fit “Primero en donde quepa” Next Fit “Siguiente donde quepa” Best Fit “Donde quepa mejor” Muchos huecos inútiles (demasiado pequeños) ¡ Recorrer toda la lista ! Worst Fit “Donde quepa peor” Liberación ineficiente ¿ Cómo acelerar la asignación ? Lista de procesos por un lado y de huecos por otro Ya lo tenemos [descriptores de procesos] Ordenados por tamaño First = Best ¿Next? Quick Fit “Donde quepa antes” Gestión de Memoria

27 Algoritmos de gestión trozos (First Fit)
FIRST FIT “Primero en donde quepa” P P P’ P’ Muchos huecos pequeños al principio y uno grande al final: Ejemplo: [Fork(P20K)]8 + [Exit(P20K) + Fork(P18K)]8 + Fork(P15K) P P P P P P P P P P’ ¡ Siempre recorriendo el principio ! P’ Gestión de Memoria

28 Algoritmos de gestión trozos (Next Fit)
NEXT FIT “Siguiente donde quepa” Ejemplo: [Fork(P20K)]8 + [Exit(P20K) + Fork(P18K)]8 + Fork(P15K) Inicio de búsqueda del siguiente hueco P P P P P P P P P P P ¿Pi grande? Fragmentación externa P P P P P P P ! Huecos dispersos de tamaño moderado ! Gestión de Memoria

29 Algoritmos de gestión trozos (Quick Fit)
QUICK FIT “Donde quepa antes” Idea: Varias listas que agrupan bloques de tamaño similar 64K 128K 256K 512K 1M 2M 4M Enormes 16 32 40 52 65 112 280 300 360 400 800 3 3,5 3,8 P310 P220 P500 P900 ¡ Todavía puede mejorarse tanto la asignación como la liberación ! Sistema Buddy (Compañeros) Gestión de Memoria

30 Algoritmos de gestión trozos (Mapa de Bits)
S.O. ¡Doy memoria a trozos! 64MB Asignación a golpe de 4K (granularidad) 1 ocupado libre Se le dan 12K (3 trozos) Pi Pj Pk Fragmentación Interna ¿Tamaño del Mapa de Bits? Lista Encadenada ? 64MB/4KB = 16Kbits => 2KB ¿Liberación de memoria? Pi pide 10K ¿Asignación de memoria? First, Next, Best, Worst => Viables Quick, Buddy => Inviables ¡ No hay información explícita de tamaños ! Gestión de Memoria

31 Paginación PROBLEMÁTICA DEL INTERCAMBIO ARQUITECTURA SUBYACENTE
TRADUCCIÓN DE DIRECCIONES UBICACIÓN DE LA TABLA DE PÁGINAS UNO O VARIOS ESPACIOS DE D.V. TRATAMIENTO DE FALTA DE PÁGINA Gestión de Memoria

32 Paginación ( Problemática del Intercambio )
Exigir que un Pi esté entero en M.P. para poder ejecutarse ¿Su gran restricción? Un Pi más grande que la M.P. no podrá ejecutarse Si {Procesos preparados} aumenta, no cabe en M.P.  Trasiego El intercambio Disco  M.P. es mucho (dos procesos enteros) ? M.P. Overlays (solapamientos) Trocear Compilador: 1 Análisis léxico 2 Análisis sintáctico 3 Análisis semántico 4 Generación de código ¿Solución general? Gestión de Memoria

33 Paginación ( Problemática del Intercambio )
Solución  Darle al usuario la sensación de tener una M.P. enorme El Pentium 4 (32 bits de direcciones)  4GB Un PC medio dispone tan sólo de  512MB 8 veces menos M.P. Espacio de dir. del P 4 Espacio de Direcciones Reales del PC Teóricamente podemos escribir programas pensando en el Pentium 4 y 4GB M.V. M.P. Tendremos una Memoria Virtual de 4GB y mis programas se ejecutan aunque tenga menos Memoria Principal (512MB) siempre que quepan en la memoria virtual. M.P. ¿ Cómo funciona todo esto ? Arquitectura subyacente Gestión de Memoria

34 Paginación ( Arquitectura Subyacente )
CPU dv Bus Datos MEMORIA VIRTUAL M.P. M.V. ¡ No caben ! Principio de localidad: Meto en M.P. los trozos que hagan falta para ejecutar Pr y Pv La Memoria Virtual reside físicamente en memoria secundaria Gestión de Memoria

35 Paginación ( Arquitectura Subyacente )
CPU dv Bus Datos M.P. M.V. La M.P. se divide en marcos La M.V. se divide en páginas (1000B?) 1 2 3 5 6 7 8 9 dr Traducir dvdr 3000 8 6 MMU ¿Cachés? 2 6000 7500 9 S.O. ? 9500 fallo Gestión de Memoria

36 Paginación ( Arquitectura Subyacente )
Resumiendo: M.V. en disco y gestionado como un sistema de particiones variables (los trozos “granularidad” de M.V. son páginas) Las páginas de M.V. necesarias para que se ejecute un Pi están en la M.P. en uno cualquiera de sus marcos ¡ Principio de localidad espacial y temporal ! Función de traducción (dv  dr) implementada en Hw ¡ MMU interna vs externa ! Las páginas se intercambian MV  MP (Falta de Página) gracias a la intervención del S.O. ¿ Cómo hacer la traducción dv  dr ? Gestión de Memoria

37 Paginación ( Traducción de direcciones )
M.P. F.T. M.V. 1 8 2 6 3 ? 2 5 6 9 7 8 ¿ Qué páginas están cargadas y dónde ? 9 Gestión de Memoria

38 Paginación ( Traducción de direcciones “decimal” )
M.V. de 16MB M.P. de 1MB Páginas de 4KB ¿ # páginas ? ¿ # marcos ?  4096  256 M.P. 4095 4096 8191 1 2 8192 12287 255 M.V. 4095 4096 8191 1 2 8192 12287 Página 2 en Marco 1 (4096) 4096 1 MMU 4096 8192 8191 12287 7189 11285 2 3093 11285 4096 + 7189 Gestión de Memoria

39 Paginación ( Traducción de direcciones “binario” )
M.V. de 16MB M.P. de 1MB Páginas de 4KB ¿ # bits dv ? ¿ # bits dr ?  24  20 12 bits M.P. 4095 4096 8191 8192 12287 dr  Marco Offset 8 12 M.V. 4095 4096 8191 8192 12287 dv  Página Offset 12 Gestión de Memoria

40 Paginación ( Traducción de direcciones “hexadecimal” )
1 2 3 4 5 6 7 8 9 A FFF Tabla de páginas M.P. 2 8 9 6 00 000 00 FFF HH HHH MAR OFF 02 000 02 FFF FF 000 FF FFF M.V. 1 2 3 5 6 7 8 9 000 FFF HHH HHH PAG OFF 008 FFF FFF 000 FFF FFF Presente Marco 008 51A P 02 02 51A Gestión de Memoria

41 Paginación ( Ubicación de la Tabla de Páginas )
Toda la T.P. en M.P. M.P. Tabla de Páginas MMU CPU Toda la T.P. en la M.M.U. M.P. T.P. CPU MMU Se lee el descriptor dr dr Se lee el dato (Caché | M.P.) dato dv dato dv PDP11 8 páginas de 8K ¿Viable en el 80486? 1M páginas 4K ¡ Intolerable por lento ! ¡ Intolerable por caro ! Gestión de Memoria

42 Paginación ( Tabla de Páginas “M.P. + caché” )
Toda la T.P. en M.P. + una caché de la T.P. en la MMU MMU 009 FF 006 63 000 40 008 52 002 A3 caché Página Marco Cachés de entradas M.P. Tabla de Páginas dato 1M entradas RBTP ¡ Tasas de acierto del 98% ! 52 51A dr 008 51A dv ¿ Fallo de Caché ? Gestión de Memoria

43 Paginación ( Tabla de Páginas “Fallo caché” )
M.P. dv 003 A28 T.P. MMU 1 2 3 4 4095 10 000 10 004 10 008 10 00C 10 010 13 FF0 13 FF4 13 FF8 13 FFC 10000  (003*4) P 84 003 84 ¿ Caché llena ? TLB 030 07 15F 42 A32 54 573 15 FFE 01 B00 AB 004 C2 ¿ Página no presente ? !Algunos P por Software! F.P. dr 84 A28 Gestión de Memoria

44 Paginación ( Tabla de Páginas “multinivel” )
Ejercicio 2 – 4 Mb (210*212=22*220) Texto Datos Stack Gap Evita mantener todas las tablas de páginas en memoria Gestión de Memoria

45 Paginación ( Tabla de Páginas “invertida” )
M.V. M.P. 1 2 3 5 6 7 8 9 F.T. Bastaría con una caché con tantas entradas como marcos ¿ Seguro ? Descriptor de página  P Marco caché ?? Sigue siendo necesaria una T.P. completa (MP / MV) Gestión de Memoria

46 Paginación ( Tabla de Páginas “descriptor” )
Aspecto de un descriptor de página P B R M C L E J MARCO PRESENTE Permisos: LECTURA BLOQUEADA ESCRITURA REFERENCIADA EJECUCIÓN MODIFICADA CACHE (Si/No) ¿ Dirección en disco ? Un disco entero, o varios, o una parte de uno, para la M.V. Un fichero especial “pagefile.sys” innecesario Gestión de Memoria

47 Paginación ( Uno o varios espacios de dv )
Un único espacio de direcciones virtuales para todos los procesos P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 M.V. FT M4 M5 M6 M7 M.P. M0 M1 M2 M3 Una única T.P. Global Reubicación: Carga Registro Reubicación ¿ Cómo crece un Pi ? Muy problemático Se adapta bien a tener un disco con n*sector = página Eficiencia P1 P2 P3 Ver ejercicio 3 20/6/00 Gestión de Memoria

48 Paginación ( Uno o varios espacios de dv )
Un espacio de direcciones virtuales para cada proceso M.V.(P1) FT(P1) P0 P1 P2 P3 M4 M5 M6 M7 M.P. M0 M1 M2 M3 En la MMU, las dv se prefijan por un identificador de proceso (complejidad) Una T.P. por proceso Reubicación innecesaria ¿ Fácil crecer ? Se adapta bien a tener un fichero por Pi (ineficiente) P0 P1 P2 P3 P4 P5 P0 P1 P2 P3 Gestión de Memoria

49 Paginación ( Tratamiento de Falta de Página )
¿Cuántas Faltas de Página puede generar una instrucción? move D0,$0045FB clr $0003FA M.V. $002FFA CPU PC M.P. $003000 ? Extraer instrucción  Leer dv $  F.P. Decodificarla Ejecutarla  Escribir dv $0045FB  F.P. Una instrucción, 0, 1, 2 o más F.P. Gestión de Memoria

50 Paginación ( Tratamiento de Falta de Página )
El tratamiento de F.P. recae en el S.O. M.P. 2 8 9 6 (I) Hay marco libre M.V. 1 3 5 7 ? Política de ubicación simple: uno cualquiera (II) No hay marco libre Política de sustitución no tan simple Gestión de Memoria

51 Paginación ( Tratamiento de Falta de Página “II” )
0000 3 ¿Víctima  2 ? 1 5 0FA3 2 2 S.O. M.V. 1 2 3 5 6 7 8 9 mov C,D M.P. 4 M Marco P 5 9 1 5 mov C,D 6 8 4 0FA3 7 mov C,D 9 10 3  Seleccionar víctima, tocar TP y arrancar E/S ¡ Sólo si sucia ! 4  Salvando (DMA) página sucia en disco 5  Fin E/S. Página 2 salvada. Marco 5 libre. 1 ¿ Quién actualiza la caché ? Gestión de Memoria

52 Paginación ( Tratamiento de Falta de Página “II” )
Resumiendo: 1  Referencia a página no cargada en M.P. 2  Excepción BERR y se bloquea al proceso 3  Seleccionar víctima, tocar TP y arrancar E/S ¡ Sólo si sucia ! 4  Salvando (DMA) página sucia en disco 5  Fin E/S. Página 2 salvada. Marco 5 libre. 6  Arrancar E/S para cargar Página 9 en Marco 5. 7  Transferencia DMA discoMP. CPU para otro Pi 8  Fin E/S. Página 9 cargada en Marco 5. P  Preparado 9  Actualizar TP 10  Rearrancar “Mov C,D” cuando preparado  UCP ¿O continuar? Gestión de Memoria

53 Paginación ( Algoritmos de sustitución de páginas )
OBJETIVO: Minimizar el número de Faltas de Página (F.P.) Accesos:{ $001000, $0043FA, $001002, $006400, $001006, $006402, $006406, $006408, $001008, $00640A, $00100A, $00100E, $00640E, $ } { .. 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1, ..} Serie de Referencia Sean dos marcos M0 M1 F.P. 3 Un solo marco ? F.P. 1 1 4 1 6 11 Margen para la mejora Algoritmos 3 o más marcos ? F.P. ¿Cuantos más marcos mejor? M0 M1 1 4 6 3 M0 M1 1 4 6 10 Gestión de Memoria

54 Paginación ( Algoritmos de sustitución de páginas )
IDEAL Más tiempo tarde en volver a ser referenciada NRU No utilizada recientemente FIFO Más tiempo lleva en Memoria Principal LRU Menos recientemente usada 2nd Chance Segunda oportunidad RELOJ FIFO + LRU ¡ El mismo ! {7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1} Serie de Referencia Gestión de Memoria

55 Paginación ( Algoritmos de sustitución de páginas )
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 IDEAL FIFO LRU RELOJ FP 7 1 2 3 4 9 7 1 2 3 4 15 7 1 2 3 4 12 7 1 2 3 4 14 Gestión de Memoria

56 Paginación (Cuestiones de diseño: conjunto de trabajo)
¿Qué hacer cuando un proceso pasa a ejecución? Prealimentación Se arranca la carga del conjunto de trabajo del proceso. “Páginas usadas más recientemente” Carga por Demanda Se van cargando las páginas que el proceso vaya necesitando 2,6,1,5,7,7,7,7,5,1,6,2,3,4,1,2,3,4,4,4,4,3,4,3,4,4,4,1,3,2,3,4,4,1,3 Muchas F.P. evitables CT(t2, 10) = t2 {3,4} t1 CT(t1, 10) = {1,2,5,6,7} Gestión de Memoria

57 Paginación ( Cuestiones de diseño: trasiego )
¿Más Procesos? =>  CT mayor que MP => Trasiego Páginas = 20 CT = 7 MV MP  Páginas = 26 CT = 11 MP MV Cabe en MP No cabe en MP ¿Tamaño de página? 2n => 512B .. 4/8KB y aumentando ¡Superpáginas! ¿Grandes? Más Fragmentación Interna Mejor rendimiento E/S ¿Pequeñas? Mejor ajuste de localidad Más ineficiencia de E/S Gestión de Memoria

58 Paginación ( Cuestiones de diseño: otras )
Asignación local frente a global PFF Pi Pj Control de carga FIN Gestión de Memoria


Descargar ppt "Tema 3. Gestión de Memoria"

Presentaciones similares


Anuncios Google