Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSusana Márquez Duarte Modificado hace 10 años
1
Gestión de Procesos1 Horas 1INTRODUCCIÓN5 2PROCESOS Y THREADS11 3GESTIÓN DE MEMORIA7 4ENTRADA/SALIDA2 5SISTEMA DE FICHEROS5 sisOpeTemarioCurso: 14/15
2
Gestión de Memoria2 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 Recordatorio + …
3
Gestión de Memoria3 Introducción Cada vez, más memoria, más barata y ocupa menos: 198216KB16.000 pts.PseudoPC 19851MB500.000 pts.Victory (Unix) PC 19918MB77.500 pts. 199864MB17.900 pts.128MB51.900 pts. 2005512MB57 €.1GB180 €. 20134GB48 €.8GB92 €. Sin embargo,¡ SIEMPRE AMPLIANDO ! 512K, 640K, 1M, 4M, 8M, 16M, 32M, 64M, 128M MSDOSWin95WinNTWin00 70MB120MB275MB Ley de Parkinson ¿Windows 7 64 ? 2GB + 20GB
4
Gestión de Memoria4 Introducción (objetivos) Memoria: Recurso escaso y compartido (Multiprogramación) Poca memoria para los muchos procesos que quieren ejecutarse Proteger Compartir Organización eficiente Reubicación de procesos Memoria Principal P1 P2 P3 P6 P5 P4 OBJETIVOS Gestión eficiente Lógica Secundaria Principal Caché Física segmentadalineal ?
5
Gestión de Memoria5 Introducción (objetivos) Jerarquía de Memoria: Capacidad y Tiempos 5ª Ed Computer Architecture … Hennessy & Patterson - 2011
6
Gestión de Memoria6 Introducción (¿Proceso en memoria?) Programa Objeto n Programa Objeto 2 Compilador Programa Objeto 1 Enlazador Fichero Ejecutable Cargador 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… $5030cmp $9000,$A000 $5036bnz $503E $503Absr $5200 $503E… $5200(codigo de subrutina) … $9000(valores de vector1) … $A000(valores de vector2) … Proceso Código máquina ¿ ?
7
Gestión de Memoria7 Introducción (¿Formato de un fichero ejecutable?) Código Var. Inic. Var. No Inic. --------------- Tabla Símbolos InicioTamaño $1000 $5000 $8000 ------- $4000 $1000 $500 ------- $2000 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 Var. No Inic. ¡ Algunas secciones no ocupan espacio en el fichero ejecutable y sí en memoria ! Secciones Cabecera #file miabuelo miabuelo: MINIX-PC 32-bit executable $file barreraArbol barreraArbol: ELF 64-bit LSB executable, x86-64
8
Gestión de Memoria8 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 inicializadas Memo. Dinámica Pila $5000 $0000 $4000 $5500 Imagen de un proceso $xxxx “0” $0000 Memoria S.O. P1 P2 P4 ? $yyyy Pn pc sp... CPU P1 sp... P4 sp... Pn sp...
9
Gestión de Memoria9 M.P. Introducción (modelo estático vs dinámico) Pi exec Pi se ejecuta en la misma zona de memoria desde que se crea hasta que termina M.P. Pi exec exit Pi exit Pi puede ir cambiando en su totalidad de zona de memoria Intercambio M.P. Pi puede ir cambiando por trozos de zona de memoria Memoria Virtual ¡ Reubicar !
10
Gestión de Memoria10 Máquina con S.O. (MSDOS) IPL + drivers FFFFF 00000 ROM RAM Monitor “Primeras máquinas” Monoprogramación Máquina desnuda con monitor Cargar y depurar programas Programa de usuario + drivers “Sistemas empotrados” S.O. Power Point Excel Word S.O. + drivers RAM ? Word S.O. + drivers RAM ROM ? “Prácticas de arquitectura” RS232
11
Gestión de Memoria11 Estático “En arranque” 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 115K ? 320K S.O. 600K 250K 50K 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
12
Gestión de Memoria12 Particiones Fijas ( ¿Cuántas particiones? ) Aprovechar UCP Índice / Nivel de multiprogramación % de uso de la UCP Nivel de Multipro- gramación 1 2 3 4 5 6 7 8 9 10 100 80 60 40 20 50% de su tiempo hacen E/S ¿Caracterización de los procesos? 80% de su tiempo hacen E/S 20% de su tiempo hacen E/S ¡ Ojo ! Aprovechar la UCP al 100% no es el único objetivo Usuarios interactivos
13
Gestión de Memoria13 Particiones Fijas ( ¿De qué tamaño? ) Intentar aprovechar la memoria al máximo (ocupada al 100% por Pi) GRANDES S.O. 300K 50K Fragmentación interna 40K 200K P 200K no puede ejecutarse pese a haber 510K sin usar PEQUEÑAS S.O. 250K 50K 40K 200K 60K P 60K no puede ejecutarse pese a haber 5 particiones libres Fragmentación externa
14
Gestión de Memoria14 Particiones Fijas ( Planificación ) COLAS MÚLTIPLES / SEPARADAS S.O. 200K 400K 300K 100K 350K 80K Entra un Proceso Cola de la partición “Mejor Ajuste” A 250 B 70 C 80 D 150 E 90 F 125 Sale un Proceso P 100K ¿Quién entra? FIFOB Más grandeE Más cortoC 110515 Tiempos Se libera P 400K Partición grande libre y 6 procesos bloqueados ¿Particiones de igual tamaño? Equilibrar la carga
15
Gestión de Memoria15 Particiones Fijas ( Planificación ) COLA ÚNICA S.O. 200K 400K 300K 100K Entra un Proceso Partición para él o Se encola A 250 Sale un Proceso P 200K ¿Quién entra? B 70 C 80 D 150 F 90 E 125 4 11025 5 153 FIFOB Más grandeD Más cortoF Tiempos Más complejo y lento Mejor aprovechamiento de UCP y memoria Puede que injusticia: grandes vs pequeños
16
Gestión de Memoria16 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 ¿Direcciones Absolutas? TSTR0 JMIELSE SUB#1,R0 JMPNEXT ELSEADD#1,R0 NEXT 00000 00050TSTR0 00052JMI00060 00058SUB#1,R0 0005AJMP00062 00060ADD#1,R0 00062 ? Problemas
17
Gestión de Memoria17 Particiones Fijas ( Reubicación ) S.O. 20000 20050TSTR0 20052JMI00060 20058SUB#1,R0 2005AJMP00062 20060ADD#1,R0 20062 ? a)Reubicar al cargar (reubicación estática) +20000 Direcciones Absolutas Dirección de carga 20060 20062 b)Reubicación dinámica Registro de Reubicación 20000 00060 dv +20060 dr c)Código reubicable JMI 8(PC) SOLUCIONES
18
Gestión de Memoria18 Particiones Fijas ( Protección ) S.O. 20000 20050TSTR0 20052JMI00060 20058SUB#1,R0 2005AJMP00062 20060ADD#1,R0 20062........... 5FC00 Controlar accesos de Pi fuera de su zona 20000 5FC00 00060 dv +20060 dr Registro de Reubicación (Registro Base) No direccionable? SI dr>RL Excepción rpAux = rpAux->p_nextready
19
Gestión de Memoria19 Intercambio ( Introducción ) Dos grandes problemas de las particiones fijas sin intercambio: AMuchos procesos interactivos y poca memoria para ellos B¿Cómo gestionar la memoria dinámica de los procesos? 20 usuarios desean usar editor 1MB S.O. 16 particiones de 1MB Máximo 16 procesos 4 try later ¿Una solución? ? Ampliar la M.P. con más particiones en disco S.O. P1 P2 P16 P17 P18 P19 P20 P1 P19 ¡ Eficiente si no hay trasiego !
20
hdparm –tT /dev/sda1 128MB/s Gestión de Memoria20 Intercambio ( Introducción ) ¿ Cuándo intercambiar ? S.O. P2 P16 P17 P18 P20 P1 P19 ? Algunas cuestiones: ¿ Quién por quién ? ¿ Coste del intercambio ? Word Excel ¡ (20 + 30) MB … !
21
Gestión de Memoria21 Intercambio ( Introducción ) Dos grandes problemas de las particiones fijas sin intercambio: AMuchos procesos interactivos y poca memoria para ellos B¿Cómo gestionar la memoria dinámica de los procesos? S.O. 300K 200K 100K P1 300 ¿Por qué P1 pide 300K? 300 250 200 150 100 titf K Particiones FijasPartición de 300K ¿ Intercambio ? P 100K P 200K P 300K P 100K ¿Qué estructura tiene la memoria dinámica de un Pi?
22
Gestión de Memoria22 Intercambio ( Introducción ) Componentes de MP de un Pi Código Pila Datos Fijo Varía (bsr y rts) Varía (new y dispose) Necesita 325K y le doy 400K (crecer) 200K (C) + 75K (D) + 50K (P) Pila Código Datos 25K 50K ? S.O. $00000 400K 50K 300K $FFFFF Pila Código Datos Pila Código Datos Fragmentación Protección Pila Código Datos 200K Dos zonas no contiguas ?
23
Gestión de Memoria23 Particiones Variables Asignar a cada proceso sólo la memoria que necesita S.O. 800 224 A 300K A 300 500 B 100K B 100 400 C 200K C 200 A C B 100 300 S.O. D 150K D C 200 B 100 150 S.O. 150 E 225K B D C 200 150 S.O. 250 D C S.O. E Fragmentación externa E esperando ¿ Solución ? blockdev –getbsz /dev/sda1
24
Gestión de Memoria24 Particiones Variables (Compactación) Siempre un único hueco con toda la memoria libre S.O. 800 224 A 300K A 300 500 B 100K B 100 400 C 200K C 200 A C B 100 300 S.O. D 150K D C 200 350 B 100 150 S.O. E 225K B E D C 200 225 B 100 150 S.O. 125 E D C S.O. 225 C 200 B 100 500 Compactar Costoso en tiempo ¿ Siempre ? ¿ De vez en cuando ? ¿ Cuándo ? Gestión de huecos
25
Gestión de Memoria25 S.O. P1P3P5P2P4 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 P1 Ocupado 5MB Libre 6MB Libre 4MB ¿Separar en 2 listas? Huecos Procesos
26
Gestión de Memoria26 S.O. Algoritmos de gestión trozos (Lista Encadenada) P1P3P5 Lista encadenada: distribuida vs centralizada 64MB 2056413124 Ocupado $0050 0000 $0140 0000 dirTrozo Tipo Tamaño Sig P1 Libre $0060 0000 $0190 0000 Ocupado $0040 0000 $01F0 0000 Libre $00D0 0000 $0230 0000 Libre $0040 0000 $03C0 0000 Ocupado $00C0 0000 $0300 0000 P3P5 ¿Lista dinámica? => Array estático => ¿Tamaño? La memoria se da a trozos (sean de 4KB) P 00500 01400 H 00600 01900 P 00400 01F00 H 00D00 02300 P 00C00 03000 H 00400 03C00
27
Gestión de Memoria27 S.O. Algoritmos de gestión trozos (Lista encadenada) 0100049999 1000 H 49000 DDDDD 0 1 2 3 4 N dirTrozo Tipo Tamaño Sig P 1.12000 P1P1 1000 P 12000 1 13000 H 37000 DDDD P 2.8000 P2P2 1000 P 12000 1 13000 P 8000 2 21000 H 29000 DDD P 3.20000 P3P3 1000 P 12000 1 13000 P 8000 2 21000 P 20000 3 41000 H 9000 DD P1P1 P 4.7000
28
Gestión de Memoria28 Algoritmos de gestión trozos (Liberación de Memoria) P1P2P3 Lista encadenada: Supongamos que termina un proceso (sea P2) Hay que tener en cuenta cuatro situaciones: P1P3P1P2 P3P2P1P3 ¡ Fusionar ! Ventaja de tener la lista ordenada (contigüidad) Conveniencia de tener la lista doblemente enlazada
29
Gestión de Memoria29 Algoritmos de gestión trozos (Asignación de Memoria) Lista encadenada: Asignación de memoria 1.First Fit“Primero en donde quepa” 2.Next Fit“Siguiente donde quepa” 3.Best Fit“Donde quepa mejor” Muchos huecos inútiles (demasiado pequeños) 4.Worst Fit“Donde quepa peor” ¡ Recorrer toda la lista ! 5.Lista de procesos por un lado y de huecos por otro ¿ Cómo acelerar la asignación ? Liberación ineficiente Ya lo tenemos [descriptores de procesos] Ordenados por tamaño First = Best ¿Next? 6.Quick Fit“Donde quepa antes”
30
Gestión de Memoria30 Algoritmos de gestión trozos (First Fit) FIRST FIT“Primero en donde quepa” PPPPPP P’ PPPPPP Muchos huecos pequeños al principio y uno grande al final: Ejemplo: [Fork(P 20K )] 8 + [Exit(P 20K ) + Fork(P 18K )] 8 + Fork(P 15K ) PPPPPPPP PPPPPPPP P’P’ P’P’ ¡ Siempre recorriendo el principio !
31
Gestión de Memoria31 Algoritmos de gestión trozos (Next Fit) NEXT FIT“Siguiente donde quepa” Ejemplo: [Fork(P 20K )] 8 + [Exit(P 20K ) + Fork(P 18K )] 8 + Fork(P 15K ) P Inicio de búsqueda del siguiente hueco P PPPPPPP PPPPPPPP PPPPPPPP P PPPPPP ¿Pi grande? ! Huecos dispersos de tamaño moderado ! Fragmentación externa
32
Gestión de Memoria32 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 16324052 65112 280300360 400 800 33,53,8 32 P 310 P 220 P 500 P 900 ¡ Todavía puede mejorarse tanto la asignación como la liberación ! Sistema Buddy (Compañeros) 100 1101 1000 0000 0000
33
Gestión de Memoria33 S.O. ¡Doy memoria a trozos! 64MB 00000000 -------- 11111111 -------- Algoritmos de gestión trozos (Mapa de Bits) Asignación a golpe de 4K (granularidad) Pi pide 10K Fragmentación Interna ¿Tamaño del Mapa de Bits? 64MB/4KB = 16Kbits => 2KB ¿Liberación de memoria? ¿Asignación de memoria? Lista Encadenada ? First, Next, Best, Worst => Viables Quick, Buddy => Inviables ¡ No hay información explícita de tamaños ! 00000000 -------- 00011111 11111111 -------- Se le dan 12K (3 trozos) PiPj 00000000 -------- 00011111 00000000 11000111 -------- Pk 11111111111111111111111000....00 ocupado libre 00000000000000
34
Gestión de Memoria34 Paginación PROBLEMÁTICA DEL INTERCAMBIO ARQUITECTURA SUBYACENTE TRADUCCIÓN DE DIRECCIONES TABLA DE PÁGINAS MULTINIVEL UNO O VARIOS ESPACIOS DE D.V. TRATAMIENTO DE FALTA DE PÁGINA Recordatorio
35
Gestión de Memoria35 ? M.P. Paginación ( Problemática del Intercambio ) ¿Su gran restricción? Exigir que un Pi esté entero en M.P. para poder ejecutarse AUn Pi más grande que la M.P. no podrá ejecutarse BSi {Procesos preparados} aumenta, no cabe en M.P. Trasiego CEl intercambio Disco M.P. es mucho (dos procesos enteros) 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? Overlays (solapamientos) Trocear
36
Gestión de Memoria36 M.P. Paginación ( Problemática del Intercambio ) Solución Darle al usuario la sensación de tener una M.P. enorme El Core i7 (48/64bits de direcciones) 256TB Un PC medio dispone tan sólo de 4GB 65.536 veces menos M.P. Espacio de dir. del i7 Espacio de Direcciones Reales del PC Teóricamente podemos escribir programas pensando en el Core i7 y 256TB ¿ Cómo funciona todo esto ? Arquitectura subyacente M.V. M.P. Tendremos una Memoria Virtual de 256TB y mis programas se ejecutan aunque tenga menos Memoria Principal (4GB) siempre que quepan en la memoria virtual.
37
Gestión de Memoria37 MEMORIA VIRTUAL Paginación ( Arquitectura Subyacente ) CPU dv Bus Datos M.V. La Memoria Virtual reside físicamente en memoria secundaria M.P. ¡ No caben ! Principio de localidad: Meto en M.P. los trozos que hagan falta para ejecutar Pr y Pv
38
Gestión de Memoria38 Paginación ( Arquitectura Subyacente ) CPU dv Bus Datos M.V. M.P. La M.V. se divide en páginas (1000B?) 0 1 2 3 5 6 7 8 9 La M.P. se divide en marcos 028 6000 MMU fallo 9 S.O. ? 9500 7500 6 dr Traducir dv dr 3000 ¿Cachés?
39
Gestión de Memoria39 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 ?
40
Gestión de Memoria40 Paginación ( Traducción de direcciones “binario” ) ¿ # bits dv ? ¿ # bits dr ? 24 20 M.V. de 16MB M.P. de 1MB Páginas de 4KB 0000 0000 0000 0000 0000 0000 1111 1111 1111 0000 0000 0001 0000 0000 0000 0000 0000 0001 1111 1111 1111 0000 0000 0010 0000 0000 0000 0000 0000 0010 1111 1111 1111 M.V. 0 4095 4096 8191 8192 12287 12 bits PáginaOffset 12 dv M.P. 0 4095 4096 8191 8192 12287 0000 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1111 1111 1111 0000 0001 1111 1111 1111 0000 0010 0000 0000 0000 0000 0010 1111 1111 1111 MarcoOffset 812 dr 8192 12287 4096 8191 0000 0000 0010 0000 0000 0000 0000 0001 0000 0000 0000 HHHHH 23 33 “hexadecimal”
41
Gestión de Memoria41 Paginación ( Traducción de direcciones “hexadecimal” ) M.V. 0 1 2 3 5 6 7 8 9 000 000 FFF HHH PAG OFF 008 000 008 FFF FFF 000 FFF M.P. 0 2 8 9 6 00 000 00 FFF HH HHH MAR OFF 02 000 02 FFF FF 000 FF FFF 0 1 2 3 4 5 6 7 8 9 A FFF Tabla de páginas 02 51A P 02 Presente Marco 008 51A ¡Demasiado lento! ¿Dónde está?
42
Gestión de Memoria42 Toda la T.P. en M.P. + una caché de la T.P. en la MMU Paginación ( Tabla de Páginas “M.P. + caché TLB” ) M.P. Tabla de Páginas dato 00851A dv MMU 009FF 00663 00040 00852 002A3 TLBcaché Página Marco Cachés de 8..2046 entradas 1M entradas 5251A dr RBTP ¿ Fallo de Caché ? ¡ Tasas de acierto del 98% !
43
Gestión de Memoria43 Paginación ( Traducción de direcciones “descriptor” ) Aspecto de un descriptor de página PBRML E JMARCO PRESENTE Permisos:LECTURA BLOQUEADAESCRITURA REFERENCIADAEJECUCIÓ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 C
44
Gestión de Memoria44 Paginación ( Tabla de Páginas “multinivel” ) Intel Core i7 => DV 48 bits, páginas 4KB y descriptores 4B => 256GB para la TP RegTP1 ¡Siempre en MP! Entran y salen de MP TP Nivel1 TP Nivel2 páginas VPN1VPN2OFF R PPNOFF dirVirtual dirReal Ejercicio 2 – 12.12.2001
45
Gestión de Memoria45 Paginación ( Tabla de Páginas “multinivel” Intel Core i7 ) VPN 1VPN 2VPN 3VPN 4VP OFF 999912 CR3 40 9 9 9 9 PPN [MARCO]PP OFF 12 Page global directory Page upper directory Page middle directory Page table dirVirtual dirFísica i3,i5,i7 4ª 32GB i7 High End 64GB Xeon 1..4TB 2013
46
Gestión de Memoria46 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 Paginación ( Uno o varios espacios de dv ) Un único espacio de direcciones virtuales para todos los procesos P1 P2 P3 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 Ver ejercicio 3 20/6/00
47
Gestión de Memoria47 Paginación ( Uno o varios espacios de dv ) Un espacio de direcciones virtuales para cada proceso P0 P1 P2 P3 M.V.(P1)FT(P1) P0 P1 P2 P3 P1 M4 M5 M6 M7 M.P. M0 M1 M2 M3 P0 P1 P2 P3 P4 P5 P2 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)
48
Gestión de Memoria48 Paginación ( Tratamiento de Falta de Página ) ¿Cuántas Faltas de Página puede generar una instrucción? 1.Extraer instrucción Leer dv $003000 F.P. 2.Decodificarla 3.Ejecutarla Escribir dv $0045FB F.P. ? moveD0,$0045FB clr$0003FA M.V. $002FFA CPU PCM.P. Una instrucción, 0, 1, 2 o más F.P. $003000
49
Gestión de Memoria49 Paginación ( Tratamiento de Falta de Página ) El tratamiento de F.P. recae en el S.O. M.P. 0 2 8 9 6 (I) Hay marco libre M.V. 0 1 2 3 5 6 7 8 9 ? Política de ubicación simple: uno cualquiera (II) No hay marco libre M.P. 0 2 8 9 6 3 5 1 ? ? Política de sustitución no tan simple ¡ 1.048.576 marcos !
50
Gestión de Memoria50 S.O. M.V. 0 1 2 3 5 6 7 8 9 mov C,D M.P. 0 2 8 6 0123456701234567 3 5 7 1 MMarcoP Paginación ( Tratamiento de Falta de Página “II” ) 3 Seleccionar víctima, tocar TP y arrancar E/S ¡ Sólo si sucia ! 25 1 0 0 0000 3 ¿Víctima 2 ? 115 0FA3 2 4 4 Salvando (DMA) página sucia en disco 5 Fin E/S. Página 2 salvada. Marco 5 libre. 7 mov C,D 9 6 8 9 0 105 10 ¿ Quién actualiza la TLBcaché ?
51
Gestión de Memoria51 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. CPU para otro Pi 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?
52
Gestión de Memoria52 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, $001012..} {.. 1, 4, 1, 6, 1, 6, 1, 6, 1, 6, 1,..} Serie de Referencia Un solo marco ? F.P. 11 3 o más marcos ? F.P. 3 ¿Cuantos más marcos mejor? Sean dos marcos M0 M1 11 4 1 6 F.P. 3 M0 M1 11 4 6 4 6 1 4 M0 M1 11 4 6 4 1 4 6 4 1 4 6 4 1 4 6 4 1 4 10 Margen para la mejora Algoritmos
53
Gestión de Memoria53 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} Serie de Referencia ALGORITMOS IDEALMás tiempo tarde en volver a ser referenciada NRUNo utilizada recientemente FIFOMás tiempo lleva en Memoria Principal LRUMenos recientemente usada 2 nd ChanceSegunda oportunidad RELOJFIFO + LRU ¡ El mismo !
54
Gestión de Memoria54 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 0 1 2 3 40 1 7 9 7 0 1 2 3 40 1 7 15 0 2 3 2 0 1 7 0 1 2 3 40 1 7 12 2 30 7 0 1 2 3 4 0 1 7 14 2 3 2 0 1
55
Gestión de Memoria55 CT(t2, 10) = t2 {3,4} Paginación (Cuestiones de diseño: conjunto de trabajo) ¿Qué hacer cuando un proceso pasa a ejecución? Carga por Demanda Se van cargando las páginas que el proceso vaya necesitando Muchas F.P. evitables Prealimentación Se arranca la carga del conjunto de trabajo del proceso. “Páginas usadas más recientemente” 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 CT(t1, 10) = t1 {1,2,5,6,7} 5 900 300 40 128 5
56
Gestión de Memoria56 Paginación ( Cuestiones de diseño: trasiego ) Páginas = 20 CT = 7 MV MP Cabe en MP ¿Más Procesos? Páginas = 26 CT = 11 MP MV No cabe en MP => CT mayor que MP => Trasiego ¿Tamaño de página? ¿Grandes? Más Fragmentación Interna Mejor rendimiento E/S ¿Pequeñas? Mejor ajuste de localidad Más ineficiencia de E/S 2 n => 512B.. 4/8KB y aumentando ¡Superpáginas! sysconf (_SC_PAGESIZE)
57
Gestión de Memoria57 Paginación (Cuestiones de diseño: superpáginas ) VPN 1VPN 2VPN 3VP OFF 99921 dirVirtual2MB VPN 1VPN 2VP OFF 9930 dirVirtual1GB VPN 1VPN 2VPN 3VPN 4VP OFF 999912 dirVirtual4KB Intel Core i7 “long mode” Páginas de
58
Gestión de Memoria58 Paginación ( Cuestiones de diseño: otras ) Asignación local frente a global Control de carga Pi Pj PFF FIN Asignar + marcos Devolver marcos Retirar temporalmente algún proceso ¿Intercambio?
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.