Hardware y Estructuras de Control • Las referencias de memoria se traducen a direcciones físicas dinámicamente en tiempo de ejecución Memoria Virtual – Un proceso puede ser intercambiado hacia dentro o fuera de la memoria principal ocupando diferentes regiones Capítulo 8 • Un proceso se puede dividir en trozos que no sean asignados de forma contigua en memoria principal – Todos los trozos de un proceso no necesitan estar cargados en memoria principal durante la ejecución 2 Ejecución de un Programa Ejecución de un Programa • El sistema operativo trae a memoria principal unos cuantos trozos del programa • Conjunto Residente: porción del proceso que está en memoria principal • Se genera una interrupción cuando se necesita una dirección que no está en memoria principal • El sistema operativo pone al proceso en un estado de bloqueado • Se trae a memoria principal la parte del proceso que contiene la dirección lógica – El S.O. emite una petición de lectura al disco – Otro proceso entra en ejecución (se despacha) mientras la operación de E/S tiene lugar – Cuando se completa la lectura del disco, se produce una interrupción que hace que el S.O. ponga en estado activo (ready) al proceso afectado 3 4 Ventajas de Dividir un Proceso Tipos de Memoria • Se puede mantener en memoria principal más procesos • Memoria Real – Memoria principal – Sólo se carga algunas partes de cada proceso – Con tantos procesos en memoria principal, más probable es que haya un proceso en estado de listo (ready) en cualquier instante. • Memoria Virtual – Memoria en disco – Permite la multiprogramación eficaz y libera al usuario de la limitación en tamaño de la memoria principal • Un proceso puede ser mayor que toda la memoria principal 5 Sobrepaginación (thrashing) 6 Principio de Localidad • Sacar de memoria una parte de un proceso justo antes de que se vuelva a necesitar • El procesador invierte la mayor parte del tiempo en intercambiar trozos de proceso en vez de en ejecutar las instrucciones del usuario • Las referencias al programa y las datos de un proceso tienden a agruparse • Sólo unas pocas partes de un proceso serán necesaria en un intervalo corto de tiempo • Es posible hacer suposiciones inteligentes sobre qué partes se necesitarán en el futuro • Esto sugiere que la memoria virtual puede ser eficiente 7 8 Soporte Necesario para Memoria Virtual Paginación • El hardware debe soportar paginación y segmentación • El sistema operativo debe ser capaz de gestionar el movimiento de páginas y/o segmentos entre la memoria secundaria y la memoria principal • Cada proceso tiene su propia tabla de páginas • Cada entrada en la tabla de páginas contiene el número del marco en memoria principal de la página correspondiente • Se necesita un bit para indicar cuando la página está en memoria principal o no 9 Bit de Modificación en la Tabla de Páginas 10 Entradas en Tablas de Página • Se necesita otro bit para indicar si se ha modificado el contenido de la página desde que se cargo en memoria principal • Si no se ha realizado ningún cambio, la página no tiene que ser escrita en el disco cuando haya que sacarla de memoria (swap out) 11 12 Esquema de Dos Niveles para Direcciones de 32 bits 14 Tablas de Páginas Translation Lookaside Buffer • La tabla de paginas completa puede ocupar mucho espacio en memoria principal • La tabla de páginas también se almacena en memoria virtual • Cuando un proceso se ejecuta, parte de su tabla de páginas está en memoria principal • Cada referencia a memoria virtual puede causar dos accesos a memoria física – una consulta en la tabla de páginas – una para buscar el dato • Para superar el problema se coloca una cache de alta velocidad para entradas de tablas de página – llamada TLB - Translation Lookaside Buffer 15 16 Translation Lookaside Buffer Translation Lookaside Buffer • Contiene las entradas de tablas de página que han sido usadas más recientemente • Funciona igual que una memoria cache • Dada una dirección virtual, el procesador examina la TLB • Si se encuentra la entrada de la tabla de página (hit), se lee el número del marco y se forma la dirección real • Si no se encuentra la entrada de la tabla de página (miss), el número de la página se usa como índice en la tabla de página del proceso 17 18 Translation Lookaside Buffer • Primero se comprueba si la página está todavía en memoria – si no está en memoria se produce un fallo de página • La TLB se actualiza para que incluya la nueva entrada de página 19 20 Tamaño de Página • Cuanto menor es el tamaño de página, menos volumen de fragmentación interna • Cuanto menor es el tamaño de página, más página se necesitan por proceso • Más páginas por proceso dan lugar a tablas de páginas mayores • Tablas de páginas mayores, mayor porción de la tabla de páginas en memoria virtual • La memoria secundaria está diseñada para transferir grandes bloques de datos, desde este punto de vista es mejor un tamaño de página grande 22 Tamaño de Página • Tamaño de página pequeño, encontramos muchas páginas en memoria principal. • A medida que transcurre la ejecución, las páginas que están en memoria contendrán las porciones de proceso con las referencias más recientes. Pocos fallos de página. • Incrementar el tamaño de página contendrá posiciones lejanas a cualquier referencia reciente. Se incrementan los fallos de página. 23 24 Tamaño de Página Ejemplos de Tamaño de Página • Tamaños de página múltiples proporcional la flexibilidad necesaria para un uso eficiente de la TLB • Para las instrucciones del programa se pueden usar páginas grandes • Para los threads se pueden usar páginas pequeñas • La mayoría de los sistemas operativos sólo soportan un tamaño de página 25 Segmentación 26 Tablas de Segmentación • Pueden ser diferentes, tamaño dinámico • Simplifica la gestión de estructuras de datos que crecen • Permite a los programas ser modificador y recompilados independientemente • Presta compartición de datos entre procesos • Presta protección • Correspondientes a segmentos en memoria principal • Cada entrada contiene la longitud del segmento • Se necesita un bit para indicar si el segmento sigue en memoria • Se necesita otro bit para determinar si el segmento ha sido modificado desde que se cargó en memoria 27 28 Entradas de Tablas de Segmentación Segmentación y Paginación combinada • • • • La paginación es transparente al usuario La paginación elimina la fragmentación externa La segmentación es visible al programador La segmentación permite estructuras de datos que crecen, modularidad y da soporte a la compartición y protección • Cada segmento se divide en páginas de tamaño fijo 29 30 Segmentación y Paginación combinada 31 32 Política de Búsqueda Política de Reemplazo • Política de Búsqueda (fetch) • Política de Ubicación – Determina cuando se debe cargar en memoria una página – La paginación por demanda sólo trae páginas a memoria principal cuando se hace referencias a posiciones de la página – Tiene sentido en sistemas segmentados no paginados y en entornos multiprocesador • Política de Reemplazo – ¿Qué página debe ser reemplazada? – La página eliminada debe ser aquella que tiene menos probabilidad de ser referenciada en el futuro – La mayoría de las políticas predicen el comportamiento futuro basándose en el comportamiento pasado • Hay muchos fallos de página cuando comienza un proceso – La prepaginación trae más página de las requeridas • Es más eficiente traer páginas que está contiguas en disco 33 Política de Reemplazo Algoritmos de Reemplazo Básicos • Bloqueo de Marco – – – – – 34 • Política Óptima Si un marco está bloqueado, no puede ser reemplazado El kernel del sistema operativo Las estructuras de control Buffers de E/S Existe un bit de bloqueo asociado a cada marco – Selecciona para reemplazar la página que tardará más tiempo en ser referenciada – Es imposible tener un conocimiento perfecto de los eventos futuros 35 36 Algoritmos de Reemplazo Básicos Algoritmos de Reemplazo Básicos • Menos Recientemente Utilizada (LRU) • Primero en entrar, primero en salir – Del inglés, Least Recently Used – Reemplaza la página que ha sido referenciada hace más tiempo – Por el principio de localidad, ésta debe ser la página con menos probabilidad de ser referenciada en el futuro – Cada página puede ser etiquetada con la hora de la última referencia. Esto supone una gran sobrecarga. 37 – Del inglés, First-in, first-out (FIFO) – Trata los marcos de página asociados a un proceso como una cola circular – Las página se eliminan siguiendo el estilo round-robin – La política de reemplazo más sencilla de implementar – La página que lleva más tiempo en memoria es la que se reemplaza – Estas páginas pueden ser necesitadas muy pronto 38 Algoritmos de Reemplazo Básicos • Política de Reloj (clock) – Necesita un bit adicional, bit de uso – Cuando la página se carga en memoria se pone el bit de uso a 0 – Cuando la página se referencia, el bit de uso se pone a 1 – Cuando hay que reemplazar una página, la primera que se encuentre con el bit de uso a 0 se reemplaza – Durante la búsqueda de reemplazo, cada bit de uso que esté a 1 se cambia a 0 39 40 Algoritmos de Reemplazo Básicos • Buffer de páginas (page buffering) – La página reemplazada pertenece a una de estas dos listas • lista de páginas libres, si la página no ha sido modificada • lista de páginas modificadas 41 Tamaño del Conjunto Residente 42 Ubicación Variable, Ámbito global • Ubicación fija • • • • El más fácil de implementar Adoptado por muchos sistemas operativos Los S.O. mantienen listas de marcos libres Cuando ocurre un fallo de página se añade un marco libre al conjunto residente del proceso • Si ha hay marcos libres, se reemplaza uno de otro proceso – se da al proceso un número fijo de página en las que ejecutarse – cuando ocurre un fallo de página, una de las páginas de ese proceso se debe reemplazar • Ubicación variable – el número de páginas asignadas a un proceso varía durante el tiempo de vida del proceso 43 44 Ubicación Variable, Ámbito Local Política de Limpieza • Cuando se añade un nuevo proceso, se le asigna un número de marcos de página basado en el tipo de aplicación, la petición del programa u otros criterios • Cuando ocurre un fallo de página, se selecciona una página de entre el conjunto residente del proceso que sufre la falta • Asignación re-evaluable de una vez a otra • Demanda de limpieza – se escribe a disco una página cuando se selecciona para ser reemplazada • Prelimpieza – las página se escriben por lotes 45 Política de Limpieza 46 Control de Carga • La mejor aproximación usa un buffer de páginas • Determina el numero de procesos que estarán residentes en memoria principal • Demasiado pocos, mayor probabilidad de que todos estén bloqueados y mucho tiempo dedicado al intercambio de procesos (swap) • Demasiados procesos dan lugar a sobrepaginación (thrashing) – Las páginas reemplazadas están en dos listas • Modificadas y no modificadas – Las páginas de la lista de modificadas se escriben por lotes periódicamente – Las páginas de la lista de no modificadas son recicladas si son referenciadas de nuevo o se pierden si el marco se asigna a otra página 47 48 Suspensión de Proceso Suspensión de Proceso • Proceso con la menor prioridad • Proceso que falla • Proceso con el menor conjunto residente – este proceso requiere el menor esfuerzo futuro de recarga • Mayor proceso – este proceso no tiene su conjunto de trabajo (working set) en memoria principal, así que de todas formas se bloqueará – se obtiene la mayor cantidad de marcos libres • Proceso con la mayor ventana de ejecución restante • Último proceso activado – este proceso es el menos probable que tenga su conjunto de trabajo residente 49 Gestión de Memoria de UNIX y Solaris 50 Estructuras de Datos • Sistema de Paginación – – – – Tabla de páginas Descriptor de Bloque de Disco Tabla de datos de marco de página Tabla de uso de swap 51 52 Estructuras de Datos Gestión de Memoria de UNIX y Solaris • Reemplazo de página – refinamiento de la política de reloj (clock) • Asignador de Memoria del Kernel – la mayoría de los bloques son más pequeños que el tamaño típico de página 53 Gestión de Memoria de Linux 54 Gestión de Memoria de Windows 2000 • Directorio de página • Directorio central de página • Tabla de página • Paginación W2K – Available – Reserved – Committed 55 (disponible) (Reservada) (Comprometida) 56 57