Memoria principal 9 - Sistemas operativos y distribuidos - PDF

Document Details

OptimisticCantor

Uploaded by OptimisticCantor

DCIC - UNS

2024

Gustavo Distel

Tags

memoria principal sistemas operativos arquitectura de computadoras

Summary

Estos apuntes del curso SOYD 2024 proporcionan un resumen sobre la memoria principal en sistemas operativos y distribuidos, incluyendo temas como la asignaciĆ³n de memoria contigua, paginaciĆ³n, estructura de tabla de pĆ”ginas y "swapping".

Full Transcript

Memoria principal 9 Sistemas operativos y distribuidos Gustavo Distel [email protected] DCIC - UNS Memoria principal Contenido Generalidades. AsignaciĆ³n de memoria contigua...

Memoria principal 9 Sistemas operativos y distribuidos Gustavo Distel [email protected] DCIC - UNS Memoria principal Contenido Generalidades. AsignaciĆ³n de memoria contigua. PaginaciĆ³n. Estructura de la tabla de pĆ”ginas. Swapping. Ejemplo: arquitecturas Intel de 32 y 64 bits. Ejemplo: arquitectura ARMv8. 2 SOYD 2024 - Gustavo C. Distel OrganizaciĆ³n de una computadora JerarquĆ­a de dispositivos de almacenamiento Memoria principal (RAM): ā—‹ La CPU carga instrucciones sĆ³lo desde la memoria ā†’ cualquier programa debe cargarse primero en memoria para ejecutarse (ciclo instrucciĆ³n-ejecuciĆ³n). ā—‹ La memoria principal es pequeƱa para almacenar todos los programas y datos necesarios de forma permanente. Y, a su vez, es volĆ”til. Memoria secundaria: ā—‹ ExtensiĆ³n de la memoria principal, ejemplo: HDD/SSD/ļ¬‚ash memory/Cinta. ā—‹ Almacena grandes cantidades de datos de forma permanente. Se puede organizar en una jerarquĆ­a de acuerdo con la capacidad de almacenamiento y el tiempo de acceso. Regla general: existe una relaciĆ³n entre el tamaƱo y la velocidad (memoria mĆ”s pequeƱa y mĆ”s rĆ”pida cerca de la CPU). AdemĆ”s, se debe considerar otra variable: el costo. 3 SOYD 2024 - Gustavo C. Distel Generalidades La administraciĆ³n de la memoria es fundamental, dado que Ć©sta se comparte entre mĆŗltiples procesos. La mayorĆ­a de los algoritmos de administraciĆ³n de memoria requieren soporte de HW, por lo que muchos sistemas tienen una gestiĆ³n de memoria estrechamente integrada entre el HW y el SO. La memoria consta de una gran arreglo de bytes, cada uno con su propia direcciĆ³n. A medida que un programa se ejecuta, la unidad de memoria solo ve un ļ¬‚ujo de direcciones de memoria; no sabe cĆ³mo se generan o para quĆ© sirven (instrucciones o datos). En consecuencia, se puede ignorar cĆ³mo se genera una direcciĆ³n de memoria, solo interesa la secuencia de direcciones de memoria generadas por el programa en ejecuciĆ³n. 4 SOYD 2024 - Gustavo C. Distel Generalidades Hardware BĆ”sico Se debe proteger el SO de los procesos del usuario, asĆ­ como tambiĆ©n proteger los procesos de los usuarios entre sĆ­. El HW debe proporcionar esta protecciĆ³n, ya que el SO no suele intervenir entre la CPU y sus accesos a la memoria (por razones de performance). Primero se debe asegurar que cada proceso tenga un espacio de memoria separado. Esta disposiciĆ³n protege los procesos entre sĆ­, dado que es fundamental contar con mĆŗltiples procesos cargados en la memoria y ejecutarlos concurrentemente. A su vez, se necesita determinar el rango de direcciones legales a las que puede acceder el proceso y garantizar que el proceso solo pueda acceder a dichas direcciones. Esta protecciĆ³n se puede proveer mediante el uso de dos registros: un base y un lĆ­mite. 5 SOYD 2024 - Gustavo C. Distel Generalidades Hardware BĆ”sico El registro base contiene la direcciĆ³n de memoria fĆ­sica legal mĆ”s pequeƱa. El registro lĆ­mite especiļ¬ca el rango. Por ej.: si base = 300.040 y lĆ­mite = 120.900, entonces el programa puede acceder a todas las direcciones entre 300.040 y 420.939 (inclusive). La protecciĆ³n del espacio de memoria se logra haciendo que el HW de la CPU compare cada direcciĆ³n generada en modo usuario con los registros. 6 SOYD 2024 - Gustavo C. Distel Generalidades Hardware BĆ”sico Cualquier intento de un programa que se ejecute en modo usuario de acceder a memoria del SO o a memoria de otros usuarios, resulta en una trap al SO (error fatal). Este esquema evita que un programa de usuario modiļ¬que (accidental o deliberadamente) el cĆ³digo o las estructuras de datos del SO o de otros usuarios. 7 SOYD 2024 - Gustavo C. Distel Generalidades Hardware BĆ”sico Los registros base y lĆ­mite solo pueden ser cargados por el SO con una instrucciĆ³n privilegiada. Dado que las instrucciones privilegiadas se pueden ejecutar solo en modo kernel, y que el SO es el Ćŗnico que se ejecuta en modo kernel, solo este puede cargar los registros base y lĆ­mite. Este esquema permite que el SO cambie el valor de los registros y evita que los programas de usuario cambien el contenido de los registros. El SO tiene acceso ilimitado tanto a su memoria como a la memoria de los usuarios. Esto le permite cargar los programas de los usuarios en la memoria de los usuarios, hacer dump en caso de errores, acceder y modiļ¬car los parĆ”metros de las llamadas al sistema, realizar E/S desde y hacia la memoria del usuario y proporcionar otros servicios. Por ejemplo, el sistema operativo realiza cambios de contexto almacenando el estado de un proceso de los registros en la memoria principal antes de cargar el contexto del siguiente proceso desde la memoria principal a los registros. 8 SOYD 2024 - Gustavo C. Distel Generalidades Enlace de direcciones (Address Binding) Un programa pasa por varias etapas (algunas opcionales) antes de ejecutarse. Las direcciones se representan de diferentes formas en estas etapas. Las direcciones en el programa fuente son generalmente simbĆ³licas (ej.: una variable). El compilador enlaza (binds) estas direcciones simbĆ³licas a direcciones reubicables (14 bytes desde el comienzo de este mĆ³dulo). El enlazador (linker) o cargador (loader) a su vez enlaza las direcciones reubicables a direcciones absolutas (como 74014). Cada enlace (binding) es una asignaciĆ³n de un espacio de direcciones a otro. 9 SOYD 2024 - Gustavo C. Distel Generalidades Enlace de direcciones (Address Binding) El enlace de instrucciones y datos a direcciones de memoria se puede hacer en: ā—‹ Tiempo de compilaciĆ³n: si se sabe en tiempo de compilaciĆ³n dĆ³nde residirĆ” el proceso en memoria, se puede generar cĆ³digo absoluto. Si la ubicaciĆ³n de inicio cambia, entonces es necesario volver a compilar el cĆ³digo. ā—‹ Tiempo de carga: si no se sabe en tiempo de compilaciĆ³n dĆ³nde residirĆ” el proceso en memoria, entonces el compilador debe generar cĆ³digo reubicable. El enlace (binding) ļ¬nal se retrasa hasta la carga. Si la direcciĆ³n de inicio cambia, solo necesitamos volver a cargar el cĆ³digo de usuario para incorporar este valor modiļ¬cado. ā—‹ Tiempo de ejecuciĆ³n: si el proceso se puede mover durante su ejecuciĆ³n de un segmento de memoria a otro, el enlace debe retrasarse hasta ejecuciĆ³n. Se necesita HW especial para este esquema. La mayorĆ­a de los SOs usan este mĆ©todo. 10 SOYD 2024 - Gustavo C. Distel Generalidades Espacio de direcciones lĆ³gico versus fĆ­sico Una direcciĆ³n generada por la CPU es una direcciĆ³n lĆ³gica, mientras que una direcciĆ³n en la unidad de memoria es una direcciĆ³n fĆ­sica. El enlace de direcciones en tiempo de compilaciĆ³n o carga generan direcciones lĆ³gicas y fĆ­sicas idĆ©nticas. Sin embargo, el esquema en tiempo de ejecuciĆ³n resulta en diferentes direcciones lĆ³gicas y fĆ­sicas. Una direcciĆ³n lĆ³gica tambiĆ©n es conocida como una direcciĆ³n virtual (virtual address). El conjunto de todas las direcciones lĆ³gicas generadas por un programa es el espacio de direcciones lĆ³gicas (logical address space). El conjunto de todas las direcciones fĆ­sicas correspondientes a estas direcciones lĆ³gicas es el espacio de direcciones fĆ­sicas (physical address space). Por lo tanto, en el esquema de enlace de direcciones en tiempo de ejecuciĆ³n, los espacios de direcciones lĆ³gicos y fĆ­sicos diļ¬eren. 11 SOYD 2024 - Gustavo C. Distel Generalidades Espacio de direcciones lĆ³gico versus fĆ­sico El mapeo en tiempo de ejecuciĆ³n de direcciones virtuales a fĆ­sicas se realiza mediante HW llamado unidad de administraciĆ³n de memoria (memory-management unit - MMU). 12 SOYD 2024 - Gustavo C. Distel Generalidades Espacio de direcciones lĆ³gico versus fĆ­sico El registro base ahora se denomina registro de reubicaciĆ³n (relocation register). El valor en el registro de reubicaciĆ³n se agrega a cada direcciĆ³n generada por un proceso de usuario en el momento en que la direcciĆ³n se envĆ­a a memoria. Por ej., si base es 14000, entonces un intento del usuario de acceder a la ubicaciĆ³n 0 se reubica dinĆ”micamente en la ubicaciĆ³n 14000; un acceso a la ubicaciĆ³n 346 se asigna a la ubicaciĆ³n 14346. 13 SOYD 2024 - Gustavo C. Distel Generalidades Espacio de direcciones lĆ³gico versus fĆ­sico El programa de usuario trata con direcciones lĆ³gicas. El HW de mapeo convierte las direcciones lĆ³gicas en direcciones fĆ­sicas. La ubicaciĆ³n ļ¬nal de una direcciĆ³n de memoria no se determina hasta que se haga la referencia. Ahora tenemos dos tipos diferentes de direcciones: ā—‹ Direcciones lĆ³gicas (en el rango de 0 a max). ā—‹ Direcciones fĆ­sicas (en el rango de R + 0 a R + max para un valor base R). El programa de usuario genera solo direcciones lĆ³gicas y considera que el proceso se ejecuta en ubicaciones de memoria de 0 a max. Sin embargo, estas direcciones lĆ³gicas deben asignarse a direcciones fĆ­sicas antes de ser utilizadas. 14 SOYD 2024 - Gustavo C. Distel Generalidades Carga dinĆ”mica Con la carga dinĆ”mica, una rutina no se carga hasta que se invoca. Cuando una rutina necesita llamar a otra, primero veriļ¬ca si la otra rutina se ha cargado. ā—‹ Si no es asĆ­, se llama al cargador de enlaces reubicable para cargar la rutina deseada en la memoria y actualizar las tablas de direcciones del programa. La ventaja es que una rutina se carga solo cuando se necesita, ahorrando memoria fĆ­sica. Este mĆ©todo es Ćŗtil cuando se necesitan grandes cantidades de cĆ³digo para manejar casos que ocurren con poca frecuencia, como las rutinas de error. La carga dinĆ”mica no requiere soporte del SO. Es responsabilidad de los usuarios diseƱar programas para aprovecharla. Sin embargo, los SOs ayudan al programador al proporcionar rutinas de biblioteca para implementarla. 15 SOYD 2024 - Gustavo C. Distel Generalidades Enlaces dinĆ”micos y bibliotecas compartidas Las bibliotecas enlazadas dinĆ”micamente (Dynamically linked libraries - DLLs) son bibliotecas del sistema que se enlazan a los programas de usuario cuando se ejecutan. AquĆ­ el enlace, en lugar de la carga, se pospone hasta el momento de ejecuciĆ³n; esta caracterĆ­stica se usa generalmente con bibliotecas del sistema, como la estĆ”ndar C. Sin DLLs cada programa deberĆ­a incluir una copia de la biblioteca (o rutina/s) en la imagen ejecutable. A su vez las DLLs se pueden compartir entre mĆŗltiples procesos, de modo que solo una instancia de la DLL estĆ© en memoria principal. ā—‹ Las DLLs tambiĆ©n se conocen como bibliotecas compartidas (shared libraries) y se usan ampliamente en sistemas Windows y Linux. A diferencia de la carga dinĆ”mica, los enlaces dinĆ”micos y las bibliotecas compartidas generalmente requieren la ayuda del SO. El SO es el Ćŗnico que puede veriļ¬car si la rutina estĆ” en el espacio de memoria de otro proceso o que puede permitir que mĆŗltiples procesos accedan a las mismas direcciones de memoria. 16 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua La memoria generalmente se divide en dos particiones: ā—‹ SO. ā—‹ Procesos de usuarios. El SO puede estar en direcciones de memoria baja o en direcciones de memoria alta. Esta decisiĆ³n depende de muchos factores, como la ubicaciĆ³n del vector de interrupciones. Sin embargo, muchos SOs (incluidos Linux y Windows) colocan el SO en memoria alta. En este esquema, cada proceso estĆ” contenido en una sola secciĆ³n de memoria contigua a la secciĆ³n que contiene el siguiente proceso. 17 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua ProtecciĆ³n de memoria En un sistema con registro de reubicaciĆ³n y con registro lĆ­mite se puede evitar que un proceso acceda a memoria que no le pertenece. El registro de reubicaciĆ³n contiene el valor de la direcciĆ³n fĆ­sica mĆ”s pequeƱa; el registro lĆ­mite contiene el rango de direcciones lĆ³gicas (por ej., reubicaciĆ³n = 100040, lĆ­mite = 74600). Cada direcciĆ³n lĆ³gica debe estar dentro del rango especiļ¬cado por el registro lĆ­mite. La MMU mapea la direcciĆ³n lĆ³gica dinĆ”micamente sumando el valor del registro de reubicaciĆ³n. 18 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua ProtecciĆ³n de memoria Cuando el planiļ¬cador de la CPU selecciona un proceso para ejecutar, el despachador carga los registros de reubicaciĆ³n y lĆ­mite con los valores correctos en el cambio de contexto. Debido a que cada direcciĆ³n generada por la CPU se compara con estos registros, podemos proteger tanto el SO como el resto de los programas y datos de los usuarios para que no sean modiļ¬cados por este proceso en ejecuciĆ³n. El esquema de registro de reubicaciĆ³n proporciona una forma efectiva para permitir que el tamaƱo del SO cambie dinĆ”micamente, por ej. para cargar un controlador de dispositivo. 19 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua. AsignaciĆ³n de memoria Uno de los mĆ©todos mĆ”s simples para asignar memoria es asignar procesos a particiones de tamaƱo variable en la memoria, donde cada particiĆ³n puede contener exactamente un proceso. En este esquema, el SO mantiene una tabla que indica quĆ© partes de la memoria estĆ”n disponibles y cuĆ”les estĆ”n ocupadas. Inicialmente, toda la memoria estĆ” disponible para los procesos del usuario y se considera un gran bloque de memoria disponible, un hueco. Finalmente, con el uso, la memoria contiene un conjunto de huecos de varios tamaƱos. 20 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua. AsignaciĆ³n de memoria Cuando un proceso arriba y necesita memoria, el sistema busca un hueco en el conjunto que sea lo suļ¬cientemente grande. Si el hueco es demasiado grande, se divide en dos partes. Una parte se asigna al proceso que arriba; la otra se devuelve al conjunto de huecos. Cuando un proceso termina, libera su bloque de memoria, que luego se vuelve a colocar en el conjunto de huecos. Si el nuevo hueco es adyacente a otros huecos, estos se fusionan para formar un hueco mĆ”s grande. Este procedimiento es un caso particular del problema general de asignaciĆ³n dinĆ”mica de almacenamiento, que se reļ¬ere a cĆ³mo satisfacer una solicitud de tamaƱo n de una lista de huecos libres. Hay muchas soluciones a este problema. Las estrategias de primer ajuste, mejor ajuste y peor ajuste son las mĆ”s utilizadas para seleccionar un hueco libre del conjunto de huecos disponibles. 21 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua. AsignaciĆ³n de memoria Primer ajuste: asigna el primer hueco que sea lo suļ¬cientemente grande. ā—‹ La bĆŗsqueda puede comenzar al comienzo o en el lugar donde ļ¬nalizĆ³ la bĆŗsqueda previa. ā—‹ Se puede dejar de buscar tan pronto como se encuentre un hueco libre que sea lo suļ¬cientemente grande. Mejor ajuste: asigna el hueco mĆ”s pequeƱo que sea lo suļ¬cientemente grande. ā—‹ Debemos buscar en toda la lista, a menos que la lista estĆ© ordenada por tamaƱo. ā—‹ Esta estrategia produce el hueco sobrante mĆ”s pequeƱo. Peor ajuste: asigna el hueco mĆ”s grande. ā—‹ Nuevamente, debemos buscar en toda la lista, a menos que estĆ© ordenada por tamaƱo. ā—‹ Esta estrategia produce el hueco sobrante mĆ”s grande, que puede ser mĆ”s Ćŗtil que el hueco sobrante mĆ”s pequeƱo del enfoque de mejor ajuste. 22 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua. AsignaciĆ³n de memoria Las simulaciones han demostrado que tanto el primer ajuste como el mejor ajuste son mejores que el peor ajuste en tĆ©rminos de tiempo y utilizaciĆ³n del almacenamiento. Ni el primer ajuste ni el mejor ajuste son claramente mejores uno que otro en tĆ©rminos de utilizaciĆ³n del almacenamiento, pero el primer ajuste es generalmente mĆ”s rĆ”pido. 23 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua. FragmentaciĆ³n FragmentaciĆ³n externa: existe cuando hay suļ¬ciente espacio para satisfacer una solicitud, pero los espacios disponibles no son contiguos: el almacenamiento estĆ” fragmentado en una gran cantidad de pequeƱos huecos. ā—‹ Este problema de fragmentaciĆ³n puede ser grave. En el peor de los casos, podrĆ­amos tener un bloque de memoria libre entre cada dos procesos. ā—‹ Si todos estos pequeƱos fragmentos de memoria estuvieran en un gran bloque libre, se podrĆ­an ejecutar varios procesos mĆ”s. ā—‹ No importa quĆ© algoritmo de los anteriores se use, la fragmentaciĆ³n externa serĆ” un problema. FragmentaciĆ³n interna: memoria no utilizada que es interna a una particiĆ³n. ā—‹ Sea un esquema de asignaciĆ³n de particiones mĆŗltiples con un hueco de 18,464 bytes. Supongamos que el siguiente proceso solicita 18.462 bytes. Si asignamos exactamente el bloque solicitado, nos queda un hueco de 2 bytes. 24 SOYD 2024 - Gustavo C. Distel AsignaciĆ³n de memoria contigua. FragmentaciĆ³n Una soluciĆ³n al problema de la fragmentaciĆ³n externa es la compactaciĆ³n. El objetivo es colocar toda la memoria libre en un Ćŗnico bloque grande. Sin embargo, la compactaciĆ³n no siempre es posible. Si la reubicaciĆ³n es estĆ”tica y se realiza en el momento del ensamblado (assembly) o la carga, no se puede realizar la compactaciĆ³n. Solo es posible si la reubicaciĆ³n es dinĆ”mica y se realiza en tiempo de ejecuciĆ³n. Otra posible soluciĆ³n a la fragmentaciĆ³n externa es permitir que el espacio de direcciones lĆ³gicas de los procesos no sea contiguo, permitiendo asĆ­ que se asigne memoria fĆ­sica a un proceso donde estĆ© disponible. Esta es la estrategia utilizada en la paginaciĆ³n, la tĆ©cnica de administraciĆ³n de memoria mĆ”s utilizada por los sistemas informĆ”ticos. La fragmentaciĆ³n es un problema general de la computaciĆ³n que puede ocurrir siempre que se deba administrar bloques de datos. 25 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n Permite que el espacio de direcciones fĆ­sicas de un proceso no sea contiguo. La paginaciĆ³n evita la fragmentaciĆ³n externa y la compactaciĆ³n, dos problemas de la asignaciĆ³n de memoria contigua. Debido a que ofrece numerosas ventajas se utiliza en la mayorĆ­a de los SOs, desde servidores hasta dispositivos mĆ³viles. La paginaciĆ³n se implementa mediante la cooperaciĆ³n entre el SO y el HW. 26 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico Consta en dividir la memoria fĆ­sica en bloques de tamaƱo ļ¬jo llamados marcos (frames) y dividir la memoria lĆ³gica en bloques del mismo tamaƱo llamados pĆ”ginas (pages). Cuando un proceso se ejecuta, sus pĆ”ginas se cargan en cualquier marco disponible desde la fuente (un sistema de archivos). El espacio de direcciones lĆ³gicas podrĆ­a estar totalmente separado del espacio de direcciones fĆ­sicas, por lo que un proceso puede tener un espacio de direcciones lĆ³gicas de 64 bits aunque el sistema tenga menos de 264 bytes de memoria fĆ­sica. Cada direcciĆ³n generada por la CPU se divide en dos partes: ā—‹ Un nĆŗmero de pĆ”gina (p) y ā—‹ Un desplazamiento de pĆ”gina (d): 27 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico El nĆŗmero de pĆ”gina se utiliza como Ć­ndice en una tabla de pĆ”gina (TP - page table) por proceso. La tabla de pĆ”ginas contiene la direcciĆ³n base de cada marco en la memoria fĆ­sica, y el desplazamiento es la ubicaciĆ³n en el marco al que se hace referencia. Por lo tanto, la direcciĆ³n base del marco se combina con el desplazamiento de pĆ”gina para deļ¬nir la direcciĆ³n de memoria fĆ­sica. 28 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico El modelo de paginaciĆ³n de la memoria. 29 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico Pasos realizados por la MMU para traducir una direcciĆ³n lĆ³gica generada por la CPU a una direcciĆ³n fĆ­sica: ā—‹ 1. Extraer el nĆŗmero de pĆ”gina p y usarlo como Ć­ndice en la tabla de pĆ”ginas. ā—‹ 2. Extraer el nĆŗmero correspondiente de marco f de la tabla de pĆ”ginas. ā—‹ 3. Reemplazar el nĆŗmero de pĆ”gina p en la direcciĆ³n lĆ³gica con el nĆŗmero de marco f. Como el desplazamiento d no cambia, no se reemplaza, y el nĆŗmero de marco y el desplazamiento ahora comprenden la direcciĆ³n fĆ­sica. 30 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico El tamaƱo de la pĆ”gina (como el tamaƱo del marco) estĆ” deļ¬nido por HW. El tamaƱo de una pĆ”gina es una potencia de 2, que generalmente varĆ­a entre 4KB y 1GB por pĆ”gina, dependiendo de la arquitectura de la computadora. La selecciĆ³n de una potencia de 2 como tamaƱo de pĆ”gina hace que la traducciĆ³n de una direcciĆ³n lĆ³gica a un nĆŗmero de pĆ”gina y a un desplazamiento sea fĆ”cil. Si el tamaƱo del espacio de direcciones lĆ³gicas es de 2m, y el tamaƱo de una pĆ”gina es de 2n bytes, entonces los m-n bits de orden superior de una direcciĆ³n lĆ³gica designan el nĆŗmero de pĆ”gina, y los n bits de orden inferior designan el desplazamiento de pĆ”gina. Por lo tanto, la direcciĆ³n lĆ³gica es la siguiente: Donde p es el Ć­ndice en la tabla de pĆ”ginas y d es el desplazamiento dentro de la pĆ”gina. 31 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico DirecciĆ³n lĆ³gica: n = 2 y m = 4. PĆ”gina de 4 bytes y memoria fĆ­sica de 32 bytes (8 pĆ”ginas). La direcciĆ³n lĆ³gica 0 es la pĆ”gina 0, desplazamiento 0. Al indexar en TP la pĆ”gina 0 estĆ” en el marco 5. La direcciĆ³n lĆ³gica 0 se asigna a la direcciĆ³n fĆ­sica 20[=(5Ɨ4)+0]. La direcciĆ³n lĆ³gica 3 (pĆ”gina 0, desplazamiento 3) se asigna a la direcciĆ³n fĆ­sica 23[=(5Ɨ4)+3]. La direcciĆ³n lĆ³gica 4 es la pĆ”gina 1, desplazamiento 0; de acuerdo con la tabla de pĆ”ginas, la pĆ”gina 1 se asigna al marco 6. La direcciĆ³n lĆ³gica 4 se asigna a la direcciĆ³n fĆ­sica 24[=(6Ɨ4)+0]. La direcciĆ³n lĆ³gica 13 se asigna a la direcciĆ³n fĆ­sica 9. 32 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico Cuando usamos un esquema de paginaciĆ³n, no tenemos fragmentaciĆ³n externa: cualquier marco libre puede asignarse al proceso que lo necesite. Sin embargo, puede haber fragmentaciĆ³n interna. Por ejemplo, ā—‹ Si el tamaƱo de la pĆ”gina es de 2,048 bytes, un proceso de 72,766 bytes necesitarĆ” 35 pĆ”ginas mĆ”s 1,086 bytes. ā—‹ Se le asignarĆ”n 36 marcos, lo que darĆ” como resultado una fragmentaciĆ³n interna de: 2.048 - 1.086 = 962 bytes. En el peor de los casos, un proceso necesitarĆ­a n pĆ”ginas mĆ”s 1 byte. Se asignarĆ­a n + 1 marcos, lo que da como resultado la fragmentaciĆ³n interna de casi un marco completo. 33 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico Si el tamaƱo del proceso es independiente del tamaƱo de pĆ”gina, se espera que la fragmentaciĆ³n interna promedie media pĆ”gina por proceso. ā—‹ Entonces son deseables tamaƱos de pĆ”gina pequeƱos. Sin embargo, la sobrecarga estĆ” en la tabla de pĆ”ginas, y esta sobrecarga se reduce a medida que aumenta el tamaƱo de las pĆ”ginas. AdemĆ”s, la E/S de disco es mĆ”s eļ¬ciente cuando la cantidad de datos que se transļ¬ere es mayor. En general, los tamaƱos de pĆ”gina han crecido con el tiempo a medida que los procesos, los datos y la memoria principal se han vuelto mĆ”s grandes. En sistemas x86-64, Windows 10 admite tamaƱos de pĆ”gina de 4 KB y 2 MB. Linux tiene un tamaƱo de pĆ”gina predeterminado (generalmente 4 KB) y un tamaƱo de pĆ”gina mĆ”s grande dependiente de la arquitectura llamado huge pages. 34 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico Por lo general en una CPU de 32 bits: ā—‹ Cada entrada de la T.P. tiene una longitud de 4 bytes, pero este tamaƱo puede variar. ā—‹ Una entrada de 32 bits puede apuntar a uno de los 232 marcos de pĆ”gina fĆ­sicos. ā—‹ Si el tamaƱo del marco es de 4 KB (212), entonces un sistema con entradas de 4 bytes puede direccionar 244 bytes (o 16 TB) de memoria fĆ­sica. Entonces el tamaƱo de la memoria fĆ­sica en un sistema de memoria paginada suele ser diferente del tamaƱo lĆ³gico mĆ”xi mo de un proceso. Como se verĆ”, en la paginaciĆ³n otra informaciĆ³n debe mantenerse en las entradas de la T.P., esta informaciĆ³n reduce la cantidad de bits disponibles para direccionar los marcos de pĆ”gina. Por lo tanto, un sistema con entradas de T.P. de 32 bits puede direccionar menos memoria fĆ­sica que el mĆ”ximo posible. 35 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico Si el proceso requiere n pĆ”ginas, al menos n marcos deben estar disponibles en la memoria. 36 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico Un aspecto importante de la paginaciĆ³n es la separaciĆ³n clara entre la vista de la memoria del programador y la memoria fĆ­sica real. El programador ve la memoria como un solo espacio, que solo contiene su programa. El HW de traducciĆ³n de direcciones concilia la diferencia entre la vista de la memoria del programador y la memoria fĆ­sica real. Las direcciones lĆ³gicas se traducen en direcciones fĆ­sicas; esta asignaciĆ³n estĆ” oculta para el programador y estĆ” controlada por el SO. El proceso de usuario no puede acceder a memoria que no posee. No tiene forma de direccionar la memoria fuera de su tabla de pĆ”ginas, y la tabla incluye solo aquellas pĆ”ginas que posee el proceso. 37 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n MĆ©todo bĆ”sico El SO administra la memoria fĆ­sica manteniendo en una Ćŗnica estructura de datos de todo el sistema llamada tabla de marcos (frame table). La tabla de marcos tiene una entrada para cada marco de pĆ”gina fĆ­sico, que indica si estĆ” libre o asignado y, si estĆ” asignado, a quĆ© pĆ”gina de quĆ© proceso (o procesos). El SO mantiene una copia de la tabla de pĆ”ginas por proceso, al igual que mantiene una copia del contador de instrucciones y el contenido del registro. Esta copia se utiliza para traducir direcciones lĆ³gicas a direcciones fĆ­sicas, siempre que el SO debe asignar manualmente una direcciĆ³n lĆ³gica a una direcciĆ³n fĆ­sica. El despachador de la CPU tambiĆ©n la utiliza para deļ¬nir la tabla de pĆ”ginas de HW cuando se asigna un proceso a la CPU. Por lo tanto, la paginaciĆ³n aumenta el tiempo de cambio de contexto. 38 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n Soporte de hardware Dado que las tablas de pĆ”ginas son estructuras de datos por proceso, un puntero a esta se almacena en el bloque de control de proceso. Cuando el planiļ¬cador de la CPU selecciona un proceso para ejecutar, debe volver a cargar los registros y los valores apropiados en el HW de tabla de pĆ”ginas. Debido a su tamaƱo, la tabla de pĆ”ginas se mantiene en la memoria principal. Un registro base de tabla de pĆ”ginas (page-table base register - PTBR) apunta a la tabla de pĆ”ginas; cambiar de tablas de pĆ”ginas requiere solo cambiar este registro, reduciendo sustancialmente el tiempo de cambio de contexto. 39 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n Soporte de hardware: Translation Look-Aside Buffer (TLB) El almacenamiento de la tabla de pĆ”ginas en memoria principal conlleva a tiempos de acceso a memoria mĆ”s lentos. ā—‹ Para acceder a la ubicaciĆ³n i, primero se indexa la tabla de pĆ”ginas ā†’ un acceso. ā—‹ El nĆŗmero de marco se combina con el desplazamiento para generar la direcciĆ³n real, accediendo luego, al lugar deseado en memoria ā†’ otro acceso. ā—‹ Se necesitan dos accesos a memoria para acceder a los datos ā†’ SoluciĆ³n: TLB. El TLB es una memoria asociativa de alta velocidad. Cada entrada en el TLB consta de dos partes: una clave (o etiqueta) y un valor. Cuando al TLB se le presenta un Ć­tem, Ć©ste se compara simultĆ”neamente con todas las claves. Si se encuentra el Ć­tem, se devuelve el campo de valor correspondiente. El TLB es un ejemplo de la evoluciĆ³n de la CPU: los sistemas han pasado de no tener TLB a tener mĆŗltiples niveles de TLB, del mismo modo que tienen mĆŗltiples niveles de cachĆ©s. 40 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n Soporte de hardware: Translation Look-Aside Buffer (TLB) TLB y tablas de pĆ”ginas: el TLB contiene solo algunas de las entradas de la tabla de pĆ”ginas. Cuando la CPU genera una direcciĆ³n lĆ³gica, la MMU primero comprueba si la pĆ”gina estĆ” presente en el TLB. Si se encuentra, su nĆŗmero de marco estĆ” disponible y se utiliza para acceder a memoria. Si el nĆŗmero de pĆ”gina no estĆ” en el TLB (TLB miss), se debe acceder a la tabla de pĆ”ginas para obtener el nĆŗmero de marco y usarlo para acceder a memoria. Luego, se agrega el nĆŗmero de pĆ”gina y el nĆŗmero de marco al TLB, para que se encuentren rĆ”pidamente en la siguiente referencia. ā—‹ Si el TLB estĆ” lleno se debe seleccionar una entrada existente para su reemplazo con una polĆ­tica de reemplazo, de la cual puede o no participar el SO. 41 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n Soporte de hardware: Translation Look-Aside Buffer (TLB) 42 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n Soporte de hardware: Translation Look-Aside Buffer (TLB) Hit ratio: porcentaje de veces que se encuentra el nro. de pĆ”gina en el TLB. Un hit ratio de 80% signiļ¬ca que encontramos el nĆŗmero de pĆ”gina el 80% de las veces. Si toma 10ns acceder a la memoria ā†’ tarda 10ns cuando el nro. de pĆ”gina estĆ” en el TLB. Si no se encuentra el nro. de pĆ”gina en el TLB, primero se accede a la TP en memoria para obtener el nro. de marco (10ns) y luego acceder al byte deseado en la memoria (10ns), con un total de 20ns. Para encontrar el tiempo efectivo de acceso a la memoria (eļ¬€ective memory-access time), ponderamos el caso por su probabilidad: ā—‹ Tiempo de acceso efectivo = 0.80 Ɨ 10 + 0.20 Ɨ 20 = 12 nanosegundos Cae un 20% el tiempo de acceso promedio a la memoria (de 10 a 12 nanosegundos). Para un 99% de hit ratio, que es mucho mĆ”s realista: ā—‹ Tiempo de acceso efectivo = 0.99 Ɨ 10 + 0.01 Ɨ 20 = 10.1 nanosegundos Esta mayor tasa de aciertos produce solo una disminuciĆ³n del 1% en el tiempo de acceso. 43 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n Soporte de hardware: Translation Look-Aside Buffer (TLB) El TLB es una caracterĆ­stica de HW y, por lo tanto, parecerĆ­a poco importante para los SOs y sus diseƱadores. Pero el diseƱador debe comprender las caracterĆ­sticas de los TLBs, que varĆ­an segĆŗn el HW. Para un correcto funcionamiento, un diseƱo de SO para una plataforma determinada debe implementar la paginaciĆ³n de acuerdo con el diseƱo del TLB de la plataforma. Del mismo modo, un cambio en el diseƱo de TLB (por ej., entre diferentes generaciones de CPU de Intel) puede requerir un cambio en la implementaciĆ³n de paginaciĆ³n de los SOs que lo utilizan. 44 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n ProtecciĆ³n La protecciĆ³n de la memoria se logra mediante bits asociados a cada marco, que por lo general se mantienen en la tabla de pĆ”ginas. Un bit puede deļ¬nir si una pĆ”gina es de lectura-escritura o de solo lectura. ā—‹ Un intento de escribir en una pĆ”gina de solo lectura provoca una trap de HW al SO. Se puede extender el HW para proporcionar protecciĆ³n de ejecuciĆ³n; al proporcionar bits de protecciĆ³n separados para cada tipo de acceso, podemos permitir cualquier combinaciĆ³n de estos accesos. Bit vĆ”lido/invĆ”lido: ā—‹ VĆ”lido: la pĆ”gina asociada estĆ” en el espacio de direcciones lĆ³gicas del proceso y, por lo tanto, es una pĆ”gina legal (o vĆ”lida). ā—‹ InvĆ”lido: la pĆ”gina no estĆ” en el espacio de direcciones lĆ³gicas del proceso. Las direcciones ilegales provocan traps mediante el uso del bit vĆ”lido no vĆ”lido. El SO establece este bit por cada pĆ”gina para permitir o no el acceso a la misma. 45 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n ProtecciĆ³n Dado un espacio de direcciones de 14 bits (0 a 16383), un programa con direcciones de 0 a 10468 y un tamaƱo de pĆ”gina de 2 KB. Las direcciones en las pĆ”ginas 0, 1, 2, 3, 4 y 5 se asignan a travĆ©s de la TP. Cualquier intento de generar una direcciĆ³n en las pĆ”ginas 6 o 7 da bit invĆ”lido generando un trap al SO (referencia de pĆ”gina no vĆ”lida). Dado que el programa se extiende solo hasta la direcciĆ³n 10468, cualquier referencia que la supere es ilegal. Sin embargo, las referencias a la pĆ”gina 5 se clasiļ¬can como vĆ”lidas, por lo que los accesos a direcciones de hasta 12287 son vĆ”lidos. Solo las direcciones de 12288 a 16383 no son vĆ”lidas. Este problema es el resultado del tamaƱo de pĆ”gina y reļ¬‚eja la fragmentaciĆ³n interna de la 46 paginaciĆ³n. SOYD 2024 - Gustavo C. Distel PaginaciĆ³n ProtecciĆ³n Por lo general, los procesos usan solo una pequeƱa fracciĆ³n del espacio de direcciones disponible. SerĆ­a un desperdicio en estos casos crear una tabla de pĆ”ginas con entradas para cada pĆ”gina en el rango de direcciones. ā—‹ La mayor parte de esta tabla no se utilizarĆ­a, pero ocuparĆ­a un valioso espacio de memoria. Algunos sistemas proporcionan HW, en forma de registro de longitud de tabla de pĆ”ginas (page-table length register - PTLR), para indicar el tamaƱo de la tabla de pĆ”ginas. Este valor se compara con cada direcciĆ³n lĆ³gica para veriļ¬car que la direcciĆ³n se encuentre en el rango vĆ”lido del proceso. ā—‹ Si falla provoca un trap al SO. 47 SOYD 2024 - Gustavo C. Distel PaginaciĆ³n PĆ”ginas compartidas Una ventaja de la paginaciĆ³n es la posibilidad de compartir cĆ³digo. El cĆ³digo reentrante es cĆ³digo que no se modiļ¬ca a sĆ­ mismo: nunca cambia durante la ejecuciĆ³n. Por lo tanto, dos o mĆ”s procesos pueden ejecutar el mismo cĆ³digo al mismo tiempo y compartirlo (por ej. la librerĆ­a libc). Algunos SOs implementan memoria compartida utilizando pĆ”ginas compartidas. 48 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas PaginaciĆ³n jerĆ”rquica En un sistema con espacio de direcciones lĆ³gicas de 232 a 264, la tabla de pĆ”ginas se vuelve excesivamente grande. Por ej. en un espacio de direcciones lĆ³gicas de 32 bits: ā—‹ Si el tamaƱo de pĆ”gina es de 4KB (212), ā—‹ La tabla de pĆ”ginas tendrĆ” mĆ”s de 1 millĆ³n de entradas (220 = 232/212). ā—‹ Suponiendo que cada entrada consta de 4 bytes, cada proceso puede necesitar hasta 4 MB de espacio de direcciones fĆ­sicas solo para la tabla de pĆ”ginas. Una soluciĆ³n simple es dividir la tabla de pĆ”ginas en partes mĆ”s pequeƱas. 49 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas PaginaciĆ³n jerĆ”rquica PaginaciĆ³n de dos niveles: la tabla de pĆ”ginas tambiĆ©n se pagina. Con direcciĆ³n lĆ³gica de 32-bit y pĆ”gina de 4KB tenĆ­amos: ā—‹ El nĆŗmero de pĆ”gina de 20 bits. ā—‹ El desplazamiento de pĆ”gina consta de 12 bits. Como la tabla de pĆ”ginas tambiĆ©n se pagina, el nĆŗmero de pĆ”gina ademĆ”s se divide en: ā—‹ El nĆŗmero de pĆ”gina de 10 bits. ā—‹ El desplazamiento de pĆ”gina de 10 bits. La direcciĆ³n lĆ³gica es la sig., donde p1 es el Ć­ndice en la TP externa, y p2 es el desplazamiento dentro de la pĆ”gina de la TP interna. 50 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas PaginaciĆ³n jerĆ”rquica Forward-mapped page table: la traducciĆ³n de direcciones funciona desde la tabla de la pĆ”gina externa hacia adentro. 51 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas PaginaciĆ³n jerĆ”rquica Para un sistema con un espacio de direcciones lĆ³gicas de 64 bits, un esquema de paginaciĆ³n de dos niveles no es apropiado. ā—‹ Si el tamaƱo de pĆ”gina es de 4 KB (212) ā†’ La tabla de pĆ”ginas tiene hasta 252 entradas. ā—‹ Con un esquema de dos niveles las tablas de pĆ”ginas internas pueden ser del tamaƱo de una pĆ”gina, o tener 210 4-bytes entradas: La tabla de la pĆ”gina externa consta de 242 entradas, o 244 bytes. Se puede paginar la tabla de la pĆ”gina externa en un esquema de paginaciĆ³n de tres niveles, con 210 entradas o 212 bytes, aunque sigue siendo grande 234 bytes (16 GB): El siguiente paso serĆ­an cuatro niveles, donde la tabla de la pĆ”gina externa del segundo nivel tambiĆ©n estĆ” paginada, y asĆ­ sucesivamente, lo cual puede terminar siendo inapropiado. 52 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas Tabla de pĆ”ginas hash El valor hash es el nĆŗmero de pĆ”gina virtual. Cada entrada en la tabla hash tiene una lista enlazada de elementos que colisionan. Cada elemento consta de tres campos: ā—‹ 1. El nĆŗmero de pĆ”gina virtual. ā—‹ 2. El valor del marco de pĆ”gina asignado. ā—‹ 3. Un puntero al siguiente elemento de la lista. El algoritmo funciona de la siguiente manera: ā—‹ El nĆŗmero de pĆ”gina virtual en la direcciĆ³n virtual se divide (hashed) en la tabla hash. El nĆŗmero de pĆ”gina virtual se compara con el campo 1 en el primer elemento de la lista enlazada. ā—‹ Si hay una coincidencia, el marco de pĆ”gina correspondiente (campo 2) se utiliza para formar la direcciĆ³n fĆ­sica deseada. ā—‹ Si no hay coincidencia, se busca en las entradas posteriores de la lista enlazada un nĆŗmero de pĆ”gina virtual coincidente. 53 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas Tabla de pĆ”ginas hash 54 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas Tabla de pĆ”ginas invertida (TPI) Una TPI tiene una entrada por cada pĆ”gina real (o marco) de memoria. Cada entrada consiste en la direcciĆ³n virtual de la pĆ”gina almacenada en esa ubicaciĆ³n de memoria real, con informaciĆ³n sobre el proceso que posee la pĆ”gina. Por lo tanto, solo hay una tabla de pĆ”ginas en el sistema y solo tiene una entrada para cada pĆ”gina de memoria fĆ­sica. Las TPIs a menudo requieren que se almacene un identiļ¬cador de espacio de direcciones en cada entrada de la tabla de pĆ”ginas, ya que la tabla generalmente contiene varios espacios de direcciones diferentes que mapean la memoria fĆ­sica. ā—‹ El PID por ej. puede asumir el rol de identiļ¬cador de espacio de direcciones. El almacenamiento del identiļ¬cador de espacio de direcciones garantiza que una pĆ”gina lĆ³gica para un proceso particular se asigne al marco de pĆ”gina fĆ­sico correspondiente. Ejemplos de sistemas que utilizan tablas de pĆ”ginas invertidas incluyen Ultra SPARC de 64 bits y Power PC. 55 SOYD 2024 - Gustavo C. Distel Estructura de la tabla de pĆ”ginas Tablas de pĆ”ginas invertidas Para IBM RT, cada direcciĆ³n virtual en el sistema consta de: ā—‹ Cada entrada de la T.P. invertida es un par donde process-id asume el rol del identiļ¬cador del espacio de direcciones. Cuando se produce una referencia a memoria, parte de la direcciĆ³n virtual, que consta de , se presenta al subsistema de memoria. Luego se busca una coincidencia en la T.P. invertida: ā—‹ Si se encuentra, por ej., en la entrada i, se genera la direcciĆ³n fĆ­sica. ā—‹ Si no se encuentra, es un acceso ilegal. 56 SOYD 2024 - Gustavo C. Distel Swapping Un proceso, o una parte de un proceso, puede sacarse temporalmente de la memoria a un almacenamiento de respaldo y luego volver a Ć©sta para continuar con su ejecuciĆ³n. El swapping (intercambio) hace posible que el espacio total de direcciones fĆ­sicas de todos los procesos exceda la memoria fĆ­sica real del sistema, aumentando asĆ­ el grado de multiprogramaciĆ³n en un sistema. 57 SOYD 2024 - Gustavo C. Distel Swapping EstĆ”ndar swapping Mueve procesos completos entre la memoria principal y un almacenamiento de respaldo. El almacenamiento debe ser lo suļ¬cientemente grande (y rĆ”pido) como para acomodar cualquier parte del proceso que deba almacenarse y recuperarse. Cuando un proceso o parte de Ć©l se intercambia al almacĆ©n de respaldo, las estructuras de datos asociadas con el proceso deben escribirse en el almacĆ©n de respaldo. Para un proceso multihilado, todas las estructuras por hilo tambiĆ©n deben intercambiarse. El SO tambiĆ©n debe mantener metadatos para los procesos que se han intercambiado, para que puedan restaurarse cuando se vuelven a intercambiar a memoria. La ventaja de este esquema es que permite que la memoria fĆ­sica se use por encima de su capacidad, de modo que el sistema pueda acomodar mĆ”s procesos que la memoria fĆ­sica real. Los procesos inactivos son buenos candidatos al swapping; ā—‹ La memoria que se haya asignado a estos procesos se puede dedicar a procesos activos. 58 SOYD 2024 - Gustavo C. Distel Swapping Swapping con paginaciĆ³n El estĆ”ndar swapping se usĆ³ en los sistemas UNIX tradicionales, aunque ya no se usa en los SO contemporĆ”neos porque la cantidad de tiempo requerida para mover procesos completos entre la memoria y el almacĆ©n de respaldo es prohibitiva. La mayorĆ­a de los sistemas, incluidos Linux y Windows, ahora usan una variaciĆ³n de swapping en el que se pueden intercambiar pĆ”ginas de un proceso, en lugar de un proceso completo. Esta estrategia tambiĆ©n permite que la memoria fĆ­sica se use por encima de su capacidad sin incurrir en el costo de intercambiar procesos completos, ya que presumiblemente solo un pequeƱo nĆŗmero de pĆ”ginas participarĆ” en el swapping. Una operaciĆ³n de page out mueve una pĆ”gina de la memoria al almacenamiento secundario; el proceso inverso se conoce como page in. Como se verĆ”, swapping con paginaciĆ³n funciona bien con memoria virtual. 59 SOYD 2024 - Gustavo C. Distel Swapping Swapping con paginaciĆ³n 60 SOYD 2024 - Gustavo C. Distel Swapping Swapping en sistemas mĆ³viles Los sistemas mĆ³viles generalmente no admiten swapping de ninguna manera. Los dispositivos mĆ³viles usan memoria ļ¬‚ash en lugar de discos duros para almacenamiento no volĆ”til. La restricciĆ³n de espacio es una de las razones por las cuales los diseƱadores de SOs mĆ³viles evitan el swapping. Otras razones incluyen el nĆŗmero limitado de escrituras que la memoria ļ¬‚ash puede tolerar antes de que no sea conļ¬able y el bajo rendimiento (throughput) entre la memoria principal y la memoria ļ¬‚ash. En lugar de utilizar swapping, cuando la memoria libre cae por debajo de un cierto umbral, iOS de Apple solicita a las aplicaciones que renuncien voluntariamente a la memoria asignada. ā—‹ Los datos de solo lectura (como el cĆ³digo) se eliminan de la memoria principal y luego se vuelven a cargar de la memoria ļ¬‚ash si es necesario. Los datos que se han modiļ¬cado (como la pila) nunca se eliminan. ā—‹ Sin embargo, el SO puede ļ¬nalizar cualquier aplicaciĆ³n que no libere suļ¬ciente memoria. 61 SOYD 2024 - Gustavo C. Distel Swapping Swapping en sistemas mĆ³viles Android adopta una estrategia similar a la utilizada por iOS. ā—‹ Puede terminar un proceso si no hay suļ¬ciente memoria libre disponible. ā—‹ Sin embargo, antes de ļ¬nalizar un proceso, Android escribe el estado de su aplicaciĆ³n en la memoria ļ¬‚ash para que pueda reiniciarse rĆ”pidamente. Debido a estas restricciones, los desarrolladores de sistemas mĆ³viles deben asignar y liberar cuidadosamente la memoria para garantizar que sus aplicaciones no utilicen demasiada memoria o sufran pĆ©rdidas. 62 SOYD 2024 - Gustavo C. Distel Ejemplos arquitecturas Ejemplo: arquitecturas Intel de 32 y 64 bits. Ejemplo: arquitectura ARMv8. 63 SOYD 2024 - Gustavo C. Distel SegmentaciĆ³n Corresponde a la versiĆ³n 9na del libro "Operating System Concepts" Silberschatz, A., Gagne G., y MĆ©todo bĆ”sico Galvin, P.B. Los programadores preļ¬eren ver a la memoria como una colecciĆ³n de segmentos de tamaƱo variable sin ningĆŗn orden. Un programador considera un programa principal con un conjunto de mĆ©todos, procedimientos o funciones. Cada uno de estos mĆ³dulos o elementos de datos se conoce por su nombre, sin importar quĆ© direcciones en memoria ocupen. Los segmentos varĆ­an en longitud, y la longitud de cada uno estĆ” intrĆ­nsecamente deļ¬nida por su propĆ³sito en el programa. Los elementos dentro de un segmento se identiļ¬can por su desplazamiento desde el principio del segmento: la primera instrucciĆ³n del programa, la quinta instrucciĆ³n de Sqrt(), y asĆ­ sucesivamente. 64 SOYD 2024 - Gustavo C. Distel SegmentaciĆ³n MĆ©todo bĆ”sico La segmentaciĆ³n es un esquema de administraciĆ³n de memoria donde un espacio de direcciones lĆ³gicas es una colecciĆ³n de segmentos. Cada segmento tiene un nombre (nĆŗmero de segmento) y una longitud (desplazamiento). Una direcciĆ³n lĆ³gica consta de: ā—‹. Por lo general, el compilador crea segmentos que reļ¬‚ejan el programa de entrada; un compilador de C podrĆ­a crear segmentos separados para: ā—‹ 1. El cĆ³digo. ā—‹ 2. Variables globales. ā—‹ 3. El heap, desde el cual se asigna la memoria. ā—‹ 4. Las pilas utilizadas por cada hilo. ā—‹ 5. La biblioteca estĆ”ndar C. 65 SOYD 2024 - Gustavo C. Distel SegmentaciĆ³n Hardware de segmentaciĆ³n Cada entrada en la tabla de segmentos tiene la base del segmento y un lĆ­mite de segmento. ā—‹ Base: contiene la direcciĆ³n fĆ­sica inicial donde reside en memoria. ā—‹ LĆ­mite: especiļ¬ca la longitud. DirecciĆ³n lĆ³gica: ā—‹ s: nĆŗmero de segmento. ā—‹ d: desplazamiento en ese segmento. El nĆŗmero de segmento se utiliza como Ć­ndice de la tabla de segmentos. El desplazamiento d debe estar entre 0 y el lĆ­mite del segmento. ā—‹ Si no es asĆ­, trap al SO. (intento de direccionamiento lĆ³gico mĆ”s allĆ” del ļ¬nal del segmento). ā—‹ Si es legal, se agrega a la base del segmento para generar la direcciĆ³n en la memoria fĆ­sica del byte deseado. 66 SOYD 2024 - Gustavo C. Distel

Use Quizgecko on...
Browser
Browser