soporte hw para administraci³n de memoria

Download Soporte HW para Administraci³n de Memoria

Post on 05-Jan-2016

31 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Soporte HW para Administración de Memoria. Cecilia Hernández 2007-1. dirección virtual. npv. offset. Marco Pag 0. Marco Pag 1. Marco Pág 2. Marco Pag 3. nmp. offset. Marco Pag 4. dirección física. nmp. npv: Num. página virtual nmp: Num. marco página. Marco Pag N. - PowerPoint PPT Presentation

TRANSCRIPT

  • Soporte HW para Administracin de MemoriaCecilia Hernndez2007-1

  • Paginacin

  • Fallos de PginasInterrupcin (por fallo de pgina) hace que SO se ejecuteSO salva estado de proceso en ejecucin y salta a rutina de interrupcin para atender falloEncuentra un marco de lista libre o reemplazada de proceso (mismo u otro)Si se requiere E/S (acceso a disco) bloquea proceso y ejecuta otroEncuentra en disco pgina de proceso que necesita cargarse en memoria (*)Bloquea proceso y ejecuta otro entre tantoCuando E/S terminanSetea entrada de pgina con marco, V=1, R = 1 y M =0 y bits proteccin apropiadosPone proceso en cola de listos

  • Pgina de disco a memoriaSO sabe id de proceso responsable de fallo de pgina y direccin virtual que produce falloId de proceso almacenado en PCB PCB proceso tiene puntero a tabla de pginaDireccin virtual contiene nmero pgina virtual que produce falloSO tiene estructura de datos similar a tabla de pgina que contiene direcciones a disco de pginasUn arreglo con entradas por cada pgina en el espacio de direccionamiento

  • Problemas con paginacinAccesos a memoria para direccionar memoria fsica2 referencias a memoria por traduccinA tabla de pgina y memoriaSolucinUsar cache para almacenar tabla de pgina (TLB: Translation lookaside buffer)Requerimiento de memoriaUna entrada por pgina virtualEn arquitectura de 32 bits y pginas de 4KBNmero de pginas virtuales 220 = 1.048.576 de entradas en tabla de pginas4 bytes por entrada = 4* 1.048.576 = 4MB Cada proceso tiene su propia tabla de pginaPara 50 procesos 50 *4MB = 200 MB slo para almacenar tablas de pginas SolucinPaginar tablas de pginas

  • Paginando tablas de pginaObservacin Procesos en ejecucin slo necesitan una porcin del espacio de direccionamiento en memoriaIdea de conjunto de trabajo expuesta por proceso de acuerdo a localidadPuede que proceso no use su espacio completo de direccionamiento 32/64 bitsProceso puede que no referencie algunas partes de direccionamiento nuncaCaso de rutinas de manejo de errores, si proceso no expone errores en tiempo de ejecucin

  • Tablas de pginas de 2 nivelesnmpnpv2direccin virtualdireccin fsicaMarco Pag 0Marco Pag 1Marco Pag 3Marco Pag 4Marco Pag N...offsetoffsetnmpnpv1: Num. pgina virtual a nivel 1npv2: Num. pgina virtual a nivel 2nmp: Num. marco pginaMarco Pg 2Cada Proceso tiene sus propias tablas de pginanpv1

  • EjemploEspacio de direccionamiento de 32 bits, pginas de 4KB, cada entrada en tabla de pginas de 4 bytesBits para offset?Se necesitan 12 bits para direccionar 4KB212 = 4KBSi tabla de primer nivel debe estar contenida en una pginaDistribucin de campos en direccin virtual?4KB/4 = 1KB = 1024 entradas en tabla primer nivel 10 bits 210 = 10241024 tablas de segundo nivelSi se usan los 32 bits, se requieren 32 -10 -12 = 10 bits para ndices a tablas de segundo nivel, luego cada tabla de segundo nivel tambien es contenida en 1 pgina

  • GeneralizacinEn un principio arquitecturas usaban tablas de 1 nivelVAX, P-II tablas de 2 nivelesSPARC usa tres niveles68030 usa cuatro nivelesTabla de nivel inferior debe contener informacin de marcos de pgina

  • Otros esquemas Tabla de pgina es tabla hashEsquema til para espacios de direccionamiento grandes (64 bits) y evitar tabla de pginas muy grandesNmero de pgina se usa como hashPara manejar colisiones Cada entrada en la tabla hash contiene una lista enlazada de elementos Cada elemento en la lista enlazada contiene el nmero de pgina virtual, la entrada en la tabla de pgina y el puntero a siguiente elemento en la lista

  • Tabla de pginas como tabla hashm2pdireccin virtualdireccin fsicaMarco Pag 0Marco Pag 1Marco Pag 3Marco Pag 4Marco Pag N...offsetoffsetp: Num. pgina virtualnmp: Num. marco pginaMarco Pg 2Cada Proceso tiene su propia tabla de pginaapm1m2hash

  • Otros esquemasTabla de pgina invertidaPara evitar usar mucha memoria para tablas de pgina Tabla tiene una entrada por cada marco de pgina Cada entrada contiene la pgina virtual almacenada en el marco de pginaSlo se necesita una tabla en el sistemaNo una por procesoPara identificar pginas virtuales de procesos cada entrada tambien tiene pid de procesoLuega cada entreda contiene pid y pgina virtualPowerPC y UltraSPARC usan este esquemaUso de memoria menora para almacenar tabla de pgina, pero bsqueda puede ser lentaPara mejorar bsqueda se usa tabla de pgina usando hashLuego, cada traduccin requiere 2 referencias a memoria una para hash y otra para tabla invertida

  • Tabla de pgina invertidampdireccin virtualdireccin fsicaMarco Pag 0Marco Pag 1Marco Pag 3Marco Pag 4Marco Pag N...offsetoffset pMarco Pg 2Una tabla de pgina en el SO para todos los procesospidpidmbsqueda

  • Mejorando desempeo con TLBTablas de pginas de un nivel2 referencias para acceso a informacinTablas de pginas de 2 niveles3 referencias para acceso a informacinComo hacer para que sobrecarga de traduccin sea mnimaUsar TLB cache dentro de CPUTraduccin de direccin virtual a fsica en HardwareTLB manejada por MMU (Memory Management Unit)MMU encargada de traduccin virtual a fsica

  • TLBTraduce pginas virtuales a marcosAcceso para extraer marco de pginaPuede realizarlo en un ciclo de relojTLB implementada en HWCache completamente asociativa (todas las entradas accesadas paralelamente)Tags en cache son los nmeros de pginas virtualesDatos en cache son los marcos de pginaMarco de pgina mas offset direccin fsicaMMU puede calcular direccin fsicaTLB explota localidadProcesos contienen conjunto de paginas en conjunto de trabajoTpicamente TLB contiene entre 16-48 entradas (64-192 KB)Aciertos en TLB son muy importantesCostos de fallos hacen traduccin virtual a fsica muy cara

  • Ilustracin con TLBdireccin virtualnumero pagoffset=Tagnumero pagDatosnumero marconumero marcooffsetnumero marcodireccin fsicaTLB hitTLB missnumero pagMemoria FsicaTLBTabla de pgina

  • Manejando TLBsLa idea es que la traduccin virtual a fsica sea realizada por la TLB la mayora de las vecesTpicamente aciertos son > 99%En caso de fallo, MMU va a tabla de pgina y extrae marco para pgina virtual y lo pone en la TLBMMU Sabe donde estn las tablas de pgina en memoria OS las mantiene y HW de MMU las accesa directamenteFormato de tablas de pgina debe ser definido en HWAs se hace en arquitecturas x86TLB cargada por softwareFallo en TLB capturado por SO, SO encuentra marco para pgina virtual y lo carga en TLBDebe ser rpido, pero normalmente toma entre 20-200 ciclos de relojISA de la CPU tiene instrucciones para manipular la TLBSO decide el formato de la tabla de pginaMIPS3000

  • Manejando TLBsSO debe asegurar consistencia entre TLB y tabla de pginaCuando SO cambia bits de proteccin en entrada de tabla de pgina debe invalidar entrada en TLB si es que tambien esta ahQu ocurre en cambio de contexto?Cada proceso tiene sus propias tablas de pginaLuego SO necesita invalidar todas las entradas en la TLBUna de las principales fuentes de sobrecarga en cambio de contextoCuando hay un fallo en TLB y TLB esta completamente ocupada hay que elegir una reemplazo, dado que se necesita cargar una nuevaLuego, debe haber un algoritmo de reeplazo en la TLBNormalmente LRU implementado en HW

  • Implementaciones con paginacinMemoria compartidaDos procesos pueden compartir memoria fsicaLeer/escribir en un espacio compartidoEjecutar cdigo perteneciente a una bibliotecaCada proceso tiene su tabla de pgina, con nmeros de pgina virtual correspondientes a cada proceso.Mismo marco en entradas de cada tabla de pginaCopy-on-write (COW)Para caso fork(), en lugar de copiar espacio de direccionamiento, hacer que hijo comparta lo del padre hasta que hijo escribaHacer que hijo solo pueda leerCuando hijo quiere escribir, SO atiende SO asigna un nuevo marco al hijo y lo mapea en su tabla de pgina y luego lo resume

  • Implementaciones con paginacinArchivos mapeados a memoriaEn lugar de usar llamadas a sistema open, read, write, closeMapear archivo a espacio de direccionamiento virtual Inicialmente todas las pginas en regin mapeadas estn invlidasSO lee una pgina de archivo de disco cuando accesa a pgina invlidaSO escribe una pgina a archivo cuando es reemplazada y su bit M (dirty bit)

  • ResumenTraduccin de memoria virtual a fsicaUsa TLB, tablas de pginas de mltiples niveles (normalmente en HW : MMU)Cuando hay fallos en TLB se accesa memoria conteniendo tabla de pginaSi pgino no esta en tabla de pgina : Fallo de pginaSO Maneja fallos de pginaSalva estado de proceso y lo bloqueaEjecuta algoritmo de reemplazamiento cuando se ve escaso de marcos libresEncuentra marco libre, trae lo que necesita de disco y lo copia en marcoActualiza entrada en tabla de pginaPone proceso en cola de listos

  • ResumenDos problemas en traduccinDesempeoCiclos requerido por traduccinSolucin: usar TLB Cantidad de memoria para contener tabla de pgina por procesosTablas de mltiples nivelesEsto hace uso de TLB ms importante porque costo de fallos incrementaTablas invertidas con uso de tablas hash

  • Detalles de TLBImplementado en HWCache completamente asociativaTodas las entradas accesadas en paralelo en bsqueda de marco para cada traduccinTag en TLB corresponden a nmero de pgina virtualDatos en TLB corresponden a marcos de pgina Con marco y offset MMU puede directamente calcular direccin fsicaTLBs son pequeas entre 16 y 64 entradasAMD operon tiene 2 niveles de TLB Para traduccin de dir virtual a fsica son accesadas antes de acceso a tabla de pginaAcierto. Marco de pgina se encuentra en TLB para pgina virtual referenciada por CPUFallo. Traduccin requiere acceso a tabla de pgina, trae marco a entrada en TLB (si es necesario saca otra, normalmente algoritmo LRU)En Cambio de contexto: Entradas en TLB son invalidadas porque referencias pertenecen a proceso que sale de CPU

View more >