Microprocesadores Procesador IA-32 - Gestión de Memoria Alejandro Furfaro Mayo de 2011 Temario 1 Inroducción Criterios de eficiencia: Vecindad 2 Soporte del Procesador Partición de los procesos Gestión de Memoria Paginación Segmentación 3 Soporte de Paginación de los procesadores IA-32 4 Paginación en Linux 5 Software del Sistema Operativo Objetivos Polı́ticas de lectura Polı́ticas de Reemplazo Gestión del Conjunto de Páginas Residentes Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 2 / 103 Inroducción Definición La Memoria Virtual (VM, por Virtual Memory) es un servicio implementado en los Sistemas Operativos modernos que tiene por objeto permitir a los programas de aplicación trabajar con direcciones de memoria a nivel lógico, de manera independiente de la cantidad de memoria fı́sicamente disponible. Dicho de otro modo, un subsistema de VM permite mostrar a los procesos en ejecución, una cantidad de memoria mayor de la disponible en el sistema. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 3 / 103 Inroducción Definición La Memoria Virtual (VM, por Virtual Memory) es un servicio implementado en los Sistemas Operativos modernos que tiene por objeto permitir a los programas de aplicación trabajar con direcciones de memoria a nivel lógico, de manera independiente de la cantidad de memoria fı́sicamente disponible. Dicho de otro modo, un subsistema de VM permite mostrar a los procesos en ejecución, una cantidad de memoria mayor de la disponible en el sistema. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 3 / 103 Inroducción ¿Como se logra esto? Los procesos dividen en fragmentos. Se utiliza la memoria primaria para el almacenamiento de aquellos fragmentos de los procesos que son necesarios en un momento dado para su ejecución. El resto de los fragmentos se almacena en la memoria secundaria. La memoria primaria es el sitio en el que están fı́sicamente los fragmentos en uso de cada proceso. Por tal motivo la conocemos también como Memoria Fı́sica. Y no es otra que la RAM dinámica instalada en el sistema. La memoria secundaria es la que genera la “visión“ de una mayor cantidad de memoria que la fı́sicamente disponible. Por tal motivo se la denomina Memoria Virtual. Y no es otra cosa que una porción del disco rı́gido. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 4 / 103 Inroducción Criterios de eficiencia: Vecindad Antecedentes Durante los 60’s y 70’s se generó toda la investigación cientı́fica sobre la cual se sustenta el servicio de VM. Inicialmente las dudas pasaban simplemente por si este modelo empı́rico funcionaba realmente. Lo trabajos de investigación realizados durante aquelloas años demostraron que el software tiene a permanecer trabajando en un rango de direcciones de memoria contiguas durante lapsos significativos. De este modo puede comenzarse la ejecución de un proceso con un pequeño conjunto de fragmentos de su código, sus datos y su pila, lo cual garantizará generalmente su funcionamiento durante un lapso considerable sin necesidad de cargar otros fragmentos. Además se demostró que cuando alguno de estos fragmentos deja de requerirse, porque se pasa a trabajar dentro de otro rango de direcciones, pasará un lapso mas que considerable hasta que se lo vuelva a requerir (eventualmente). Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 5 / 103 Inroducción Criterios de eficiencia: Vecindad Principio de Vecindad Vecindad Temporal Si un ı́tem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. Vecindad Espacial Si un ı́tem es referenciado, es altamente probable que sean referenciados sus ı́tems vecinos. f o r ( i = 0 ; i < 256 ; i ++ ) { suma = 0 . 0 f ; f o r ( j = 0 ; ( j <= i && j < 256) ; j ++) suma += v0 [ i −j ] ∗ v1 [ j ] ; fAux [ i ] = suma ; } La porción de código anterior corresponde a un algoritmo de convolución discreta. En él podemos observar que las variables i, j, suma, se utilizan permanentemente durante la ejecución del bucle que está dimensionado por los valores de i y j. Por lo tanto si se mantiene el fragmento que los contiene en la memoria principal su acceso será inmediato. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 6 / 103 Inroducción Criterios de eficiencia: Vecindad Principio de Vecindad Vecindad Temporal Si un ı́tem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. Vecindad Espacial Si un ı́tem es referenciado, es altamente probable que sean referenciados sus ı́tems vecinos. f o r ( i = 0 ; i < 256 ; i ++ ) { suma = 0 . 0 f ; f o r ( j = 0 ; ( j <= i && j < 256) ; j ++) suma += v0 [ i −j ] ∗ v1 [ j ] ; fAux [ i ] = suma ; } La porción de código anterior corresponde a un algoritmo de convolución discreta. En él podemos observar que las variables i, j, suma, se utilizan permanentemente durante la ejecución del bucle que está dimensionado por los valores de i y j. Por lo tanto si se mantiene el fragmento que los contiene en la memoria principal su acceso será inmediato. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 6 / 103 Inroducción Criterios de eficiencia: Vecindad Principio de Vecindad Vecindad Temporal Si un ı́tem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. Vecindad Espacial Si un ı́tem es referenciado, es altamente probable que sean referenciados sus ı́tems vecinos. f o r ( i = 0 ; i < 256 ; i ++ ) { suma = 0 . 0 f ; f o r ( j = 0 ; ( j <= i && j < 256) ; j ++) suma += v0 [ i −j ] ∗ v1 [ j ] ; fAux [ i ] = suma ; } La porción de código anterior corresponde a un algoritmo de convolución discreta. En él podemos observar que las variables i, j, suma, se utilizan permanentemente durante la ejecución del bucle que está dimensionado por los valores de i y j. Por lo tanto si se mantiene el fragmento que los contiene en la memoria principal su acceso será inmediato. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 6 / 103 Inroducción Criterios de eficiencia: Vecindad Principio de Vecindad Vecindad Temporal Si un ı́tem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. Vecindad Espacial Si un ı́tem es referenciado, es altamente probable que sean referenciados sus ı́tems vecinos. f o r ( i = 0 ; i < 256 ; i ++ ) { suma = 0 . 0 f ; f o r ( j = 0 ; ( j <= i && j < 256) ; j ++) suma += v0 [ i −j ] ∗ v1 [ j ] ; fAux [ i ] = suma ; } La porción de código anterior corresponde a un algoritmo de convolución discreta. En él podemos observar que las variables i, j, suma, se utilizan permanentemente durante la ejecución del bucle que está dimensionado por los valores de i y j. Por lo tanto si se mantiene el fragmento que los contiene en la memoria principal su acceso será inmediato. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 6 / 103 Inroducción Criterios de eficiencia: Vecindad Principio de Vecindad Vecindad Temporal Si un ı́tem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. Vecindad Espacial Si un ı́tem es referenciado, es altamente probable que sean referenciados sus ı́tems vecinos. f o r ( i = 0 ; i < 256 ; i ++ ) { suma = 0 . 0 f ; f o r ( j = 0 ; ( j <= i && j < 256) ; j ++) suma += v0 [ i −j ] ∗ v1 [ j ] ; fAux [ i ] = suma ; } La porción de código anterior corresponde a un algoritmo de convolución discreta. En él podemos observar que las variables i, j, suma, se utilizan permanentemente durante la ejecución del bucle que está dimensionado por los valores de i y j. Por lo tanto si se mantiene el fragmento que los contiene en la memoria principal su acceso será inmediato. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 6 / 103 Inroducción Criterios de eficiencia: Vecindad Principio de Vecindad Vecindad Temporal Si un ı́tem es referenciado, la probabilidad de ser referenciado en el futuro inmediato es alta. Vecindad Espacial Si un ı́tem es referenciado, es altamente probable que sean referenciados sus ı́tems vecinos. f o r ( i = 0 ; i < 256 ; i ++ ) { suma = 0 . 0 f ; f o r ( j = 0 ; ( j <= i && j < 256) ; j ++) suma += v0 [ i −j ] ∗ v1 [ j ] ; fAux [ i ] = suma ; } La porción de código anterior corresponde a un algoritmo de convolución discreta. En él podemos observar que las variables i, j, suma, se utilizan permanentemente durante la ejecución del bucle que está dimensionado por los valores de i y j. Por lo tanto si se mantiene el fragmento que los contiene en la memoria principal su acceso será inmediato. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 6 / 103 Inroducción Criterios de eficiencia: Vecindad Principio de Vecindad En 1972 se demostró la influencia de la vecindad en un sistema de VM.[1] Hatfield, D.”Experimets on page size, Program Access Patterns, and Virtual Memory Performance“, IBM Journal Journal of Research and Development, January 1972. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 7 / 103 Inroducción Criterios de eficiencia: Vecindad Primeras conclusiones Se paga la ampliación de capacidad con el mayor tiempo de acceso del disco. Es importante minimizar las transferencias hacia/desde la memoria Virtual por razones de rendimiento del sistema. Se va a requerir un importante soporte desde el hardware del procesador que se utilice como CPU del sistema, para implementar por hardware operaciones que de otro modo comprometerı́an en rendimiento del Sistema Operativo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 8 / 103 Inroducción Criterios de eficiencia: Vecindad Primeras conclusiones Se paga la ampliación de capacidad con el mayor tiempo de acceso del disco. Es importante minimizar las transferencias hacia/desde la memoria Virtual por razones de rendimiento del sistema. Se va a requerir un importante soporte desde el hardware del procesador que se utilice como CPU del sistema, para implementar por hardware operaciones que de otro modo comprometerı́an en rendimiento del Sistema Operativo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 8 / 103 Soporte del Procesador Partición de los procesos Soporte del procesador Diagrama de un Sistema Genérico de VM Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 9 / 103 Soporte del Procesador Partición de los procesos Fragmentación de los procesos A través de tablas en las que se describen los diferentes fragmentos en memoria el procesador siempre determinará la presencia o no del fragmento solicitado por el proceso. En caso de Ausencia del fragmento solicitado el procesador generará una excepción que será interceptada por el Sistema Operativo. El Sistema Operativo por lo general suspende al proceso y genera la transacción de E/S para leer desde la memoria secundaria (disco) el fragmento direccionado por el proceso. Una vez efectuada la operación de E/S, el Sistema Operativo pone al proceso en estado listo para que se retome su ejecución. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 10 / 103 Soporte del Procesador Partición de los procesos Fragmentación de los procesos A través de tablas en las que se describen los diferentes fragmentos en memoria el procesador siempre determinará la presencia o no del fragmento solicitado por el proceso. En caso de Ausencia del fragmento solicitado el procesador generará una excepción que será interceptada por el Sistema Operativo. El Sistema Operativo por lo general suspende al proceso y genera la transacción de E/S para leer desde la memoria secundaria (disco) el fragmento direccionado por el proceso. Una vez efectuada la operación de E/S, el Sistema Operativo pone al proceso en estado listo para que se retome su ejecución. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 10 / 103 Soporte del Procesador Partición de los procesos Fragmentación de los procesos A través de tablas en las que se describen los diferentes fragmentos en memoria el procesador siempre determinará la presencia o no del fragmento solicitado por el proceso. En caso de Ausencia del fragmento solicitado el procesador generará una excepción que será interceptada por el Sistema Operativo. El Sistema Operativo por lo general suspende al proceso y genera la transacción de E/S para leer desde la memoria secundaria (disco) el fragmento direccionado por el proceso. Una vez efectuada la operación de E/S, el Sistema Operativo pone al proceso en estado listo para que se retome su ejecución. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 10 / 103 Soporte del Procesador Partición de los procesos Fragmentación de los procesos A través de tablas en las que se describen los diferentes fragmentos en memoria el procesador siempre determinará la presencia o no del fragmento solicitado por el proceso. En caso de Ausencia del fragmento solicitado el procesador generará una excepción que será interceptada por el Sistema Operativo. El Sistema Operativo por lo general suspende al proceso y genera la transacción de E/S para leer desde la memoria secundaria (disco) el fragmento direccionado por el proceso. Una vez efectuada la operación de E/S, el Sistema Operativo pone al proceso en estado listo para que se retome su ejecución. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 10 / 103 Soporte del Procesador Partición de los procesos Fragmentación de los procesos A través de tablas en las que se describen los diferentes fragmentos en memoria el procesador siempre determinará la presencia o no del fragmento solicitado por el proceso. En caso de Ausencia del fragmento solicitado el procesador generará una excepción que será interceptada por el Sistema Operativo. El Sistema Operativo por lo general suspende al proceso y genera la transacción de E/S para leer desde la memoria secundaria (disco) el fragmento direccionado por el proceso. Una vez efectuada la operación de E/S, el Sistema Operativo pone al proceso en estado listo para que se retome su ejecución. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 10 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Gestión del espacio de direccionamiento Dirección Lógica: Cualquier referencia a memoria hecha por un proceso. El procesador las traduce dinámicamente a direcciones fı́sicas, que es finalmente el número que sale por el Bus de Address. El valor de dirección fı́sica dependerá de las áreas de memoria que el procesador tenga disponibles en cada momento. ¡Un proceso descargado de la memoria principal no se volverá a cargar en la misma área de memoria!. Además el procesador divide el área de memoria total de un proceso en bloques, que de acuerdo al diseño de su arquitectura serán páginas o segmentos o una combinación de ambos. El procesador no tendrá por lo tanto la obligación de cargar todos los fragmentos de un proceso en la memoria principal sino que solo podrá cargar aquellos que necesite. Al conjunto de fracciones de procesos que están en un momento dado en la memoria principal, lo llamaremos conjunto residente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 11 / 103 Soporte del Procesador Partición de los procesos Ventajas y costos Es cierto que la transacción con disco introduce delays. A cambio de ello: 1 2 3 4 Se pueden mantener en la memoria principal muchos mas procesos, ya que el Sistemam Operativo puede alojar en ella solo algunos fragmentos del proceso en lugar de la totalidad. Es posible que un proceso sea mas grande que el total de la memoria principal. El Sistema Operativo es quien decide cuanta memoria consume un proceso y como se cargan y descargan sus fragmentos. Antes del desarrollo de los Sistemas de VM, la situación de un programa mas grande que la cantidad de Memoria Fisica disponible se resolvı́a mediante la generación de Overlays. Los programadores de aplicaciones generaban la cantidad de Overlays que estimaban conveniente y la aplicación los cargaba y descargaba de la memoria RAM mediante system calls adecuadas, pero manejando el consumo de RAM del proceso en función de la conveniencia de éste y no con una visión amplia del sistema completo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 12 / 103 Soporte del Procesador Partición de los procesos Ventajas y costos Es cierto que la transacción con disco introduce delays. A cambio de ello: 1 2 3 4 Se pueden mantener en la memoria principal muchos mas procesos, ya que el Sistemam Operativo puede alojar en ella solo algunos fragmentos del proceso en lugar de la totalidad. Es posible que un proceso sea mas grande que el total de la memoria principal. El Sistema Operativo es quien decide cuanta memoria consume un proceso y como se cargan y descargan sus fragmentos. Antes del desarrollo de los Sistemas de VM, la situación de un programa mas grande que la cantidad de Memoria Fisica disponible se resolvı́a mediante la generación de Overlays. Los programadores de aplicaciones generaban la cantidad de Overlays que estimaban conveniente y la aplicación los cargaba y descargaba de la memoria RAM mediante system calls adecuadas, pero manejando el consumo de RAM del proceso en función de la conveniencia de éste y no con una visión amplia del sistema completo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 12 / 103 Soporte del Procesador Partición de los procesos Ventajas y costos Es cierto que la transacción con disco introduce delays. A cambio de ello: 1 2 3 4 Se pueden mantener en la memoria principal muchos mas procesos, ya que el Sistemam Operativo puede alojar en ella solo algunos fragmentos del proceso en lugar de la totalidad. Es posible que un proceso sea mas grande que el total de la memoria principal. El Sistema Operativo es quien decide cuanta memoria consume un proceso y como se cargan y descargan sus fragmentos. Antes del desarrollo de los Sistemas de VM, la situación de un programa mas grande que la cantidad de Memoria Fisica disponible se resolvı́a mediante la generación de Overlays. Los programadores de aplicaciones generaban la cantidad de Overlays que estimaban conveniente y la aplicación los cargaba y descargaba de la memoria RAM mediante system calls adecuadas, pero manejando el consumo de RAM del proceso en función de la conveniencia de éste y no con una visión amplia del sistema completo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 12 / 103 Soporte del Procesador Partición de los procesos Ventajas y costos Es cierto que la transacción con disco introduce delays. A cambio de ello: 1 2 3 4 Se pueden mantener en la memoria principal muchos mas procesos, ya que el Sistemam Operativo puede alojar en ella solo algunos fragmentos del proceso en lugar de la totalidad. Es posible que un proceso sea mas grande que el total de la memoria principal. El Sistema Operativo es quien decide cuanta memoria consume un proceso y como se cargan y descargan sus fragmentos. Antes del desarrollo de los Sistemas de VM, la situación de un programa mas grande que la cantidad de Memoria Fisica disponible se resolvı́a mediante la generación de Overlays. Los programadores de aplicaciones generaban la cantidad de Overlays que estimaban conveniente y la aplicación los cargaba y descargaba de la memoria RAM mediante system calls adecuadas, pero manejando el consumo de RAM del proceso en función de la conveniencia de éste y no con una visión amplia del sistema completo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 12 / 103 Soporte del Procesador Partición de los procesos Ventajas y costos Es cierto que la transacción con disco introduce delays. A cambio de ello: 1 2 3 4 Se pueden mantener en la memoria principal muchos mas procesos, ya que el Sistemam Operativo puede alojar en ella solo algunos fragmentos del proceso en lugar de la totalidad. Es posible que un proceso sea mas grande que el total de la memoria principal. El Sistema Operativo es quien decide cuanta memoria consume un proceso y como se cargan y descargan sus fragmentos. Antes del desarrollo de los Sistemas de VM, la situación de un programa mas grande que la cantidad de Memoria Fisica disponible se resolvı́a mediante la generación de Overlays. Los programadores de aplicaciones generaban la cantidad de Overlays que estimaban conveniente y la aplicación los cargaba y descargaba de la memoria RAM mediante system calls adecuadas, pero manejando el consumo de RAM del proceso en función de la conveniencia de éste y no con una visión amplia del sistema completo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 12 / 103 Soporte del Procesador Partición de los procesos Ventajas y costos Es cierto que la transacción con disco introduce delays. A cambio de ello: 1 2 3 4 Se pueden mantener en la memoria principal muchos mas procesos, ya que el Sistemam Operativo puede alojar en ella solo algunos fragmentos del proceso en lugar de la totalidad. Es posible que un proceso sea mas grande que el total de la memoria principal. El Sistema Operativo es quien decide cuanta memoria consume un proceso y como se cargan y descargan sus fragmentos. Antes del desarrollo de los Sistemas de VM, la situación de un programa mas grande que la cantidad de Memoria Fisica disponible se resolvı́a mediante la generación de Overlays. Los programadores de aplicaciones generaban la cantidad de Overlays que estimaban conveniente y la aplicación los cargaba y descargaba de la memoria RAM mediante system calls adecuadas, pero manejando el consumo de RAM del proceso en función de la conveniencia de éste y no con una visión amplia del sistema completo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 12 / 103 Soporte del Procesador Partición de los procesos Ventajas y costos Es cierto que la transacción con disco introduce delays. A cambio de ello: 1 2 3 4 Se pueden mantener en la memoria principal muchos mas procesos, ya que el Sistemam Operativo puede alojar en ella solo algunos fragmentos del proceso en lugar de la totalidad. Es posible que un proceso sea mas grande que el total de la memoria principal. El Sistema Operativo es quien decide cuanta memoria consume un proceso y como se cargan y descargan sus fragmentos. Antes del desarrollo de los Sistemas de VM, la situación de un programa mas grande que la cantidad de Memoria Fisica disponible se resolvı́a mediante la generación de Overlays. Los programadores de aplicaciones generaban la cantidad de Overlays que estimaban conveniente y la aplicación los cargaba y descargaba de la memoria RAM mediante system calls adecuadas, pero manejando el consumo de RAM del proceso en función de la conveniencia de éste y no con una visión amplia del sistema completo. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 12 / 103 Soporte del Procesador Gestión de Memoria ¿Segmentación o Paginación? Para convertir la dirección lógica en dirección fı́sica los procesadores modernos disponen de una Unidad denominada comunmente MMU (Memory Management Unit). Esta Unidad provee una visión de la memoria fı́sica, dividida en fragmentos para su mejor administración. Esta división se puede realizar mediante dos criterios diferentes o en algunos casos como una combinación o superposición de ambos. 1 2 Paginación. Segmentación. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 13 / 103 Soporte del Procesador Gestión de Memoria Segmentación vs. Paginación Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 14 / 103 Soporte del Procesador Gestión de Memoria Segmentación Es un método de fraccionamiento de la memoria, que permite dividirla en fragmentos denominados segmentos que poseen las siguientes propiedades: 1 Su tamaño no es fijo . Mas aún, puede cambiar dinámicamente durante la ejecución de un proceso. 2 Una vez mapeados en el espacio fı́sico de memoria pueden quedar solapados, parcial o totalmente. 3 Cada Segmento define un espacio contı́nuo de direcciones capaz de contener un bloque de código funcionalmente completo, un espacio completo de datos, o una pila. Es decir contiene unidades de programa completas. 4 De este modo cada unidad de programa se ubica en un espacio continuo de memoria. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 15 / 103 Soporte del Procesador Gestión de Memoria Paginación Es un método de fraccionamiento de la memoria, que permite dividirla en fragmentos denominados páginas que poseen las siguientes propiedades: 1 2 3 4 5 Su tamaño es fijo establecido por hardware y no puede modificarse. Se mapean en el espacio fı́sico de memoria una a continuación de otra sin dejar espacios libres. Cada página pn , de tamaño t (donde n es el número de página, tal que 0 ≤ n ,y n ∈ ℵ ) comienza en la dirección n ∗ t . Al tener tamaño fijo, cada Página define un marco (frame) de direcciones que contendrá una parte de cada unidad de programa que compone el proceso en ejecución. Por lo tanto las unidades de programación pueden ubicarse en frames discontı́nuos en la memoria principal y a pesar de ello el procesador traduce las direcciones de modo que la secuencia de acceso no se altere. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 16 / 103 Soporte del Procesador Paginación Soporte en el procesador Para poder implementar una gestión de la memoria fı́sica por páginas, el procesador debe tener el hardware necesario para traducir una dirección lógica o virtual en un valor adecuado para enviar por sus terminales del bus de address. Esta dirección es la que hemos definido como Dirección Fisica , ya que es la que se envı́a a la memoria fı́sica del sistema. Esto se logra mediante la gestión de una tabla de traducción a la que se ingresa con el valor de la dirección lógica, y de la que se obtiene un número que no es otra cosa que el marco de la página de Memoria Fı́sica , y el desplazamiento a patrir de la primer posición de ese marco. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 17 / 103 Soporte del Procesador Paginación Tablas de página Punto de partida: La dirección lógica (también llamada virtual) generada por el programa de aplicación. Esta dirección se compone de dos campos: 1 Selector de Página 2 Desplazamiento (Offset) dentro de la página seleccionada. Dirección Virtual Número de Página Entrada en la tabla de Páginas Número de Frame Offset Bits de A PM control Con el Selector de Página se ingresa a la tabla de páginas y se obtiene el frame de memoria fı́sica correspondiente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 18 / 103 Soporte del Procesador Paginación Bits de control de la entrada a la Tabla de Página Entre los bits de control se requieren al menos los tres bits indicados en la figura anterior. Como no es necesario que un proceso cuente con todas sus páginas en la memoria fı́sica, se necesita el bit de Control P para indicar si la página seleccionada está Presente en la memoria fı́sica o si es necesario traerla desde la memoria secundaria. Ası́ mismo el bit M se necesita para indicar si una página fue modificada. Esto es importante ya que al ser desalojada de la memoria fı́sica, este bit sirve para decidir si se debe salvar la página en memoria secundaria o si se la puede pisar con la nueva página que se descargará a ese frame. Continuando con el desalojo de una página es deseable poder contar en cada entrada de la Tabla de Páginas con un bit que indique si la página ha sido Accedida o no. Como veremos al estudiar la implementación del Software en el Sistema Operativo, este dato es de gran utilidad para esta decisión. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 19 / 103 Soporte del Procesador Paginación Tablas de página El sistema de Paginación es una combinación de lógica en el Procesador mas tablas de página residentes por lo general en la memoria principal que permite, dada una dirección lógica o virtual, interpretar su contenido como un selector de página y un desplazamiento u offset dentro de la misma para acceder al elemento direccionado en memoria fı́sica. Dirección Virtual Número de Página Dirección Física Número de Frame Offset Offset Offset + Registro Puntero a Tabla de Páginas Programa Alejandro Furfaro () Nº de Página Número de Frame Tabla de Páginas Sistema de Paginación Procesador IA-32 - Gestión de Memoria Memoria Física Mayo de 2011 20 / 103 Soporte del Procesador Paginación Tablas de página en niveles jerárquicos Si la memoria principal tiene un tamaño muy grande, utilizar una sola tabla de páginas puede ser muy costoso en términos de consumo de memoria. Una alternativa es utilizar niveles jerárquicos de Tablas de Páginas. 4 Kbytes para el Directorio de Tablas de Páginas. ... 4 Mbytes para las Tablas de Páginas. ... 4 Gbytes de Memoria dividido en Páginas de 4 Kbytes. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 21 / 103 Soporte del Procesador Paginación Dos niveles jerárquicos para 4 Gbytes de memoria Dirección Virtual Nº Pág. en DTP Nº Pág. en TP Dirección Física Número de Frame Offset Offset Offset + + Registro Puntero a Tabla de Páginas Programa Alejandro Furfaro () Tabla de Páginas raíz (contiene 1024 PTE) 4kBytes Tabla de Páginas (contiene 1024 PTE) Sistema de Paginación Procesador IA-32 - Gestión de Memoria Memoria Física Mayo de 2011 22 / 103 Soporte del Procesador Paginación Otras soluciones Una alternativa al método de niveles jerárquicos de tablas de página es el que se conoce como tabla de páginas invertida. Lo que se hace es tomar la dirección virtual y aplicar una función de hash simple (por hardware) cuyo resultado es una entrada a una tabla de hash que contiene la entrada a la tabla de páginas. Este método es el utilizado en los procesadores PowerPC y AS/400 de IBM Los métodos de niveles jerárquicos de tablas de páginas se aplican en procesadores de arquitecturas, Alpha, Intel IA-32 e IA 64, MPIS entre otros Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 23 / 103 Soporte del Procesador Paginación Buffer de traducciones Cualquiera sea el sistema de traducción de direcciones a implementar en la paginación, se requiere de tablas que contengan las direcciones fı́sicas de comienzo de cada frame en uso, mas sus bits de control para permisos, y demás atributos. Estas tablas no pueden residir en otro sitio que en la memoria principal del sistema. Por lo tanto en un subsistema de paginación con n niveles jerárquicos, cada acceso a una dirección de memoria principal implicará previamente realizar n lecturas de descritpores desde dicha memoria. Es necesario incluir un elemento que evite esta pérdida de rendimiento que impactarı́a seriamente el tiempo de ejecución de los procesos. Por lo general todos los procesadores que cuentan con soporte de paginación incluyen un buffer de traducción conocido como TLB, por sus siglas en inglés de Traslation Lookaside Buffer. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 24 / 103 Soporte del Procesador Paginación Buffer de traducciones Cualquiera sea el sistema de traducción de direcciones a implementar en la paginación, se requiere de tablas que contengan las direcciones fı́sicas de comienzo de cada frame en uso, mas sus bits de control para permisos, y demás atributos. Estas tablas no pueden residir en otro sitio que en la memoria principal del sistema. Por lo tanto en un subsistema de paginación con n niveles jerárquicos, cada acceso a una dirección de memoria principal implicará previamente realizar n lecturas de descritpores desde dicha memoria. Es necesario incluir un elemento que evite esta pérdida de rendimiento que impactarı́a seriamente el tiempo de ejecución de los procesos. Por lo general todos los procesadores que cuentan con soporte de paginación incluyen un buffer de traducción conocido como TLB, por sus siglas en inglés de Traslation Lookaside Buffer. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 24 / 103 Soporte del Procesador Paginación Buffer de traducciones Cualquiera sea el sistema de traducción de direcciones a implementar en la paginación, se requiere de tablas que contengan las direcciones fı́sicas de comienzo de cada frame en uso, mas sus bits de control para permisos, y demás atributos. Estas tablas no pueden residir en otro sitio que en la memoria principal del sistema. Por lo tanto en un subsistema de paginación con n niveles jerárquicos, cada acceso a una dirección de memoria principal implicará previamente realizar n lecturas de descritpores desde dicha memoria. Es necesario incluir un elemento que evite esta pérdida de rendimiento que impactarı́a seriamente el tiempo de ejecución de los procesos. Por lo general todos los procesadores que cuentan con soporte de paginación incluyen un buffer de traducción conocido como TLB, por sus siglas en inglés de Traslation Lookaside Buffer. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 24 / 103 Soporte del Procesador Paginación Buffer de traducciones Cualquiera sea el sistema de traducción de direcciones a implementar en la paginación, se requiere de tablas que contengan las direcciones fı́sicas de comienzo de cada frame en uso, mas sus bits de control para permisos, y demás atributos. Estas tablas no pueden residir en otro sitio que en la memoria principal del sistema. Por lo tanto en un subsistema de paginación con n niveles jerárquicos, cada acceso a una dirección de memoria principal implicará previamente realizar n lecturas de descritpores desde dicha memoria. Es necesario incluir un elemento que evite esta pérdida de rendimiento que impactarı́a seriamente el tiempo de ejecución de los procesos. Por lo general todos los procesadores que cuentan con soporte de paginación incluyen un buffer de traducción conocido como TLB, por sus siglas en inglés de Traslation Lookaside Buffer. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 24 / 103 Soporte del Procesador Paginación Buffer de traducciones Cualquiera sea el sistema de traducción de direcciones a implementar en la paginación, se requiere de tablas que contengan las direcciones fı́sicas de comienzo de cada frame en uso, mas sus bits de control para permisos, y demás atributos. Estas tablas no pueden residir en otro sitio que en la memoria principal del sistema. Por lo tanto en un subsistema de paginación con n niveles jerárquicos, cada acceso a una dirección de memoria principal implicará previamente realizar n lecturas de descritpores desde dicha memoria. Es necesario incluir un elemento que evite esta pérdida de rendimiento que impactarı́a seriamente el tiempo de ejecución de los procesos. Por lo general todos los procesadores que cuentan con soporte de paginación incluyen un buffer de traducción conocido como TLB, por sus siglas en inglés de Traslation Lookaside Buffer. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 24 / 103 Soporte del Procesador Paginación Buffer de traducciones Cualquiera sea el sistema de traducción de direcciones a implementar en la paginación, se requiere de tablas que contengan las direcciones fı́sicas de comienzo de cada frame en uso, mas sus bits de control para permisos, y demás atributos. Estas tablas no pueden residir en otro sitio que en la memoria principal del sistema. Por lo tanto en un subsistema de paginación con n niveles jerárquicos, cada acceso a una dirección de memoria principal implicará previamente realizar n lecturas de descritpores desde dicha memoria. Es necesario incluir un elemento que evite esta pérdida de rendimiento que impactarı́a seriamente el tiempo de ejecución de los procesos. Por lo general todos los procesadores que cuentan con soporte de paginación incluyen un buffer de traducción conocido como TLB, por sus siglas en inglés de Traslation Lookaside Buffer. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 24 / 103 Soporte del Procesador Paginación Traslation Lookaside Buffer Dirección Virtual Número de Página Offset TLB Nº de Página Entrada en la tabla de Páginas Número de Página Número de Frame Bits de control Número de Página Número de Frame Bits de control Número de Página Número de Frame Bits de control Número de Página Número de Frame Bits de control Número de Página Número de Frame Bits de control Número de Página Número de Frame Bits de control Número de Página Número de Frame Bits de control Número de Página Número de Frame Bits de control Número de Frame Offset Dirección Física Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 25 / 103 Soporte del Procesador Segmentación La segmentación provee al programador una visión de la memoria en forma de espacios contı́nuos que contienen unidades de programa completas: Un bloque completo de código, una pila completa, o todos los datos que utiliza el programa. Las referencias a memoria desde los programas se realizan también con Direcciones Lógicas, que en este caso se componen de un Número de Segmento y un Desplazamiento u Offset. Dirección Virtual Nº de Segmento Offset Entrada en la tabla de Segmentos Dirección Base Longitud Bits de A PM control Los bits P (Presente), A (Accedido), y M (Modificado) tienen la misma finalidad y significado que los bits de control de las Entradas de Tablas de Páginas. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 26 / 103 Soporte del Procesador Segmentación Traducción a memoria fı́sica Dirección Virtual Nº de Segmento Offset Dirección Física + Offset Dirección Base + Registro Puntero a Tabla de Segmentos Programa Alejandro Furfaro () Nº de Segmento Offset Longitud Base Tabla de segmentos Mecanismo de Segmentación Memoria Física Procesador IA-32 - Gestión de Memoria Mayo de 2011 27 / 103 Soporte del Procesador Segmentación Limitaciones de la segmentación para manejo de VM Al tener tamaño variable, los segmentos requieren mas carga de procesamiento para los algoritmos de intercambio de segmentos que realizará el sistema Operativos Generan además granularidad en memoria tornando mas ineficiente el funcionamiento del sistema. Se debe incluir una polı́tica de partición de memoria en bloques de modo que cada segmento pueda alojarse en un bloque cuyo tamaño sea el mejor aproximado a su tamaño. En general, los procesadores que soportan segmentación, para gestión de memoria virtual incluyen una unidad de paginación que permita dividir el espacio lineal de un segmento en páginas y gestionar cuales de estas estarán en la memoria principal del sistema en cada momento. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 28 / 103 Soporte de Paginación de los procesadores IA-32 IA-32 Memory Management Unit Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 29 / 103 Soporte de Paginación de los procesadores IA-32 Unidad de Paginación En los primeros procesadores (hasta el Pentium Pro), el tamaño de página es fijo: 4Kbytes. A partir del Pentium Pro cada tarea puede optar por tener páginas de 4 Kbytes, 2 Mbytes, o 4 Mbytes. Las páginas son contiguas y a diferencia de los segmentos no se solapan. El máximo tamaño de un espacio lineal es 4 Gbytes. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 30 / 103 Soporte de Paginación de los procesadores IA-32 Descriptor de Directorio de Página Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 31 / 103 Soporte de Paginación de los procesadores IA-32 Descriptor de Tabla de Página Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 32 / 103 Soporte de Paginación de los procesadores IA-32 Registros de Control para Paginación Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 33 / 103 Soporte de Paginación de los procesadores IA-32 ¿Que sucede cuando 4 Gbytes no es suficiente? Desde el procesador Pentium Pro, se advirtió que para los servidores de alta performance los 4 Gbytes de memoria fı́sica resultarı́an insuficientes. Se implementa PAE (Phisical Address Extension) Se habilita con el bit 5 del CR4. Habilita la generación de direcciones fı́sicas de 36 bits. (El procesador tiene los 4 pines adicionales Se administra mediante paginación). Secuencia de habilitación Setear PG (bit 31 de CR0) Setear PAE (bit 5 de CR4) El procesador soporta dos tamaños de página: 4 Kbytes y 2 Mbytes. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 34 / 103 Soporte de Paginación de los procesadores IA-32 Registros de Control para PAE Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 35 / 103 Soporte de Paginación de los procesadores IA-32 Tablas de Traducción con PAE Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 36 / 103 Soporte de Paginación de los procesadores IA-32 Tablas de Traducción con PAE Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 37 / 103 Soporte de Paginación de los procesadores IA-32 Descriptores de páginas con PAE activa Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 38 / 103 Soporte de Paginación de los procesadores IA-32 Descriptores de páginas con PAE activa Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 39 / 103 Soporte de Paginación de los procesadores IA-32 ¿PSE-36? Alternativa para direccionar memoria fı́sica con 36 bits. Permite manipular 64 Gbytes de memoria fı́sica. Si está disponible CPUID devuelve bit 17 de EDX seteado. PAE en CR4 DEBE estar deshabilitado!! Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 40 / 103 Soporte de Paginación de los procesadores IA-32 Registros de Control para PSE-36 Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 41 / 103 Soporte de Paginación de los procesadores IA-32 Tablas de Traducción con PSE-36 Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 42 / 103 Soporte de Paginación de los procesadores IA-32 Descriptores de páginas con PSE-36 activa Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 43 / 103 Paginación en Linux Lineamientos para la Implementación Paginas de tamaño fijo (4 u 8 KB) Definiciones: PAGE = Es el rango de direcciones lineales mapeados dentro de esa página, junto con los datos contendidos por dichas direcciones (En la jerga, “data chunk”). Page Frame = Es el área de memoria que contiene una página, por eso también se la puede encontrar bajo el nombre de physical page, o page container. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 44 / 103 Paginación en Linux Modos de Paginación soportados Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 45 / 103 Paginación en Linux Modos de Paginación soportados Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 46 / 103 Paginación en Linux Multiplataforma Procesador alpha IA-64 ppc64 sh64 x86-64 Tamaño de Página 8 Kbytes 4 Kbytes 4 Kbytes 4 Kbytes 4 Kbytes Alejandro Furfaro () Bits de Address 43 39 41 41 48 Niveles de Paginación 3 3 3 3 4 Procesador IA-32 - Gestión de Memoria División Dir. Lineal 10+10+10+13 9+9+9+12 10+10+9+12 10+10+9+12 9+9+9+9+12 Mayo de 2011 47 / 103 Software del Sistema Operativo Objetivos Requerimiento para los algoritmos de VM 1 2 El medio: Minimizar los accesos a memoria virtual, o dicho de otro modo, minimizar los fallos de página (o de segmento si no se cuenta con soporte a paginación). Factores que inciden significativamente en las decisiones de los algoritmos: El tamaño de la memoria fı́sica instalada vs. la capacidad de direccionamiento del procesador La cantidad de procesos que compiten por ejecución y el tamaño de las áreas de memoria que cada uno requiera. La relación de velocidad de acceso entre la memoria fı́sica y la virtual. Conclusión: Solo podemos describir polı́ticas. En cada caso se deberá analizar en función de estos factores, la mas conveniente de aplicar. Lo único seguro es utilizar paginación siempre que esté disponible. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 48 / 103 Software del Sistema Operativo Polı́ticas de lectura Polı́ticas de lectura Por Demanda Se carga una página a memoria principal cuando se genera un fallo de Página. Al principio habrá una cantidad grande de fallos, y luego el principio de vecindad se encargará de mantener la cantidad de fallos en un nivel muy bajo. Paginación Previa Consiste en aprovechar las capacidad de buffering de los dispositivos de disco actuales, y traer no solo la página referenciada sino sus vecinas, de modo que se aprovecha el tiempo de transferencia para traer mas cantidad de páginas que de acuerdo con el principio de vecindad tienen alta probabilidad de ser accedidas en un futuro cercano. El problema es que se pueden traer páginas que finalmente no sean utilizadas. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 49 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmos básicos Óptima Selecciona para reemplazar a la página que mas deberá esperar para ser referenciada. Implica conocer de antemano el comportamiento futuro de cada proceso. Esto es prácticamdnte imposible. Sin embargo es la referencia para comparar los algoritmos que si son implementables LRU Least Recently Used. Reemplazará a aquella página que lleva mas tiempo sin ser referenciada. Obedece al principiode vecindad. Tiene mas costo computacional. FIFO Fisrt In First Out. Trata a los frames mediante un buffer circular desalojando las páginas de memoria mediante un simple algoritmo Round Robin. Es mas ágil que LRU pero no aplica el principio de vecindad, con lo cual su eficiencia es menor. Clock Mejora la efciencia de LRU, utilizando el bit A (Accedido) de la entrada de Tabla de páginas (o segmento). Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 50 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo de reloj Primer frame 0 en el buffer circular Pag .9 1 Pag .7 A=0 A=0 M=1 M=1 Pag .94 A=0 2 M=0 Pag .95 A=1 M=0 Pag .96 A=1 M=0 Pag .97 A=0 M=1 Pag .45 A=1 5 M=0 Pag .13 Pag .121 A=0 Pag .47 Pag .46 A=1 M=0 A=0 A=0 M=0 9 6 M=0 M=1 3 Última Reemplazada 4 7 8 Siguiente a reemplazar Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 51 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Supongamos esta secuencia de acceso a frames: Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 52 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 53 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 54 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 55 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 56 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 57 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 58 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 59 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 60 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 61 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 62 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 63 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Optimo Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 64 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 65 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 66 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 67 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 68 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 69 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 70 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 71 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 72 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 73 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 74 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 75 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo LRU Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 76 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 77 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 78 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 79 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 80 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 81 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 82 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 83 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 84 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 85 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 86 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 87 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo FIFO Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 88 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 89 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 90 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 91 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 92 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 93 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 94 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 95 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 96 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 97 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 98 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 99 / 103 Software del Sistema Operativo Polı́ticas de Reemplazo Algoritmo Reloj Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 100 / 103 Software del Sistema Operativo Gestión del Conjunto de Páginas Residentes Tamaño del conjunto de páginas residentes A menor cantidad de páginas por proceso en memoria, mayor será la cantidad de procesos que puedan alojarse en memoria principal para su ejecución, y también mayor es la probabilidad de tener mas cantidad de fallos de página. Existe una cantidad de páginas por proceso en memoria por encima de la cual no se disminuye la cantidad de fallos de página. Con estos lineamientos se puede encintrar dos polı́ticas posibles 1 2 Asignación Fija. Cada proceso recibe en el momento de su carga una cantidad fija de páginas. Cada vez que genere un fallo de página el SO seleccionará para reemplazar una página del proceso que generó el fallo. Asignación Variable. Aumenta la cantidad de páginas a aquellos procesos que tienen una alta tasa de fallos de página. Puede ser mas costoso en términos de rendimiento ya que las evaluaciones que debe hacer consumen CPU necesariamente. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 101 / 103 Software del Sistema Operativo Gestión del Conjunto de Páginas Residentes Soporte VM en Linux Polı́ticas implementadas Utiliza el algoritmo Clock para desalojar páginas de memoria principal. Con ayuda del bit A en el caso de los procesadores que lo soporten en el descriptor de entrada de Tabla de Página, se mantiene una variable de 8 bits que representa la edad de una página. Cada vez que se accede a una página se incrementa la variable edad. Una página de edad 0 es considerda vieja (nunca se incrementó). De este modo con ayuda del algoritmo Clock se construye un LRU bastante aproximado. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 102 / 103 Software del Sistema Operativo Gestión del Conjunto de Páginas Residentes Muchas Gracias. Alejandro Furfaro () Procesador IA-32 - Gestión de Memoria Mayo de 2011 103 / 103