SlideShare una empresa de Scribd logo
1 de 102
Capítulo 4
                  Gestión de memoria




Fundamentos de Computadores II         1
Sistemas Operativos
Índice


     1. Objetivos del sistema de gestión de memoria
     2. Modelo de memoria de un proceso
     3. Esquemas de memoria basados en asignación
       contigua
     4. Memoria virtual
     5. Archivos proyectados en memoria
     6. Servicios de gestión de memoria




Fundamentos de Computadores II                 2
Sistemas Operativos
1. Objetivos del sistema de
                 gestión de memoria




Fundamentos de Computadores II         3
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

• En sistemas con multiproceso, el S.O. debe “repartir” los
  recursos entre los procesos existentes:
   – Reparto de procesador: Gestión de procesos
   – Reparto de memoria: Gestión de memoria

• Objetivos del Gestor de Memoria
   A. Espacios lógicos independientes
   B. Protección entre procesos
   C. Compartición de Memoria (procesos ligeros)
   D.Soporte a las regiones del proceso
   E. Maximizar el grado de multiprogramación
   F. Mapas de memoria de un tamaño                adecuado
      (normalmente grandes)



Fundamentos de Computadores II                      4
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

A. Espacios lógicos independientes
•   A priori no se conoce la posición de memoria que ocupará un
    programa cuando vaya a ejecutarse (estado de ocupación de la
    memoria)
•   Código en ejecutable genera referencias entre 0 y N
•   Ejemplo: Programa que copia un vector

               F ic h e r o E je c u ta b le   –Vector destino a partir de
        0
        4
                                               dirección 2000
        ....          C a b e c e ra
        96                                     –Tamaño del vector en dirección
        100
        104
                  LO A D R 1, #1000
                  LO A D R 2, #2000
                                               1500
        108       L O A D R 3 , /1 5 0 0
        11 2      L O A D R 4 , [R 1 ]         –Vector origen a partir de dirección
        11 6      S T O R E R 4 , [R 2 ]
        120       IN C R 1                     1000
        124       IN C R 2
        128       D E C R 3
        132       J N Z /1 2
        136       .................




Fundamentos de Computadores II                                                 5
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

Se supone que el código del SO reside en
   las posiciones más altas.
El programa se carga en la posición 0 y para
   que se ejecute ha de pasársele el control                 M e m o r ia
                                               0
   (es decir, que el contador del programa     4
                                                         LO AD R 1, #1000
                                                         LO AD R 2, #2000
   apunte a esta posición).                    8         L O A D R 3 , /1 5 0 0
                                               12        L O A D R 4 , [R 1 ]
• Problema:Como se ve, no coinciden las        16        S T O R E R 4 , [R 2 ]
                                               20        IN C R 1
   direcciones usadas en el programa con la    24        IN C R 2
   posición a partir de la cual se carga el    28        D EC R 3
                                               32        J N Z /1 2
   programa. Suponer por ejemplo, que el       36        .................
   programa se cargara a partir de la          ....

   posición 10000....
• Solución: Reubicación de direcciones                S is te m a O p e r a tiv o
   lógicas a físicas




Fundamentos de Computadores II                                         6
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria
•   Reubicación: Traducir direcciones lógicas a direcciones físicas
    dependientes del hardware mediante una función de traducción. La
    reubicación permite crear un espacio lógico independiente para cada
    proceso y el S.O. debe poder acceder a los espacios lógicos para realizar
    la traducción.
     – Direcciones lógicas: direcciones de memoria generadas por el
         programa
     – Direcciones físicas: direcciones de memoria principal asignadas
•   Función de traducción:
        Traducción(IdProc, dir_lógica) → dir_física
     – Ejemplo:
        El programa tiene asignada memoria a partir de la dirección 10000
        Reubicación: sumar 10000 a direcciones lógicas
     – Implementación:
        o Hardware
        o Software

Fundamentos de Computadores II                                      7
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

•   Reubicación Hardware: la MMU (memory management unit) se
    encarga de la traducción
•   Proceso:
     – Programa se carga en memoria sin modificar
     – El S.O. almacena por cada proceso su función de traducción
     – El S.O. especifica a la MMU qué función aplicar para cada proceso
                                                                                                    M e m o r ia



                                 P ro c e s a d o r                                10000        LO AD R 1, #1000
                                                                                   10004        LO AD R 2, #2000
                                                H W tr a d u c c ió n              10008        L O A D R 3 , /1 5 0 0
                            PC                                                     10012        L O A D R 4 , [R 1 ]
                             8                        10000                        10016        S T O R E R 4 , [R 2 ]
                                                                        11 5 0 0
                   R . I n s tr u c c ió n   1500                                  10020        IN C R 1
                                                         +                         10024        IN C R 2
                  L O A D R 3 , /1 5 0 0
                                                                                   10028        DEC R 3
                                                                                   10032        J N Z /1 2
                                                                                   10036        .................
                                                                                   ..........




Fundamentos de Computadores II                                                                                       8
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria
•   Reubicación software: traducción de
    direcciones durante carga del programa.
    Esta solución se usa en sistemas sin el
    hardware específico de traducción                            M e m o r ia
    (MMU).
•   Proceso:
     – El programa se carga con las             10000        L O A D R 1 , #110 00
        direcciones ya traducidas               10004        LO AD R 2, #12000
                                                10008        L O A D R 3 , /1 1 5 0 0
     – Se genera un código diferente del        10012        L O A D R 4 , [R 1 ]
        programa ejecutable                     10016        S T O R E R 4 , [R 2 ]
                                                10020        IN C R 1
•   Desventajas:                                10024        IN C R 2
     – No asegura protección (no se             10028        D EC R 3
                                                10032        J N Z /1 0 0 1 2
        verifica cada dirección a usar, sino    10036        .................
        que     se  usan    las   direcciones   ..........
        generadas tras el proceso de carga)
     – No permite mover programa en
        tiempo de ejecución (suponer que
        es necesaria la reubicación del
        espacio asignado al proceso, por
        necesitar más espacio.....)


Fundamentos de Computadores II                                               9
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

B. Protección entre procesos
La protección es diferente según sea un sistema Mono o Multi programado:
    Sistema MonoProgramado: La intrusión se dará solamente entre el
       programa y el S.O.
    Sistema MultiProgramado: La intrusión puede venir tanto de otros
       procesos como de otros usuarios además del riesgo del sistema
       Monoprogramado.
• Acciones
    – La traducción de direcciones debe crear espacios disjuntos
    – Es necesario validar todas las direcciones que genera el programa
        • La detección de alguna intrusión debe realizarla el hardware del
            procesador (MMU), ya que hay que realizarla en tiempo de
            ejecución
        • El tratamiento de alguna intrusión lo hace el SO
    – En sistemas con mapa de E/S y memoria común:
    – Traducción permite impedir que los procesos accedan directamente
       a dispositivos de E/S



Fundamentos de Computadores II                                  10
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

  C. Compartición de Memoria (procesos ligeros)
  La compartición de memoria entre procesos da soporte a la creación de
      procesos ligeros y está controlado por el S.O.
  •   Acciones:
       – Las direcciones lógicas de 2 o más procesos se corresponderán con
          una misma dirección física.
       – La memoria asignada a cada proceso no puede ser ya contigua.
       – La función de traducción en estos casos se va haciendo más
                                           M a p a p ro c e s o 1
          compleja.                                                         M e m o r ia
  •   Ventajas:                               z o n a p r iv a d a 1

       – Procesos ejecutando mismo          z o n a c o m p a r t id a z o n a p r iv . 1 ( P 1 )
         programa comparten su                                         z o n a p r iv . 1 ( P 2 )
                                              z o n a p r iv a d a 2
         código
                                                                       z o n a c o m p a r tid a
       – Mecanismo de comunicación         M a p a p ro c e s o 2
         entre procesos muy rápido            z o n a p r iv a d a 1
                                                                       z o n a p r iv . 2 ( P 2 )

                                                                                 z o n a p r iv . 2 ( P 1 )
                                                     z o n a c o m p a r tid a


                                                       z o n a p r iv a d a 2


Fundamentos de Computadores II                                                                            11
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

•  Problemas:
    – Requiere       asignación     no
      contigua                                  M a p a p ro c e s o 1
                                                                                         M e m o r ia
    – Si la posición de          zona
      compartida              contiene   2000
      referencia a otra posición de              z o n a c o m p a r tid a
      la zona compartida, no se
                                                                                     z o n a c o m p a r t id a
      puede saber a qué dirección                                            10000    ¿ 110 0 ó 21 0 0 ?
      se refiere puesto que cada                                             10100
      proceso     ligero   verá    esa          M a p a p ro c e s o 2
      dirección de forma diferente
Ejemplo: Si el código, que es común,     1000
   contiene una bifurcación, no se               z o n a c o m p a r tid a
   podrá determinar a qué dirección
   se debe saltar, dependiendo del
   proceso que esté ejecutando el
   código
                                                     lógico                                físico

Fundamentos de Computadores II                                                         12
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

D. Soporte de las regiones del proceso
El mapa de memoria de un proceso no es homogéneo, ya que las regiones
    contienen diferentes tipos de información (código, datos y pila
    normalmente) y poseen diferentes características
•   Acciones:
     – Hacer mapa de memoria dinámico:
         • Regiones cambian de tamaño (p.ej. pila)
         • Se crean y destruyen regiones (el sistema de memoria debe
           controlar qué regiones están presentes, así como su tamaño)
         • Existen zonas sin asignar (huecos, con carácter dinámico)
     – Detectar accesos no permitidos a una región ( de sólo lectura por
       ej)
     – Detectar accesos a huecos
     – Evitar reservar espacio para huecos
     – Guardar y gestionar una tabla de regiones para cada proceso




Fundamentos de Computadores II                                        13
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria
E. Maximizar el grado de multiprogramación
El reparto de memoria debe ser tal que             Aprovechamiento de memoria
   maximize el grado de multiprogramación            óptimo es irrealizable!!!!
   para evitar el desperdicio de memoria           Tablas de gestión demasiado
• Memoria desperdiciada                                      grandes
    – Restos        (huecos)       inutilizables
       (fragmentación)                                                  M e m o r ia
    – Tablas requeridas por gestor de                 0    D ir e c c ió n 5 0 d e l p r o c e s o 4
       memoria                                         1   D ir e c c ió n 1 0 d e l p r o c e s o 6
• Acciones                                            2    D ir e c c ió n 9 5 d e l p r o c e s o 7
    – Crear bloques de asignación de                  3    D ir e c c ió n 5 6 d e l p r o c e s o 8
       menor tamaño                                   4    D ir e c c ió n 0 d e l p r o c e s o 1 2
    – Gestionar las tablas de asignación
                                                      5    D ir e c c ió n 5 d e l p r o c e s o 2 0
       más eficientemente
                                                      6    D ir e c c ió n 0 d e l p r o c e s o 1
    – Se opta por la paginación
                                                           .........................................
    – Uso     de    memoria     virtual     para
                                                           .........................................
       aumentar            grado              de
       multiprogramación                            N -1   D ir e c c ió n 8 8 d e l p r o c e s o 9
                                                      N    D ir e c c ió n 5 1 d e l p r o c e s o 4

Fundamentos de Computadores II                                                           14
Sistemas Operativos
1. Objetivos del sistema de gestión de memoria

F. Mapas de memoria de                   un    tamaño       adecuado
   (normalmente grandes)
Los procesos necesitan cada vez mapas más grandes: aplicaciones más
   novedosas, más recursos gráficos, más carga computacional....
•   Acciones
     – Utilizar Memoria Virtual
     – Hacer que el usuario disponga virtualmente de una enorme cantidad
       de memoria física

•   Otras opciones (antigua)
     – Overlays
        • Programa dividido en fases que se ejecutan sucesivamente
        • En cada momento sólo hay una fase residente en memoria
        • Cada fase realiza su labor y carga la siguiente
        • No es transparente: Toda la labor realizada por programador




Fundamentos de Computadores II                                 15
Sistemas Operativos
2. Modelo de memoria de un
                    proceso

        2.1.     Introducción
        2.2.     Fases en la generación de un ejecutable
        2.3.     Mapa de memoria de un proceso
        2.4.     Operaciones sobre regiones




Fundamentos de Computadores II                   16
Sistemas Operativos
Modelo de memoria de un proceso

        2.1. Introducción

  – El S.O. es el responsable de la gestión de memoria de
      cualquier proceso.
  – El mapa inicial de memoria de un proceso está relacionado
      con el archivo ejecutable que generará el proceso
  – ¿Cómo generar el mapa de memoria inicial a partir del
      ejecutable?
  – ¿Cómo se organiza el mapa de memoria?
  – ¿Cuáles son sus características básicas?
  – ¿Qué operaciones se pueden realizar en el mapa de
      memoria?

Fundamentos de Computadores II                       17
Sistemas Operativos
Modelo de memoria de un proceso

        2.2. Fases en la generación de un ejecutable
•   Aplicación: conjunto de módulos en lenguaje de alto nivel
•   Procesado en dos fases: Compilación y Montaje

•   Compilación:
      – Se asignan direcciones a los
                                           M ó d u lo                     M ó d u lo
        símbolos definidos
                                          fu e n te A                    fu e n te B
      – Resuelve referencias a los
        símbolos de cada módulo
      – Genera módulo objeto                             C o m p ila d o r


•   Montaje (o enlace):                    M ó d u lo                     M ó d u lo
                                          o b je t o A                   o b je to B             B ib lio t e c a s
      – Resuelve referencias entre
        módulos objeto
      – Resuelve referencias a símbolos                                 M o n ta d o r
        de bibliotecas
                                                                          F ic h e r o
      – Genera resultado (archivo
                                                                        e je c u t a b le
        ejecutable), que incluye las
        bibliotecas usadas


Fundamentos de Computadores II                                                              18
Sistemas Operativos
Modelo de memoria de un proceso
Biblioteca: colección de módulos objeto relacionados. Algunas bibliotecas
   son proporcionadas a los usuarios (bibliotecas) del sistema, mientras
   que otras habrán sido creadas por los usuarios (propias) (por ejemplo,
   bibliotecas de entrada salida, incluyendo las funciones como printf,
   getchar, etc, o las llamadas al sistema de POSIX)
•   Tipos:
     Estáticas: el montaje enlaza los módulos
        objeto del programa y de las bibliotecas,
        dando    como     resultado   un    ejecutable
        autocontenido.                                                   M a in

         • Desventajas:                                             F u n c ió n A
              – Ejecutables grandes                                 F u n c ió n B
                                                                                                  C ó d ig o

              – Código de función de biblioteca           F u n c ió n d e b ib lio t e c a F 1
                repetido                                  F u n c ió n d e b ib lio te c a F 2
              – Múltiples copias en memoria del
                código de función de biblioteca
              – La    actualización   de     biblioteca
                implicaría volver a montar


Fundamentos de Computadores II                                                         19
Sistemas Operativos
Modelo de memoria de un proceso

      Dinámicas: la carga y montaje se hace en tiempo de ejecución. El
        ejecutable contiene únicamente el nombre de la biblioteca y la
        rutina de carga y montaje en tiempo de ejecución
          • Proceso de carga:
              – La rutina de carga y montaje incorpora la biblioteca
                correspondiente.
              – Se ajustan las instrucciones que realizan las referencias
                a dicho símbolo, de forma que las próximas referencias
                accedan al símbolo de biblioteca correspondiente, sin que
                sea necesario activar de nuevo el proceso de montaje de la
                biblioteca.
              – Para evitar modificar el código del programa, en este
                proceso, se suelen utilizar referencias indirectas
                mediante una tabla que recoge todos los símbolos
                correspondientes a bibliotecas dinámicas. Hay que tener en
                cuenta que en algunos S.O. los segmentos de código
                ejecutables no son modificables




Fundamentos de Computadores II                                   20
Sistemas Operativos
Modelo de memoria de un proceso

           • Ventajas:

                –   Menor tamaño ejecutables
                –   Código de rutinas de biblioteca sólo en archivo de biblioteca
                –   Procesos pueden compartir código de biblioteca
                –   Actualización automática de bibliotecas: uso de versiones.
                    Suele haber en un sistemas varias versiones de la misma
                    biblioteca. Cuando un programa hace referencia a uno de
                    sus símbolos, se busca la versión adecuada

           • Desventajas:

                – Mayor tiempo de ejecución debido a carga y montaje. Se
                  trata de un retraso tolerable, ya que se compensan el resto
                  de las ventajas
                – Ejecutable no autocontenido




Fundamentos de Computadores II                                          21
Sistemas Operativos
Modelo de memoria de un proceso

           • Forma de uso :
              1. Enlace dinámico implícito: Se especifica en tiempo de
                 montaje qué biblioteca usar, pero se pospone su carga y
                 montaje a tiempo de ejecución.
              2. Uso explícito:
                  » Requerido por aplicaciones que determinan en tiempo
                     de ejecución qué bibliotecas deben usar
                  » No se especifica la biblioteca en mandato de montaje
                  » Es el programa quien solicita la carga de bibliotecas
                     mediante servicio del sistema (dlopen en UNIX y
                     LoadLibrary en Win32)
                  » El acceso a los símbolos de la biblioteca ya no es
                     transparente, sino que se ha de hacer desde el propio
                     programa, mediante los servicios apropiados del
                     sistema (dlsym en UNIX y GetProcAddress en Win32)




Fundamentos de Computadores II                                    22
Sistemas Operativos
Modelo de memoria de un proceso

•     El uso de bibliotecas dinámicas es transparente. Es decir, los
      mandatos de compilación y montaje son idénticos que en el caso de las
      estáticas
•     Si la biblioteca dinámica contiene referencias internas (a símbolos
      definidos en la misma) existe el problema, ya comentado, de la zona
      compartida con autoreferencias
•     Tres posibles soluciones:
      1. A cada biblioteca dinámica se le asigna un rango de direcciones
          fijo
          • Inconveniente: Poco flexible
      2. En montaje en tiempo de ejecución se reajustan
          autoreferencias
          • Inconveniente: Impide compartir código de biblioteca
      3. Crear biblioteca con código independiente de posición (PIC)
          • Se genera código con direccionamiento relativo a registro
          • Inconveniente (tolerable): direccionamiento relativo menos
               eficiente

Fundamentos de Computadores II                                    23
Sistemas Operativos
Modelo de memoria de un proceso
Ficheros ejecutables

•   Distintos fabricantes usan diferentes formatos

      – Ejemplo: En Linux Executable and Linkable Format (ELF)

•   Estructura: Cabecera y conjunto de secciones

•   Cabecera: información de control que permite interpretar el contenido
    del ejecutable. Suele incluir la siguiente información:
     – Número mágico que identifica a ejecutable. Por ejemplo, en
        formato ELF el primer byte debe contener el valor hexadecimal 7f,
        los tres siguientes los caracteres E, L y F
     – Punto de entrada del programa: es decir, el valor que inicialmente
        contendrá el contador del programa
     – Tabla de secciones. Para cada una de ellas se especifica: tipo,
        dirección de comienzo en el archivo y tamaño.
          Ejemplo:
                   » Tabla de símbolos para depuración
                   » Lista de bibliotecas dinámicas usadas

Fundamentos de Computadores II                                   24
Sistemas Operativos
Modelo de memoria de un proceso



                                    F ic h e r o E je c u ta b le
                              0              N ú m e r o m á g ic o                                       D e s p l.    Tam .
                                  C o n t a d o r d e p r o g r a m a in ic ia l   C ó d ig o              1000        4000
        C a b e c e ra
                                                 ....................              D a t o s c o n v .i. 5 0 0 0       1000
                                          T a b la d e s e c c io n e s            D a t o s s in v .i. - - -- --      500
                           1000                                                    ...................... ........     ........

                                                   C ó d ig o                      T . S ím b o lo s       8000        1000


                           5000
        S e c c io n e s               D a to s c o n v a lo r in ic ia l


                                          . . . . . . . . . . . . . . . .

                           8000
                                          T a b la d e s ím b o lo s




Fundamentos de Computadores II                                                                                  25
Sistemas Operativos
Modelo de memoria de un proceso
•   Las secciones más relevantes se volcarán en el mapa de memoria del
    proceso: código, datos con valor inicial y datos sin valor inicial

      – Código (texto): contiene el código del programa

      – Datos con valor inicial: variables globales inicializadas

      – Datos sin valor inicial: variables globales no inicializadas: aunque
        aparece en la tabla de secciones no se almacena en el ejecutable, ya
        que su contenido no es relevante

•   No hay sección vinculada a variables locales, ya que estas tienen
    carácter dinámico (se crearán en la pila del proceso, cuando los
    procedimientos en que aparecen sean invocados)




Fundamentos de Computadores II                                      26
Sistemas Operativos
Modelo de memoria de un proceso


  •   Variables globales
       – Estáticas
       – Se crean al iniciarse programa
       – Existen durante toda la ejecución del proceso
       – Dirección fija en memoria y en ejecutable

  •   Variables locales y parámetros
       – Dinámicas
       – Se crean al invocar la función
       – Se destruyen al retornar
       – La dirección se calcula en tiempo de ejecución
       – Recursividad: varias instancias de una variable




Fundamentos de Computadores II                             27
Sistemas Operativos
Modelo de memoria de un proceso

  •   Ejemplo:



        int x=8;           /* Variable global con valor inicial */
        int y;             /* Variable global sin valor inicial */

        f(int t){          /* Parámetro */
            int z;         /* Variable local */
            .......
        }
        main(){
            .......
        }




Fundamentos de Computadores II                                       28
Sistemas Operativos
Modelo de memoria de un proceso

        2.3. Mapa de memoria de un proceso
•   El mapa de memoria o imagen del proceso estará compuesto por un
    conjunto de regiones o segmentos; cada una de ellas almacena
    cierto tipo de información

•   Cada región:

      – Tiene asociada una información (un “objeto de memoria”)
      – Consiste en una zona contigua tratada como unidad al proteger o
        compartir
      – Se caracteriza por:
          • Dirección de comienzo y tamaño inicial
          • Soporte: donde se almacena su contenido inicial (soporte en
            archivo y sin soporte, es decir, objeto sin contenido inicial)
          • Protección: RWX
          • Uso compartido o privado
          • Tamaño fijo o variable

Fundamentos de Computadores II                                   29
Sistemas Operativos
Modelo de memoria de un proceso

•   La ejecución de un programa crea un mapa de memoria a partir
    del archivo ejecutable. Cada sección del ejecutable da lugar a una
    región del mapa inicial.

      – Código (texto): compartida, lectura y ejecución, tamaño fijo,
        soporte en archivo ejecutable

      – Datos con valor inicial: privada, lectura y escritura, tamaño fijo,
        soporte en archivo ejecutable

      – Datos sin valor inicial: privada, lectura y escritura, tamaño fijo, sin
        soporte (se rellena a ceros en algunos lenguajes)

      – Pila: privada, lectura y escritura, tamaño variable, sin soporte.
        Crece hacia direcciones más bajas. La pila inicial sólo contiene los
        argumentos de llamada al programa




Fundamentos de Computadores II                                       30
Sistemas Operativos
Modelo de memoria de un proceso


                     Fichero ejecutable                Mapa de memoria
                 0                                0
                         Número mágico
 Cabecera                                                    Código
                      Contador de programa
                              inicial
                                                4000
                                                         Datos con valor
                                                             inicial
                        Tabla de secciones
              1000                              5000
                                                         Datos sin valor
Secciones                     Código                         inicial
                                                5500
              5000
                         Datos con valor
                             inicial
              8000



                        Tabla de símbolos                     Pila



                      Argumentos del programa


Fundamentos de Computadores II                                             31
Sistemas Operativos
Modelo de memoria de un proceso

  •   Durante ejecución de proceso se crean nuevas regiones. Es decir, el mapa
      de memoria tiene un carácter dinámico. Las nuevas regiones creadas en tiempo
      de ejecución pueden ser:
       – Región de Heap
            • Soporte de memoria dinámica (malloc en C)
            • Privada, lectura y escritura, tamaño variable, sin soporte (inicializada a
              cero)
            • Crece hacia direcciones más altas
       – Archivo proyectado
            • Región asociada al archivo proyectado
            • Tamaño variable, soporte en archivo
            • Protección y carácter compartido o privado especificado en la proyección
       – Memoria compartida
            • Región asociada a la zona de memoria compartida
            • Compartida, tamaño variable, sin soporte (inicializada a 0)
            • Protección especificada en proyección
       – Pilas de threads
            • Cada pila de thread corresponde con una región.
            • Estas regiones constan de las mismas características que las asociadas a
              la pila del proceso


Fundamentos de Computadores II                                              32
Sistemas Operativos
Modelo de memoria de un proceso

 Región              Soporte     Protección Comp/Priv Tamaño

 Código              Fichero     RX          Compartida Fijo

 Dat. con v.i. Fichero           RW          Privada     Fijo

 Dat. sin v.i.       Sin soporte RW          Privada     Fijo

 Pilas               Sin soporte RW          Privada     Variable

 Heap                Sin soporte RW          Privada     Variable

 F. Proyect.         Fichero     por usuario Comp./Priv. Variable

 M. Comp.            Sin soporte por usuario Compartida Variable




Fundamentos de Computadores II                              33
Sistemas Operativos
Modelo de memoria de un proceso




Fundamentos de Computadores II       34
Sistemas Operativos
Modelo de memoria de un proceso

        2.4. Operaciones sobre regiones

  Para estudiar la evolución del mapa de memoria a lo largo de la ejecución
     de un proceso, se pueden distinguir las siguientes operaciones:

       – Crear región: Implícitamente al crear mapa inicial (por parte del
         SO) o por solicitud del programa en tiempo de ejecución de
         ejecución (por ejemplo, al cargar una biblioteca dinámica)

       – Eliminar región: Implícitamente al terminar el proceso o por
         solicitud del programa en tiempo de ejecución (por ejemplo, al
         desproyectar un archivo)

       – Cambiar tamaño de la región: Implícitamente para la pila o por
         solicitud del programa para el heap (cuando se hace malloc)

       – Duplicar región: Operación requerida por el servicio fork de POSIX


Fundamentos de Computadores II                                    35
Sistemas Operativos
3. Esquemas de memoria basados
         en asignación contigua

               3.1.     Esquema hardware
               3.2.     Gestión del SO
               3.3.     Política de asignación de espacio
               3.4.     Valoración del esquema contiguo




Fundamentos de Computadores II                        36
Sistemas Operativos
Esq. de mem. basados en asignación contigua

        3.1. Esquema Hardware
El mapa de proceso se ubica en una zona contigua de la memoria
   principal.
Proceso:
    – El S.O. busca un hueco en memoria de tamaño suficiente para
      alojar su mapa de memoria del proceso que comienza.
    – El S.O. reserva la parte del hueco necesaria y crea en ella el
      mapa inicial del proceso
    – Se establece la función de traducción, de forma que las
      direcciones del programa se correspondan con las direcciones
      existentes en el hueco asignado.

Hardware requerido:
    – Registros valla (registro base y registro límite). Estos dos registros
      sólo son accesibles en modo privilegiado.
    – Los registros valla están desocupados cuando el S.O. toma el control
      para acceder a todo el mapa de memoria.

Fundamentos de Computadores II                                    37
Sistemas Operativos
Esq. de mem. basados en asignación contigua

•   Registro límite: Se comprobará que las direcciones usadas por el
    proceso no excedan el valor almacenado en él.
•   Registro base: Una vez realizada la comprobación anterior, se suma a
    cada dirección el valor contenido en este registro, de forma que se
    obtiene la dirección física pertinente.
                                                                    Memoria
                                                                0

                                                                    Proceso 4
                    Procesador                              10000
                             Hard. traducción (MMU)         10200
               PC
                                                                    Proceso 7
                8                 R. límite       R. base
                                                            15036
                                 4000             21000             Proceso 3
      Registro instrucción
                                             NO             20500
                                                            21000
        LOAD R3, /1500              >               +
                                                                    Proceso 2
                                                            22500
                                        SI
                                                            25000
                                 Excepción
                                                                N

Fundamentos de Computadores II                                              38
Sistemas Operativos
Esq. de mem. basados en asignación contigua

        3.2. Gestión del SO

El S.O. almacena en el BCP cuáles son los valores de los registros
   valla.

Dedica una estructura para conocer en todo momento el estado de la
   memoria, identificando qué huecos están libres. Normalmente se usa
   una lista en la que se almacena la dirección inicial y el tamaño de cada
   hueco.
La gestión de esta lista obliga a comprobar, al desocupar espacio, si el
   nuevo espacio libre puede unirse a huecos vecinos.
Problema:Según se van ejecutando procesos van quedando fragmentos de
   memoria libres, que debido a su tamaño no podrán ser usados en
   asignaciones de espacio a memoria. Este problema se denomina
   fragmentación externa y conlleva una mala gestión de memoria.
Solución tradicional: Compactar los huecos de forma que queden
   contiguos. Para ello es necesario reajustar los registros valla de los
   procesos. INEFICIENTE.
Fundamentos de Computadores II                                   39
Sistemas Operativos
Esq. de mem. basados en asignación contigua

        3.3. Política de asignación de espacio
El S.O. debe considerar qué espacio, de los huecos libres, se usará
    intentando encontrar un equilibrio entre buen aprovechamiento de
    espacio y tiempo de respuesta corto, es decir, se aplica un algoritmo
    de decisión que debe ser eficiente.
Este problema es un clásico: ¿Cómo asignar espacio para su
    aprovechamiento óptimo?. Existen tres posibles enfoques:
    a) Mejor ajuste (best-fit). Se elige la zona libre más pequeña donde
        quepa el mapa del proceso.
        •    Problema: Conlleva crear nuevos huecos de tamaño pequeño.
             Además, elegir el hueco más pequeño obliga a mantener
             ordenados por tamaño los huecos disponibles. No es eficiente
    b) Peor ajuste. Se busca el hueco más grande, intentando evitar la
        generación de huecos pequeños. Sigue precisando mantener el
        control de los tamaños
    c) El primero que ajuste (first-fit). Suele ser la mejor política. Muy
        eficiente, ya que basta con encontrar una zona libre de tamaño
        suficiente, y ofrece un aprovechamiento aceptable
Fundamentos de Computadores II                                  40
Sistemas Operativos
Esq. de mem. basados en asignación contigua

        3.4. Valoración del esquema contiguo
•   Valoracion:
     – Espacios independientes para procesos: mediante registros valla
     – Protección: mediante registros valla
     – Compartir memoria: no es posible
     – Soporte de regiones:
         • No existe (no hay mecanismo de permisos sobre el espacio
           asignado a cada proceso)
         • Se reserva espacio para huecos, ya que el espacio asignado al
           proceso en primera instancia debe servir para todo su tiempo de
           vida
     – Maximizar rendimiento:
         • Mal aprovechamiento de memoria por fragmentación externa
     – Mapas de MV de tamaño adecuado:
         • No permite memoria virtual




Fundamentos de Computadores II                                   41
Sistemas Operativos
4. Intercambio




Fundamentos de Computadores II                42
Sistemas Operativos
Intercambio

¿Qué hacer si no caben todos los programas en memoria principal?

Usar disco (dispositivo swap) como respaldo de la memoria principal. Si
  no caben en memoria todos los procesos activos, se elige un proceso
  residente y se copia en disco su imagen de memoria
Expulsar (swap-out) a los procesos bloqueados. El proceso de
  expulsión no implica copiar toda la imagen del proceso (por ejemplo, no
  es preciso ocupar los huecos ni el código, al poder recuperarse
  fácilmente del ejecutable). Un proceso expulsado vuelve a cargarse
  (swap-in) cuando esté listo para ejecutar y haya espacio en memoria.

Políticas de asignación de espacio en swap:
    Preasignación: al crear el proceso se reserva espacio de swap.
    NO Preasignación: sólo se reserva espacio de swap al expulsar.
       (¿Semejanza con estado “suspendido”?)




Fundamentos de Computadores II                                 43
Sistemas Operativos
5. Memoria virtual
         5.1. Introducción
         5.2. Paginación
         5.3. Segmentación
         5.4. Segmentación paginada
         5.5. Paginación por demanda
         5.6. Políticas de reemplazo
         5.7. Política de asignación de marcos de
              página
         5.8. Hiperpaginación
         5.9. Gestión del espacio de swap
         5.10. Operaciones sobre las regiones de un
              proceso
Fundamentos de Computadores II               44
Sistemas Operativos
Memoria virtual

        5.1. Introducción
La técnica de la MV se usa prácticamente en todos los SSOO modernos.
   Esta técnica se basa en transferir información entre memoria
   principal y memoria secundaria (por lo que involucra varios niveles
   de la jerarquía de memoria)

Suele implementarse en un esquema de paginación (es decir, la unidad
  de información intercambiada entre los diferentes niveles de la jerarquía
  de memoria es la página)

Elemento Clave: Proximidad referencial habitual de los procesos. Esta
   propiedad permite que un proceso puede funcionar disponiendo en
   memoria de una parte de su imagen de memoria (conjunto residente).

Objetivo final: conseguir que la información necesaria para un proceso
   (conjunto de trabajo) vaya ocupando la memoria principal según se va
   necesitando (es decir, conjunto de trabajo === conjunto
   residente)

Fundamentos de Computadores II                                   45
Sistemas Operativos
Memoria virtual

Ventajas:

      a) Aumento del grado de multiprogramación. Por tanto, aumento
         en el rendimiento del sistema
      b) Posibilidad de ejecutar programas más grandes que la MV
         disponible

El uso de la MV no implica que se acelere la ejecución del programa
   (más bien al contrario, debido a la sobrecarga asociada a los
   movimientos de información entre niveles de la jerarquía). Este
   mecanismo no es apropiado para sistemas de tiempo real.




Fundamentos de Computadores II                            46
Sistemas Operativos
Memoria virtual

        5.2. Paginación
•     Página: Zona contigua de memoria de determinado tamaño.
      (Por motivos de eficiencia se suele trabajar siempre con tamaños
      potencia de 2. Ej:4 KB.)
•     Organización:
      — El mapa de memoria del proceso se considera dividido en páginas.
      — La memoria principal se considera dividida en marcos de página
          (tamaño de marco = tamaño de página).
      — Los marcos contendrán páginas de los procesos en ejecución
      — La tabla de páginas (TP) relaciona cada página con el marco que
          la contiene. El hardware de traducción (MMU) usa la tabla de
          páginas para traducir direcciones lógicas a físicas
      — Típicamente la MMU usa dos tablas de páginas (TP):
          a) TP del usuario: Por ejemplo, direcciones lógicas que empiezan
              por 0
          b) TP del sistema: Por ejemplo, direcciones lógicas que empiezan
              por 1. Estas sólo se podrán usar en modo sistema

Fundamentos de Computadores II                                  47
Sistemas Operativos
Memoria virtual
     – Cada entrada de la tabla de páginas contendrá, además del número
        de marco asociado con la página:
          a) Información de protección: tipo de acceso permitido RWX
          b) Bit de página válida/inválida: para indicar si dicha entrada
             contiene una traducción asociada, es decir, si se corresponde
             realmente con un marco
          c) Bit de página accedida (Ref): activado cuando se accede
          d) Bit de página modificada (Mod): activado cuando se escribe
          e) Bit de desactivación de caché: se usa cuando la entrada
             corresponde con direcciones de E/S
•   Tamaño de página: La elección de tamaño de página está
    condicionada por diversos factores, entre los que hay que conseguir
    equilibrio:
     – Potencia de 2 y múltiplo del tamaño del bloque de disco
     – mejor pequeño por:
          • Menor fragmentación
          • Se ajusta mejor al conjunto de trabajo
     – mejor grande por:
          • Tablas más pequeñas
          • Mejor rendimiento de dispositivos de E/S
     – Compromiso (entre 2K y 16K)

Fundamentos de Computadores II                                  48
Sistemas Operativos
Memoria virtual


•   Dirección:Una dirección lógica se obtiene a partir de:
                  nº página + desplazamiento
•   Problema:
     – La paginación no ofrece una solución óptima. Lo ideal sería que
        cada palabra del mapa de memoria de un proceso pudiera ubicarse
        en cualquier dirección. Esta solución es inviable debido al coste de
        traducción
     – Al no ser así, con la paginación se asigna a cada proceso un
        número entero de marcos de página, aunque el espacio de su
        mapa de memoria no sea un múltiplo entero del tamaño de página.
        Por tanto, se irán generando huecos (memoria no aprovechada, en
        la última de las páginas que no se llena de forma completa). Este
        proceso se denomina fragmentación interna (implica que, en
        término medio, cada proceso desperdicia la mitad de una página)




Fundamentos de Computadores II                                    49
Sistemas Operativos
Memoria virtual
                                     Dirección lógica
                             Página                 Byte



                                                             Marcos de página
                                 0
                                 1
                                 2
                                 3


Registro base de la TP
        (RIED)




                                 n




                                                           MP: direcciones físicas
Fundamentos de Computadores II                                           50
Sistemas Operativos
Memoria virtual


                          T. Páginas Proceso 1
                   Página 0       Marco 2
                                                  Memoria
                   Página 1       Marco N
                                                  Pág. 1 Pr. 2    Marco 0
                                 ..............
                                                  Pág. P Pr. 2    Marco 1
                   Página M       Marco 3
                                                  Pág. 0 Pr. 1    Marco 2
                                                  Pág. M Pr. 1    Marco 3
                         T. Páginas Proceso 2
                                                  Pág. 0 Pr. 2    Marco 4
                   Página 0       Marco 4
                                                   ............
                   Página 1       Marco 0
                                 ..............   Pág. 1 Pr. 1    Marco N

                   Página P       Marco 1




•   Problema: Fragmentación, la memoria asignada es mayor que la
    memoria requerida y por lo tanto, se desperdicia cierta cantidad de
    espacio


Fundamentos de Computadores II                                              51
Sistemas Operativos
Memoria virtual

•   Otras cuestiones:
     – En este esquema, el S.O. mantiene una tabla de páginas por
       cada proceso. Cuando se produce un cambio de contexto se indica
       a la MMU qué tabla de páginas usar
     – El S.O. mantiene una única tabla de páginas para sí mismo. Así,
       todos los procesos comparten el SO. Cuando un proceso se ejecuta
       en modo sistema accede directamente a su mapa y al del SO
     – S.O. mantiene tabla de marcos, como forma de mantener
       información de estado de la memoria principal. De cada marco se
       conoce su estado (libre, ocupado, etc)
     – S.O. mantiene tabla de regiones por cada proceso, indicando las
       características de cada región y qué rango de páginas pertenecen a
       cada región
•   Desperdicio de espacio: Mucho mayor gasto en tablas que con
    asignación contigua: es el precio de mucha mayor funcionalidad




Fundamentos de Computadores II                                 52
Sistemas Operativos
Memoria virtual
•   Implementación de la tabla de páginas:
     – Las tablas de páginas se mantiene normalmente en memoria
       principal. Problemas: eficiencia y gasto de almacenamiento
         a) Eficiencia: cada acceso lógico requiere dos accesos a memoria
            principal, a la tabla de páginas + al propio dato o instrucción.
            Solución: caché de traducciones –› TLB
         b)Gasto de almacenamiento: tablas muy grandes. Ejemplo:
            páginas 4K, dir. lógica 32 bits y 4 bytes por entrada, la tabla de
            páginas de cada proceso tendrá 4MB. Solución: tablas
            multinivel y tablas invertidas
•   Valoración :
     – Espacios independientes para procesos: mediante tablas de páginas
     – Protección: mediante tablas de páginas
     – Compartir memoria: entradas corresponden con mismo marco (bajo
       supervisión del SO dos procesos pueden compartir una página
       asociada al mismo marco)
     – Soporte de regiones: bits de protección, bit de validez: no se
       reserva espacio para huecos
     – Maximizar rendimiento: Si, al permitir esquemas de memoria más
       flexibles
     – Mapas de tamaño adecuado: sí, al permitir esquemas de memoria
       virtual
Fundamentos de Computadores II                                      53
Sistemas Operativos
Memoria virtual
TLB (Translation Look-aside Buffer): Consta de una memoria asociativa con
   información sobre últimas páginas accedidas.
• Para el multiproceso, existen varias posibilidades:
    – La TLB no incluye información del proceso. En este caso, habrá que
       invalidar la TLB en los cambios de contexto
    – Entradas en TLB incluyen información sobre proceso: en este caso,
       debe existir un registro de UCP para mantener la identificación del
       proceso actual
• Implementación
    – HW: La MMU consulta la TLB y si falla, se usa la TP en memoria.
         • Ventajas: Es un proceso muy rápido
         • Inconvenientes: Actualizar la TP en cambios de contexto y hay que
           invalidar la TLB cuando se produce un cambio de contexto (si no tiene
           información del PID)
    – SW: La MMU no usa la TP, sino que sólo consulta TLB. En caso de fallo,
       se activa el SO, que ha de buscar la entrada en la tabla de páginas
       (mediante programa), e insertar en la TLB la traducción hecha, de forma
       que se pueda reutilizar.
         • Ventajas: flexibilidad, ya que la tabla de páginas puede ser definida a
           conveniencia, sin restricciones impuestas por el hardware
         • Inconvenientes: Es menos eficiente, ya que parte del proceso de
           traducción se realiza mediante programa.

Fundamentos de Computadores II                                      54
Sistemas Operativos
Memoria virtual
Una de las opciones disponibles para disminuir el tamaño requerido por las
  tablas de páginas es la tabla de páginas multinivel

•   Organización:Se trata de una tabla de páginas organizadas en M
    niveles:
     – Entrada de TP de nivel K apunta a TP de nivel K+1
     – Entrada de último nivel apunta a marco de página

•   Dirección: La dirección lógica especifica la entrada a usar en cada nivel
                   • 1 campo por nivel + desplazamiento

•   Accesos:Un acceso lógico supone M + 1 accesos a memoria. Solución:
    uso de TLB

•   Invaliadación:Si todas las entradas de una TP son inválidas, no se
    almacena esa TP y se pone inválida la entrada correspondiente de la TP
    superior

•   Ahorro de espacio:Si el proceso usa una parte pequeña de su espacio
    lógico, se consigue ahorro en espacio para almacenar TPs
Fundamentos de Computadores II                                       55
Sistemas Operativos
Memoria virtual
                Página             Dirección lógica

    1er nivel      2º nivel        Byte
                                            0
                                            1
                                            2
                                            3           Marcos de página
                         0
                         1
                         2
                         3



                                            n

Registro base de la TP
        (RIED)           n
                                            0
                                            1
                                            2
                                            3




                                            n         MP: direcciones físicas

  Fundamentos de Computadores II                               56
  Sistemas Operativos
Memoria virtual

•   Ejemplo: Proceso que usa 12MB superiores y 4MB inferiores

      – 2 niveles, páginas de 4K, dir. lógica 32 bits (10 bits por nivel) y 4
        bytes por entrada
      – Tamaño: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB)

•   Ventajas adicionales: permite compartir TPs intermedias y sólo se
    requiere que esté en memoria la TP de nivel superior. Las restantes
    pueden estar en disco y traerse por demanda




Fundamentos de Computadores II                                     57
Sistemas Operativos
Memoria virtual
                                                                                 m e m o r ia
                                          ta b la s d e p á g in a s
                                             s e g u n d o n iv e l              P á g in a 2 0 4 8



                                                      ..
                                                       .
                                                                                 P á g in a 1 0 2 3




              T a b la d e p á g in a s
                  p r im e r n iv e l
                                                      ..                            P á g in a 0
                V                                      .
                V
                                                                                 P á g in a 1 0 2 4
                V

                I
                                                                                 P á g in a 2 0 4 7


                I                                     ..
                V                                      .


                                                                                 P á g in a 3 0 7 1


                                                      ..                P á g in a 1 0 4 8 5 7 5 ( 2 ^ 2 0 - 1 )
                                                       .


                                                                       P á g . 1 0 4 7 5 5 2 (2 ^ 2 0 -1 0 2 4 )



Fundamentos de Computadores II                                                                                     58
Sistemas Operativos
Memoria virtual

Otra alternativa para disminuir el espacio necesario por la tabla de páginas
   es la tabla de páginas invertida
• Organización:
    – La tabla contendrá tantas entradas como marcos de página haya.
    – Cada entrada almacena la página cargada en dicho marco junto con
       sus características:
         • Número de página,
         • Proceso dueño de la página
    – El tamaño de la tabla de páginas es proporcional a la memoria
       disponible.
• Accesos:La MMU usa una TLB convencional, pero si falla la traducción se
   accede a la tabla de páginas invertida. Al estar la tabla organizada por
   marcos no se puede hacer una búsqueda directa. Debería accederse a
   todas las entradas en busca de la página correspondiente. Por esta
   razón se suele organizar como una tabla hash
• Ahorro de espacio: Se reduce el espacio de almacenamiento necesario,
   ya que sólo se guarda información sobre las páginas válidas



Fundamentos de Computadores II                                    59
Sistemas Operativos
Memoria virtual

                      Dirección lógica

pid          Página              Byte




                                          i

                           pid   página       i              Byte


                                                  Dirección física




Fundamentos de Computadores II                                       60
Sistemas Operativos
Memoria virtual

        5.3. Segmentación
 Con la paginación la MMU no dispone de información sobre las regiones
   de los procesos y sólo entiende de páginas. Por esta razón, el SO debe
   mantener una lista de las páginas que componen cada región, lo
   que supone varias desventajas:
    • Al crear una región hay que cuidar que todas las páginas
       asociadas tengan la misma información de control
    • Para poder compartir una región es preciso que las entradas de
       varios procesos apunten a los mismos marcos
 Segmentación: es un esquema HW que intenta dar soporte directo a las
   regiones. En él se considera el mapa de memoria como compuesto por
   varios segmentos.
    Se puede considerar que consisten en una generalización de los
       registros valla base y límite, pero usando un par de registros por
       cada segmento

Fundamentos de Computadores II                                 61
Sistemas Operativos
Memoria virtual

•   Dirección:Una dirección lógica estará compuesta por un número de
    segmento y un desplazamiento en el mismo.
•   Traducción: La forma de realizar la traducción puede apreciarse en la
    imagen siguiente:

                 d ir e c c ió n ló g ic a
                       s       d
                                                t a b la d e s e g m e n t o s



                                               lím ite              base




                                                           N O                       m e m o r ia
                                                       >                         +
                                                 S I

                                             E x c e p c ió n




Fundamentos de Computadores II                                                                      62
Sistemas Operativos
Memoria virtual

•   Tabla de segmentos:En este caso, la MMU usa una tabla de segmentos
    (TS).
•   Organización:
     – El SO mantiene una TS por proceso, de forma que en cada cambio
       de contexto se notifica a MMU cuál debe usar
     – Cada entrada de TS contiene (entre otros):
          • Registro base y límite del segmento
          • protección: RWX

•   Problema: Fragmentación Externa
     – En este esquema se produce fragmentación externa, ya que el
       almacenamiento de los segmentos se realiza de forma contigua.
     – El SO debe mantener una lista que le permita conocer qué zonas de
       memoria están libres y cuáles ocupadas: es decir, estructuras de
       datos que identifiquen huecos y zonas asignadas




Fundamentos de Computadores II                                 63
Sistemas Operativos
Memoria virtual

•   Valoración:

      – Espacios independientes para procesos: mediante su propia TS, que
        crea un espacio lógico independiente
      – Protección: mediante TS, ofreciendo espacios disjuntos de memoria
      – Compartir memoria: bajo control del SO es posible que dos o más
        procesos tengan un segmento asociado a la misma zona de
        memoria
      – Soporte de regiones: bits de protección
      – Maximizar rendimiento : No lo maximiza, por la fragmentación
        externa
      – Mapas de tamaño adecuado: No cumple este objetivo porque no
        permite implementar eficientemente un sistema de memoria virtual

Por tanto, tal y como se ha presentado se usa en muy pocos
  SO reales



Fundamentos de Computadores II                                  64
Sistemas Operativos
Memoria virtual

        5.4. Segmentación paginada
Se intenta aunar las ventajas de ambos esquemas: segmentación y
   paginación:
    – Segmentación: soporte para regiones.
    – Paginación: mejor uso del espacio de memoria.

•   Organización:
     – Entrada en TS apunta a una TP para el segmento.
     – El espacio del segmento está compuesto de varias páginas, de
       forma que su espacio no tiene que ser contiguo.




Fundamentos de Computadores II                            65
Sistemas Operativos
Memoria virtual

   •Traducción:La traducción se lleva a cabo según se indica.


                d ir e c c ió n ló g ic a
                s          p         d                                              t a b la d e p á g in a s
                                               t a b la d e s e g m e n t o s       p a ra s e g m e n to s



                                              lím ite           d ir. T . P á g .     p          m




                                                         NO                                                     m e m o r ia
                                                     >                                     m         d
                                                SI
                                                                                          d ir e c c ió n
                                            E x c e p c ió n                                 f ís ic a




Fundamentos de Computadores II                                                                                                 66
Sistemas Operativos
Memoria virtual

•   Valoración:

      – Espacios independientes para procesos: mediante TS
      – Protección: mediante TS
      – Compartir memoria: bajo control del SO, podemos hacer que una
        misma entrada aparezca en diferentes TS (es decir, pueda ser usado
        por varios procesos)
      – Soporte de regiones: bits de protección
      – Maximizar rendimiento: la paginación aprovecha eficientemente el
        espacio de memoria.
      – Mapas de tamaño adecuado: permite esquemas de memoria virtual

•   Ventajas: Frente a paginación sin segmentos facilita al SO la gestión de
    las regiones, pero requiere HW más complejo




Fundamentos de Computadores II                                    67
Sistemas Operativos
Memoria virtual

        5.5. Paginación por demanda
Una vez analizados los diferentes esquemas hardware vamos a ver cómo
  se articulan para construir un esquema de memoria virtual (estos
  esquemas también pueden usarse sin memoria virtual, pero en la
  actualidad su uso está siempre vinculado a la memoria virtual)

•   Normalmente la memoria virtual se construye sobre esquemas de
    paginación pura o segmentada. De esta forma, la unidad de información
    intercambiada entre memoria principal y secundaria es la página.

•   Normalmente la transferencia de información se lleva a cabo bajo
    demanda (paginación por demanda). De esta forma, cuando un
    proceso necesita acceder a una página que no está en memoria
    principal, se genera un fallo de página y el SO se encarga de transferirla
    desde la memoria secundaria. Si al traerla no hay espacio suficiente en
    MP, será necesario desalojar alguna de las páginas actuales (ello se
    hace mediante un algoritmo de reemplazo)

Fundamentos de Computadores II                                       68
Sistemas Operativos
Memoria virtual

•   La construcción de un sistema de memoria virtual sobre un procesador
    con paginación implica usar un bit de validez en las entradas de la
    tabla de páginas, que indica si la página es válida. Estarán marcadas
    como inválidas todas las páginas que no residen en MP, así como las
    que constituyen huecos en el mapa de memoria.

•   Para las entradas correspondientes a páginas no residentes en MP, la
    entrada principal, en lugar de almacenar el marco donde reside
    contendrá la dirección del dispositivo de memoria en que se
    encuentra almacenada. De forma que cuando se produce un acceso a
    una de estas páginas, se produce una excepción y se activa el SO,
    responsable de hacer la transferencia desde memoria secundaria.

•   Algunos sistemas también usan la técnica de prepaginación. Al ocurrir
    un fallo de página no sólo traen la página en cuestión, sino también las
    cercanas, al suponerse que se usarán en un corto plazo de tiempo. La
    efectividad de esta técnica dependerá del acierto de la predicción.



Fundamentos de Computadores II                                    69
Sistemas Operativos
Memoria virtual

Veamos cómo se gestiona la ocurrencia de un fallo de página:
• La MMU genera una excepción. Normalmente deja en un registro
   especial la dirección que causó el fallo
• Se activa el SO, que comprueba:
    – Si la página es inválida, se aborta el proceso (solución normal,
      aunque también podría bastar con el envío de una señal).
    – Si la página es ausente se siguen los pasos siguientes:
        a) Se consulta la tabla de marcos para ver si hay algún hueco
           libre:
             i. Si no hay ningún marco libre se aplica el algoritmo de
                 reemplazo, que decidirá el marco a desalojar. La página
                 almacenada hasta entonces se marca como inválida. Si ha
                 sido modificada, antes hay que salvar su contenido en
                 memoria secundaria
             ii. Si hay marco libre: se inicia la lectura desde memoria
                 secundaria y se vuelca al marco, marcándose como válida
                 dicha entrada en la TP y apuntando el marco en que está
                 almacenada


Fundamentos de Computadores II                                 70
Sistemas Operativos
Memoria virtual

•   En el peor de los casos un fallo de página puede suponer dos
    operaciones de E/S:

           a) Salvaguarda de la página expulsada
           b) Lectura de la página nueva

Dos políticas definen el funcionamiento del sistema de memoria

•   Política de reemplazos:
     – Reemplazo local: Sólo puede usarse para reemplazo un marco
        asignado al proceso que causa fallo
     – Reemplazo global: Puede usarse para reemplazo cualquier marco

•   Política de asignación de espacio a los procesos:
     – Asignación fija: El número de marcos de página para cada proceso
        es fijo.
     – Asignación dinámica: El número de marcos de página para cada
        proceso es dinámico

Fundamentos de Computadores II                                   71
Sistemas Operativos
Memoria virtual

        5.6. Políticas de reemplazo

•   Objetivo: Minimizar la tasa de fallos de página.

•   Cada algoritmo descrito tiene versión local y global:
     – Local: criterio se aplica a las páginas residentes del proceso
     – Global: criterio se aplica a todas las páginas residentes

•   Algoritmos a estudiar
     A. Óptimo
     B. FIFO
     C. Reloj (o segunda oportunidad)
     D. LRU
     E. Buffering de páginas
     F. Retención de páginas en memoria




Fundamentos de Computadores II                                      72
Sistemas Operativos
Memoria virtual

 A) Algoritmo óptimo

•   Criterio: Página residente que tardará más en accederse
•   Implementación: Irrealizable, ya que supone disponer de una predicción
    fiable del uso de las páginas en un futuro a medio plazo
•   Versión local y global
•   Interés para estudios analíticos comparativos




Fundamentos de Computadores II                                   73
Sistemas Operativos
Memoria virtual

 B) Algoritmo FIFO

•   Criterio: se elimina la página que lleva más tiempo residente

•   Implementación: Fácil
     – Páginas residentes en orden FIFO –› se expulsa la primera
     – No requiere hardware especial
     – En el caso de estrategia local se mantiene una lista de páginas por
       cada proceso. En el caso global, basta con una única lista

•   Problema:
     – Una página que lleva mucho tiempo residente puede seguir
       accediéndose frecuentemente.
     – Su criterio no se basa en el uso de la página.
     – Anomalía de Belady: Se pueden encontrar ejemplos en que al
       aumentar el número de marcos aumenta el número de fallos de
       página


Fundamentos de Computadores II                                      74
Sistemas Operativos
Memoria virtual

 C) Algoritmo de segunda oportunidad o del reloj

Se trata de una modificación del algoritmo FIFO, para evitar que una
  página residente desde hace tiempo sea desalojada pese a estar siendo
  usada. Para ello se usa el bit de referencia Ref de las páginas, con lo
  que se detecta su uso

•   Criterio:
     – Si la página elegida por FIFO no tiene activo el bit Ref, es la página
        expulsada
     – Si lo tiene activo se da 2ª oportunidad antes de expulsar: se
        desactiva el bit Ref, se pone página al final de FIFO, se aplica
        criterio a la siguiente página

•   Implementación: Se puede implementar el orden FIFO mediante una
    lista circular con una referencia a la primera página de la lista: se
    visualiza como un reloj donde la referencia a la primera página es la
    aguja del reloj

Fundamentos de Computadores II                                     75
Sistemas Operativos
Memoria virtual

 D) Algoritmo LRU (last recently used)

•   Criterio: Basado en proximidad temporal de referencias: página
    residente menos recientemente usada como página a eliminar
•   Implementación:Posible implementación con HW específico y un
    contador de accesos a memoria:
     – Cada entrada de la TP posee un contador
     – Cada acceso a memoria la MMU copia el contador del sistema a
        entrada referenciada
     – Reemplazo: página con contador más bajo
     – Difícil implementación estricta (hay aproximaciones): precisaría una
        MMU específica, ya que habría que controlar los accesos realizados a
        cada marco para actualizar los contadores de los accesos en la TP
•   Nota: en su versión global, hay que considerar los contadores de las
    páginas menos recientemente usadas teniendo en cuenta el tiempo
    lógico de cada proceso



Fundamentos de Computadores II                                    76
Sistemas Operativos
Memoria virtual
 E) Buffering de páginas

•   Criterio:Esta técnica intenta evitar el problema con las páginas
    modificadas que han de ser desalojadas. En este caso, el tratamiento
    del fallo de página implica realizar dos accesos a disco, uno para
    almacenar la página modificada y para traer la nueva

•   Implementación:
     – Mantiene una reserva de marcos libres. Cuando se produce un
       fallo de página, siempre se usa un marco libre (es decir, en verdad
       no hay reemplazo)
     – Cuando el número de marcos libres queda por debajo de cierto
       umbral se activa un “demonio de paginación”, que aplica
       repetidamente el algoritmo de reemplazo:
         • Páginas no modificadas pasan a lista de marcos libres
         • Páginas modificadas pasan a lista de marcos modificados:
            cuando se escriban a disco pasan a lista de libres; suelen
            escribirse en tandas (lo que mejora el rendimiento)
     – Si se referencia una página mientras está en estas listas: se
       recupera directamente de la lista (no hay E/S), lo que puede
       mejorar el comportamiento de algoritmos poco eficientes
Fundamentos de Computadores II                                  77
Sistemas Operativos
Memoria virtual
 F) Retención de páginas en memoria


•   Criterio:No todas las páginas son reemplazables

•   Aplicación:
     – Se aplica a páginas del propio S.O: si sus páginas están fijas en
        memoria, su gestión es más sencilla
     – También se aplica mientras se hace DMA sobre una página. La
        página no será reemplazable hasta que finalice la operación sobre
        ella

•   Implementación: Algunos S.O. ofrecen a las aplicaciones un servicio
    para fijar en memoria una o más páginas de su mapa: adecuado para
    procesos de tiempo real, aunque puede afectar al rendimiento del
    sistema. En POSIX se trata del servicio mlock




Fundamentos de Computadores II                                  78
Sistemas Operativos
Memoria virtual

    5.7. Política de asignación de marcos de página
El SO deberá decidir cuántos marcos de página asigna a cada proceso:
        a) Asignación Fija
        b) Asignación Dinámica

A) Asignación fija

•   Número constante de marcos asignados al proceso. Puede depender
    de las características del proceso: tamaño, prioridad,...
•   No se adapta a las distintas fases de ejecución. Como positivo, el
    comportamiento del proceso es relativamente predecible
•   Sólo tiene sentido usar estrategia de reemplazo local
•   La arquitectura impone el Nº mínimo de marcos de página: mínimo
    número de marcos a asignar igual al número de referencias que
    aparezca en la instrucción que más fallos de página pueda generar


Fundamentos de Computadores II                                 79
Sistemas Operativos
Memoria virtual

B) Asignación dinámica

•   El número de marcos asignados a un proceso es variable
    dependiendo del comportamiento del proceso (y posiblemente de los
    demás procesos).
•   Se adapta a las diferentes fases por las que puede pasar un proceso
•   Se pueden usar tanto estrategias de reemplazo global como local.

      – Asignación dinámica + reemplazo local: el proceso va aumentando o
        disminuyendo su conjunto residente dependiendo de su
        comportamiento (comportamiento relativamente predecible)

      – Asignación dinámica + reemplazo global: los procesos compiten por
        el uso de las páginas entre ellos (comportamiento difícilmente
        predecible)




Fundamentos de Computadores II                                  80
Sistemas Operativos
Memoria virtual

    5.8. Hiperpaginación (thrashing)
•   Definición:Tasa excesiva de fallos de página de un proceso o en el
    sistema, debido a que el número de marcos de página asignados es
    insuficiente para albergar el conjunto residente

      – Con asignación fija. Hiperpaginación en el proceso Pi si
             conjunto residente de Pi < conjunto de trabajo Pi

      – Con asignación variable. Hiperpaginación en el sistema si
         nº marcos disponibles < Σ conjuntos de trabajo de los procesos

•   Problema: decae el grado de uso de la CPU. Los procesos están casi
    siempre en colas de dispositivo de paginación.
•   Solución: controlar la carga:
     – Disminuir el grado de multiprogramación,
     – Suspender uno o más procesos liberando sus páginas residentes

•   ¿Cómo detectar esta situación?

Fundamentos de Computadores II                                     81
Sistemas Operativos
Memoria virtual



                 U t iliz a c ió n d e la U C P




                                                  g r a d o d e m u lt ip r o g r a m a c ió n
Se verán a continuación algunas estrategias de control de la carga de
   trabajo:
      A. Estrategia del conjunto de Trabajo
      B. Estrategia de administración basada en la frecuencia de fallos
         de página
      C. Estrategia de control de carga para algoritmos de reemplazo
         globales

Fundamentos de Computadores II                                                                   82
Sistemas Operativos
Memoria virtual

    A) Estrategia del conjunto de trabajo
•    Objetivo: Determinar el conjunto de trabajo de cada proceso, es decir,
     las páginas usadas por el proceso en las últimas N referencias

•    Proceso:
      – Si el conjunto de trabajo decrece se liberan marcos.
      – Si el conjunto de trabajo crece se asignan nuevos marcos.
      – Si no hay marcos disponibles se suspenderá algún(os) proceso(s),
        que se reactivan cuando haya marcos suficientes

•    Condición: Si el SO es capaz de detectar el conjunto de trabajo de cada
     proceso, puede especificarse una estrategia de asignación dinámica
     con reemplazo local

•    Implementación: Difícil, ya que precisaría una MMU específica que
     controlara las páginas accedidas por cada proceso.

•    Aproximación: Estrategia basada en frecuencia de fallos de página
     (PFF), controlando la tasa de fallos de página de cada proceso
Fundamentos de Computadores II                                    83
Sistemas Operativos
Memoria virtual

    B) Estrategia basada en frecuencia de fallos de página
•    Objetivo: Controlar la tasa de fallos de página por proceso
•    Proceso:
      – Si tasa < límite inferior, se liberan marcos aplicando un algoritmo de
        reemplazo
      – Si tasa > límite superior, se asignan nuevos marcos. Si no hay
        marcos libres se suspende algún proceso
                      ta s a d e fa llo s d e p á g in a




                                                                                       lí m it e s u p e r io r



                                                                                       lí m it e in f e r io r



                                                           n ú m e ro d e m a rc o s
Fundamentos de Computadores II                                                                                    84
Sistemas Operativos
Memoria virtual

    C) Estrategia de control de carga para algoritmos de
    reemplazo globales

•    Objetivo: Controlar la hiperpaginación utilizando un algoritmo de control
     de carga. Se da en algoritmos de reemplazo global.

•    Proceso: Ejemplo: UNIX 4.3 BSD
      – Reemplazo global con algoritmo del reloj. Variante con dos
        “manecillas”: hay dos punteros en vez de uno
      – Uso de buffering de páginas. Un demonio de paginación controla el
        número de marcos libres
      – Si el número de marcos libres < umbral, el demonio de paginación
        aplica reemplazo
      – Si se repite con frecuencia la falta de marcos libres: un proceso
        “swapper” suspende procesos




Fundamentos de Computadores II                                      85
Sistemas Operativos
Memoria virtual

    5.9. Gestión del espacio de swap
La asignación del espacio de swaping puede seguir dos técnicas:
    a) Preasignación de swap:
        Al crear la nueva región se reserva espacio de swap para ella. Al
           expulsar una página, con esta estrategia, ya habrá espacio de
           swap para almacenar su contenido
    a) Sin preasignación de swap:
        Al crear una región no se hace reserva de swap. Las páginas de la
           región se irán trayendo a MP por demanda desde el soporte de
           la región. Sólo se reserva espacio de swap para una página
           cuando es expulsada por primera vez

Tendencia actual: Se suele utilizar más la estrategia sin preasignación,
   puesto que la preasignación de swap conlleva un peor aprovechamiento
   de memoria secundaria (toda página debe tener reservado espacio de
   swap).



Fundamentos de Computadores II                                 86
Sistemas Operativos
Memoria virtual

    5.10. Operaciones sobre regiones de un proceso
Se considerarán a continuación las siguientes operaciones sobre las
   regiones de un proceso en un sistema con memoria virtual:
    a) Creación de región:
        Al crear el mapa inicial o por solicitud posterior
    b) Liberación de región:
        Al terminar el proceso o por solicitud posterior
    c) Cambio de tamaño de región:
        Aumento de tamaño: hay que comprobar que no se solape con
           otra región y equiparar las nuevas páginas a las ya existentes
           en la región.
        El caso de expansión de la pila es algo más complejo.
        Disminución de tamaño
    d) Duplicado de región:
        Operación requerida por el servicio fork de POSIX
        Se duplica todo y se trata de una operación costosa



Fundamentos de Computadores II                                    87
Sistemas Operativos
Memoria virtual

a) Creación de nueva región
Acciones:
• Al crear una región no se asigna MP ( se hará por demanda).
• Se marcarán las páginas como no residentes y válidas (fallo de
   página cuando se intenten acceder)
• El S.O. actualiza la tabla de regiones y guarda la información
   correspondiente a las páginas de la región, rellenando las entradas de la
   TP. Debe buscar un hueco en el mapa de memoria para asignar a nueva
   región.
• Según el soporte:
    – Soporte en archivo: Páginas marcadas como Cargar de archivo
       (CA) y se almacena dirección del bloque del archivo correspondiente
    – Sin soporte: Páginas marcadas como Rellenar con ceros (RC) y se
       inicializa cuando hay un fallo de página.
• Si la región es privada con preasignación de swap, se reserva espacio
   de swap
• Si la región es la pila:
    – Se copian los argumentos iniciales del proceso en bloque(s) de swap



Fundamentos de Computadores II                                    88
Sistemas Operativos
Memoria virtual

•   Algoritmo de expulsión:
     – Si la región es privada se escribe página en swap. Si no hay
       preasignación de espacio swap, en la primera expulsión se reserva
       espacio. Posteriores fallos se sirven de ese bloque de swap
     – Si la región es compartida se escribe página en soporte, para que
       todos los procesos puedan ver las modificaciones. Todos los fallos se
       sirven del soporte

•   En la creación del mapa inicial (servicio exec en POSIX), se crean las
    regiones según sus características
         • Código: CA, Compartida, RX
         • Datos v. inicial: CA, Privada, RW
         • Datos sin v. inicial: RC, Privada, RW
         • Pila inicial: contenido inicial en swap

      Los huecos se marcan como páginas inválidas, tanto para el HW como
        para el S.O.


Fundamentos de Computadores II                                    89
Sistemas Operativos
Memoria virtual



                                                                           Sw ap
                     T a b la d e p á g in a s                                                     A r c h iv o E je c u ta b le
 1 ªp á g .                                                                                                   C a b e c e ra
 C ó d ig o    R X       A B lo q u e T ( a r c h . )                               B lo q u e T
                       ...........................                                                              C ó d ig o
  1 ªp á g .
  D a t .v . i. R W A          B lo q u e U ( a r c h . )                           B lo q u e U
                                                                                                     D a t o s c o n v a lo r in ic ia l
                       ...........................
  1 ªp á g .                                                                                           . . . . . . . . . . . . . . . .
D a t .n o .v . i.
                   R W A R e lle n a r c o n 0
                        ...........................
  1 ªp á g .                  B lo q u e S ( s w a p )      B lo q u e S
    P ila
               RW       A                                                   P ila




          Estado inicial de ejecución en un sistema sin preasignación de swap

Fundamentos de Computadores II                                                                                  90
Sistemas Operativos
Memoria virtual


b) Liberación de región
• Acciones:
    – Actualizar tabla de regiones para eliminar región
    – Marcar como inválidas páginas asociadas
    – Si la región es privada, se libera el espacio de swap asociado
• Cuando:
    – Solicitud explícita (p.ej. desproyección de región).
    – Finalización del proceso (exit en POSIX).
    – El servicio exec de POSIX libera el mapa actual del proceso antes de
       construir un nuevo mapa vinculado al ejecutable a “usar”




Fundamentos de Computadores II                                  91
Sistemas Operativos
Memoria virtual

c) Cambio de tamaño
• Acciones:
    – Si disminuye:
       • Se ajusta la tabla de regiones.
       • Se marcan páginas como inválidas.
       • Se libera espacio de swap
    – Si aumenta:
       • Se comprueba que no haya solapamiento.
       • Se fijan nuevas páginas como no residentes y con las mismas
          características que otras páginas de la región.
       • Si hay preasignación se reserva espacio en swap para las nuevas
          páginas.
• Casos especiales:
    – Expansión del heap: Solicitada por programa mediante servicios
      del S.O. Se marcan las páginas correspondientes como RC,
      privadas, RW

      – Expansión de pila no proviene de una solicitud del proceso, sino
        de la propia evolución de la pila. Por esta razón esta operación es
        automática

Fundamentos de Computadores II                                   92
Sistemas Operativos
Memoria virtual

d) Duplicado de una región
• Acciones:
    – Se duplican las regiones privadas del padre y se comparten las no
      privadas

•   La copia de una región de un proceso en el mapa de memoria de otro
    proceso es una operación costosa, ya que también se debe copiar el
    contenido.

•   Problema: La ejecución de fork sería muy ineficiente.
•   Solución: copy-on-write (COW). Se comparte una página mientras no se
    modifique. Si un proceso la modifica, se crea una copia para él. Esta
    operación se denomina duplicado por demanda




Fundamentos de Computadores II                                  93
Sistemas Operativos
Memoria virtual

•   Implementación de COW
     – Se comparten las páginas de regiones duplicadas
     – Se marcan de sólo lectura y con bit de COW.
     – Al realizar la primera escritura se produce un fallo de proteccción y
       se genera una copia privada para el proceso que escribe.
     – Lo normal es que haya varios procesos con misma región duplicada,
       por lo que existe un contador de uso por página.
     – Cada vez que se crea copia privada se decrementa contador, ya que
       hay un proceso menos trabajando sobre la copia compartida.
     – Si llega a 1, se desactiva el bit COW, al no haber duplicados

•   FORK con COW. Se comparten todas las regiones. Las regiones privadas
    se marcan como COW en padre e hijo, el resultado de la optimización es
    que en vez de duplicar todo el espacio de memoria sólo se duplica la TP.




Fundamentos de Computadores II                                    94
Sistemas Operativos
5. Archivos proyectados en
                      memoria




Fundamentos de Computadores II        95
Sistemas Operativos
Archivos proyectados en memoria

•   ¿En qué consiste?
     – Recordemos que en un sistema con MV se hacen corresponder las
       entradas de la TP con bloques de un archivo ejecutable.
     – La técnica de la proyección permite usar esta misma idea, pero con
       cualquier archivo.
     – El S.O. permite que un programa solicite la correspondencia de una
       zona de su mapa de memoria con los bloques de un archivo
       cualquiera (ya sea completo o en parte).
     – En la solicitud el programa indicará el tipo de acceso que desea para
       las páginas asociadas al archivo.
•   Servicio:
     – La generalización de la técnica de memoria virtual permite ofrecer a
       los usuarios una forma alternativa de acceder a los archivos.




Fundamentos de Computadores II                                    96
Sistemas Operativos
Archivos proyectados en memoria

 • Proceso: Se rellenan las entradas de la TP correspondientes con :
     —Página no residente,
     —CA (cargar de archivo),
     —Privada/compartida y
     —Protección (indicada en la llamada).       M a p a d e m e m o r ia

 De esta forma,                                                                                 C ó d ig o
 cuando el
 programa accede                             T a b la d e p á g in a s              D a t o s c o n v a l o r i n i c ia l
 a una posición                               ...........................                                                         A r c h iv o
 de memoria             1 ªp á g .
                                                                                    D a t o s s i n v a l o r in ic ia l
                                         R W A B lo q u e 0 ( a r c h . )                                                          B lo q u e 0
 asociada al          A r c h iv o
                                             ...........................
 archivo proyectado,Ú lt i m a p á g .   R W A B lo q u e N ( a r c h .)    10240
                                                                                                                                   B lo q u e 1
                       A r c h iv o
 está accediendo                              ...........................                                                          B lo q u e 2
                                                                                    A r c h iv o P r o y e c t a d o
 realmente
 al archivo                                                                                                                         .............


                                                                                                                                   B lo q u e N
                                                                                                   P ila


Fundamentos de Computadores II                                                                                               97
Sistemas Operativos
Archivos proyectados en memoria

•   Ventajas: Se trata por tanto de una forma alternativa de acceso a
    archivos, frente a las llamadas read/write. De esta forma se producen:
     – Menos llamadas al sistema lo que se traduce en una notable
       mejora de los tiempos de acceso.
     – Se evitan copias intermedias de la información ya que el S.O.
       transfiere directamente la información entre la región de memoria y
       el archivo.
     – Se facilita la programación, ya que una vez proyectado se accede
       al archivo como si fuera una estructura de datos en memoria

•   Ejemplo: Típicamente las bibliotecas dinámicas se cargan usando este
    tipo de proyección: la zona de código se proyecta como compartida y la
    zona de datos con valor inicial se proyecta como privada




Fundamentos de Computadores II                                  98
Sistemas Operativos
6. Servicios de gestión de
                        memoria




Fundamentos de Computadores II              99
Sistemas Operativos
Servicios de gestión de memoria

El gestor de memoria realiza funciones internas. Por eso, ofrece pocos
   servicios directos para las aplicaciones. Básicamente están relacionados
   con la proyección de archivos:

      – POSIX
         • Proyectar un archivo: mmap
         • Desproyectar un archivo: munmap

      – Win32
         • Proyectar un archivo: 2 pasos:
             – Crear proyección: CreateFileMapping
             – Realizar proyección: MapViewOfFile
         • Desproyectar un archivo: UnmapViewOfFile




Fundamentos de Computadores II                                   100
Sistemas Operativos
Servicios de gestión de memoria

void *mmap(void *direc, size_t lon, int prot, int indic, int desc, off_t desp);

Establece la proyección entre el espacio de direcciones de un proceso y un
   archivo.

      – Devuelve la dirección de memoria donde se ha proyectado el archivo
      – direc: dirección donde proyectar. Generalmente se utiliza NULL,
        con lo que el S.O. elige la dirección por su cuenta
      – lon: especifica el número de bytes a proyectar
      – prot: el tipo de acceso, lectura (PROT_READ), escritura
        (PROT_WRITE) o ejecución (PROT_EXEC), o cualquier combinación
        de ellas
      – indic: propiedades sobre la región, compartida (MAP_SHARED, un
        proceso hijo compartirá la región con el padre), privada
        (MAP_PRIVATE, el hijo obtiene copia propia de la región), fija
        (MAP_FIXED, el archivo ha de proyectarse en una direc´ción
        específica)
      – desc: representa el descriptor de archivo a proyectar.
      – Desp: desplazamiento dentro del archivo a partir del cual se realiza
        la proyección.

Fundamentos de Computadores II                                       101
Sistemas Operativos
Servicios de gestión de memoria

void munmap(void *direc, size_t lon);

Desproyecta parte del espacio de direcciones de un proceso desde la
  dirección direc hasta direc+lon.




Fundamentos de Computadores II                                  102
Sistemas Operativos

Más contenido relacionado

Similar a Cap04

infoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdf
infoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdfinfoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdf
infoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdfFelipeandresLizanaBa
 
unidades funcionales de una computadora
unidades funcionales de una computadoraunidades funcionales de una computadora
unidades funcionales de una computadoraBelu Corbii
 
Control automático de un sistema de riego
Control automático de un sistema de riegoControl automático de un sistema de riego
Control automático de un sistema de riegoRFIC-IUMA
 
Presentaciones plc
Presentaciones plcPresentaciones plc
Presentaciones plcFROYLAM
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercanteDaniel Remondegui
 
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...RootedCON
 
Unidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptxUnidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptxHaroldCuevasPablus
 
Lenguajes máquina y ensamblador
Lenguajes máquina y ensambladorLenguajes máquina y ensamblador
Lenguajes máquina y ensambladorJose Bondia
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxJose Manuel Mansilla Carrasco
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Guia de trabajo académico no 10
Guia de trabajo académico no 10Guia de trabajo académico no 10
Guia de trabajo académico no 10SAN JUAN
 
Sistemas Digitales
Sistemas DigitalesSistemas Digitales
Sistemas Digitalesdayanalvarez
 

Similar a Cap04 (20)

Conceptos plc
Conceptos plcConceptos plc
Conceptos plc
 
infoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdf
infoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdfinfoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdf
infoplc_net_dvp_es2_ex2_ss2_sa2_sx2_program_o_sp_20110630_ (1).pdf
 
Guia 5 3 2015 c2
Guia 5 3 2015 c2Guia 5 3 2015 c2
Guia 5 3 2015 c2
 
Omron02
Omron02Omron02
Omron02
 
Taller cruce por cero
Taller cruce por ceroTaller cruce por cero
Taller cruce por cero
 
unidades funcionales de una computadora
unidades funcionales de una computadoraunidades funcionales de una computadora
unidades funcionales de una computadora
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Control automático de un sistema de riego
Control automático de un sistema de riegoControl automático de un sistema de riego
Control automático de un sistema de riego
 
Presentaciones plc
Presentaciones plcPresentaciones plc
Presentaciones plc
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercante
 
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
 
Cap 3
Cap 3Cap 3
Cap 3
 
Unidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptxUnidad III Lenguaje Ensamblador (2).pptx
Unidad III Lenguaje Ensamblador (2).pptx
 
Lenguajes máquina y ensamblador
Lenguajes máquina y ensambladorLenguajes máquina y ensamblador
Lenguajes máquina y ensamblador
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Guia de trabajo académico no 10
Guia de trabajo académico no 10Guia de trabajo académico no 10
Guia de trabajo académico no 10
 
Sistemas Digitales
Sistemas DigitalesSistemas Digitales
Sistemas Digitales
 

Más de Xavier Davias

Metodos numericos-3-1212530740013750-9
Metodos numericos-3-1212530740013750-9Metodos numericos-3-1212530740013750-9
Metodos numericos-3-1212530740013750-9Xavier Davias
 
Heckbert p s__adaptive_radiosity_textures_for_bidirectional_r
Heckbert p s__adaptive_radiosity_textures_for_bidirectional_rHeckbert p s__adaptive_radiosity_textures_for_bidirectional_r
Heckbert p s__adaptive_radiosity_textures_for_bidirectional_rXavier Davias
 
Fourier transforms & fft algorithm (paul heckbert, 1998) by tantanoid
Fourier transforms & fft algorithm (paul heckbert, 1998) by tantanoidFourier transforms & fft algorithm (paul heckbert, 1998) by tantanoid
Fourier transforms & fft algorithm (paul heckbert, 1998) by tantanoidXavier Davias
 
Systems interfacesanddeployment
Systems interfacesanddeploymentSystems interfacesanddeployment
Systems interfacesanddeploymentXavier Davias
 
Oracle b tree index internals - rebuilding the thruth
Oracle b tree index internals - rebuilding the thruthOracle b tree index internals - rebuilding the thruth
Oracle b tree index internals - rebuilding the thruthXavier Davias
 
Simulacion sistemas tema6pr-2
Simulacion sistemas tema6pr-2Simulacion sistemas tema6pr-2
Simulacion sistemas tema6pr-2Xavier Davias
 
El hombre anumerico john allen paulos
El hombre anumerico  john allen paulosEl hombre anumerico  john allen paulos
El hombre anumerico john allen paulosXavier Davias
 

Más de Xavier Davias (20)

Metodos numericos-3-1212530740013750-9
Metodos numericos-3-1212530740013750-9Metodos numericos-3-1212530740013750-9
Metodos numericos-3-1212530740013750-9
 
Heckbert p s__adaptive_radiosity_textures_for_bidirectional_r
Heckbert p s__adaptive_radiosity_textures_for_bidirectional_rHeckbert p s__adaptive_radiosity_textures_for_bidirectional_r
Heckbert p s__adaptive_radiosity_textures_for_bidirectional_r
 
Fourier transforms & fft algorithm (paul heckbert, 1998) by tantanoid
Fourier transforms & fft algorithm (paul heckbert, 1998) by tantanoidFourier transforms & fft algorithm (paul heckbert, 1998) by tantanoid
Fourier transforms & fft algorithm (paul heckbert, 1998) by tantanoid
 
03.problemas
03.problemas03.problemas
03.problemas
 
Systems interfacesanddeployment
Systems interfacesanddeploymentSystems interfacesanddeployment
Systems interfacesanddeployment
 
Oracle b tree index internals - rebuilding the thruth
Oracle b tree index internals - rebuilding the thruthOracle b tree index internals - rebuilding the thruth
Oracle b tree index internals - rebuilding the thruth
 
Sistemas temaii 5
Sistemas temaii 5Sistemas temaii 5
Sistemas temaii 5
 
Simulacion sistemas tema6pr-2
Simulacion sistemas tema6pr-2Simulacion sistemas tema6pr-2
Simulacion sistemas tema6pr-2
 
El hombre anumerico john allen paulos
El hombre anumerico  john allen paulosEl hombre anumerico  john allen paulos
El hombre anumerico john allen paulos
 
Clase3
Clase3Clase3
Clase3
 
Cap04
Cap04Cap04
Cap04
 
Cap2
Cap2Cap2
Cap2
 
Cap1
Cap1Cap1
Cap1
 
Aic multiproc
Aic multiprocAic multiproc
Aic multiproc
 
Aa
AaAa
Aa
 
08 0300 cs
08 0300 cs08 0300 cs
08 0300 cs
 
Cp223
Cp223Cp223
Cp223
 
Ejercicios tema7
Ejercicios tema7Ejercicios tema7
Ejercicios tema7
 
Ejercicios tema6
Ejercicios tema6Ejercicios tema6
Ejercicios tema6
 
Ejercicios tema5
Ejercicios tema5Ejercicios tema5
Ejercicios tema5
 

Cap04

  • 1. Capítulo 4 Gestión de memoria Fundamentos de Computadores II 1 Sistemas Operativos
  • 2. Índice 1. Objetivos del sistema de gestión de memoria 2. Modelo de memoria de un proceso 3. Esquemas de memoria basados en asignación contigua 4. Memoria virtual 5. Archivos proyectados en memoria 6. Servicios de gestión de memoria Fundamentos de Computadores II 2 Sistemas Operativos
  • 3. 1. Objetivos del sistema de gestión de memoria Fundamentos de Computadores II 3 Sistemas Operativos
  • 4. 1. Objetivos del sistema de gestión de memoria • En sistemas con multiproceso, el S.O. debe “repartir” los recursos entre los procesos existentes: – Reparto de procesador: Gestión de procesos – Reparto de memoria: Gestión de memoria • Objetivos del Gestor de Memoria A. Espacios lógicos independientes B. Protección entre procesos C. Compartición de Memoria (procesos ligeros) D.Soporte a las regiones del proceso E. Maximizar el grado de multiprogramación F. Mapas de memoria de un tamaño adecuado (normalmente grandes) Fundamentos de Computadores II 4 Sistemas Operativos
  • 5. 1. Objetivos del sistema de gestión de memoria A. Espacios lógicos independientes • A priori no se conoce la posición de memoria que ocupará un programa cuando vaya a ejecutarse (estado de ocupación de la memoria) • Código en ejecutable genera referencias entre 0 y N • Ejemplo: Programa que copia un vector F ic h e r o E je c u ta b le –Vector destino a partir de 0 4 dirección 2000 .... C a b e c e ra 96 –Tamaño del vector en dirección 100 104 LO A D R 1, #1000 LO A D R 2, #2000 1500 108 L O A D R 3 , /1 5 0 0 11 2 L O A D R 4 , [R 1 ] –Vector origen a partir de dirección 11 6 S T O R E R 4 , [R 2 ] 120 IN C R 1 1000 124 IN C R 2 128 D E C R 3 132 J N Z /1 2 136 ................. Fundamentos de Computadores II 5 Sistemas Operativos
  • 6. 1. Objetivos del sistema de gestión de memoria Se supone que el código del SO reside en las posiciones más altas. El programa se carga en la posición 0 y para que se ejecute ha de pasársele el control M e m o r ia 0 (es decir, que el contador del programa 4 LO AD R 1, #1000 LO AD R 2, #2000 apunte a esta posición). 8 L O A D R 3 , /1 5 0 0 12 L O A D R 4 , [R 1 ] • Problema:Como se ve, no coinciden las 16 S T O R E R 4 , [R 2 ] 20 IN C R 1 direcciones usadas en el programa con la 24 IN C R 2 posición a partir de la cual se carga el 28 D EC R 3 32 J N Z /1 2 programa. Suponer por ejemplo, que el 36 ................. programa se cargara a partir de la .... posición 10000.... • Solución: Reubicación de direcciones S is te m a O p e r a tiv o lógicas a físicas Fundamentos de Computadores II 6 Sistemas Operativos
  • 7. 1. Objetivos del sistema de gestión de memoria • Reubicación: Traducir direcciones lógicas a direcciones físicas dependientes del hardware mediante una función de traducción. La reubicación permite crear un espacio lógico independiente para cada proceso y el S.O. debe poder acceder a los espacios lógicos para realizar la traducción. – Direcciones lógicas: direcciones de memoria generadas por el programa – Direcciones físicas: direcciones de memoria principal asignadas • Función de traducción: Traducción(IdProc, dir_lógica) → dir_física – Ejemplo: El programa tiene asignada memoria a partir de la dirección 10000 Reubicación: sumar 10000 a direcciones lógicas – Implementación: o Hardware o Software Fundamentos de Computadores II 7 Sistemas Operativos
  • 8. 1. Objetivos del sistema de gestión de memoria • Reubicación Hardware: la MMU (memory management unit) se encarga de la traducción • Proceso: – Programa se carga en memoria sin modificar – El S.O. almacena por cada proceso su función de traducción – El S.O. especifica a la MMU qué función aplicar para cada proceso M e m o r ia P ro c e s a d o r 10000 LO AD R 1, #1000 10004 LO AD R 2, #2000 H W tr a d u c c ió n 10008 L O A D R 3 , /1 5 0 0 PC 10012 L O A D R 4 , [R 1 ] 8 10000 10016 S T O R E R 4 , [R 2 ] 11 5 0 0 R . I n s tr u c c ió n 1500 10020 IN C R 1 + 10024 IN C R 2 L O A D R 3 , /1 5 0 0 10028 DEC R 3 10032 J N Z /1 2 10036 ................. .......... Fundamentos de Computadores II 8 Sistemas Operativos
  • 9. 1. Objetivos del sistema de gestión de memoria • Reubicación software: traducción de direcciones durante carga del programa. Esta solución se usa en sistemas sin el hardware específico de traducción M e m o r ia (MMU). • Proceso: – El programa se carga con las 10000 L O A D R 1 , #110 00 direcciones ya traducidas 10004 LO AD R 2, #12000 10008 L O A D R 3 , /1 1 5 0 0 – Se genera un código diferente del 10012 L O A D R 4 , [R 1 ] programa ejecutable 10016 S T O R E R 4 , [R 2 ] 10020 IN C R 1 • Desventajas: 10024 IN C R 2 – No asegura protección (no se 10028 D EC R 3 10032 J N Z /1 0 0 1 2 verifica cada dirección a usar, sino 10036 ................. que se usan las direcciones .......... generadas tras el proceso de carga) – No permite mover programa en tiempo de ejecución (suponer que es necesaria la reubicación del espacio asignado al proceso, por necesitar más espacio.....) Fundamentos de Computadores II 9 Sistemas Operativos
  • 10. 1. Objetivos del sistema de gestión de memoria B. Protección entre procesos La protección es diferente según sea un sistema Mono o Multi programado: Sistema MonoProgramado: La intrusión se dará solamente entre el programa y el S.O. Sistema MultiProgramado: La intrusión puede venir tanto de otros procesos como de otros usuarios además del riesgo del sistema Monoprogramado. • Acciones – La traducción de direcciones debe crear espacios disjuntos – Es necesario validar todas las direcciones que genera el programa • La detección de alguna intrusión debe realizarla el hardware del procesador (MMU), ya que hay que realizarla en tiempo de ejecución • El tratamiento de alguna intrusión lo hace el SO – En sistemas con mapa de E/S y memoria común: – Traducción permite impedir que los procesos accedan directamente a dispositivos de E/S Fundamentos de Computadores II 10 Sistemas Operativos
  • 11. 1. Objetivos del sistema de gestión de memoria C. Compartición de Memoria (procesos ligeros) La compartición de memoria entre procesos da soporte a la creación de procesos ligeros y está controlado por el S.O. • Acciones: – Las direcciones lógicas de 2 o más procesos se corresponderán con una misma dirección física. – La memoria asignada a cada proceso no puede ser ya contigua. – La función de traducción en estos casos se va haciendo más M a p a p ro c e s o 1 compleja. M e m o r ia • Ventajas: z o n a p r iv a d a 1 – Procesos ejecutando mismo z o n a c o m p a r t id a z o n a p r iv . 1 ( P 1 ) programa comparten su z o n a p r iv . 1 ( P 2 ) z o n a p r iv a d a 2 código z o n a c o m p a r tid a – Mecanismo de comunicación M a p a p ro c e s o 2 entre procesos muy rápido z o n a p r iv a d a 1 z o n a p r iv . 2 ( P 2 ) z o n a p r iv . 2 ( P 1 ) z o n a c o m p a r tid a z o n a p r iv a d a 2 Fundamentos de Computadores II 11 Sistemas Operativos
  • 12. 1. Objetivos del sistema de gestión de memoria • Problemas: – Requiere asignación no contigua M a p a p ro c e s o 1 M e m o r ia – Si la posición de zona compartida contiene 2000 referencia a otra posición de z o n a c o m p a r tid a la zona compartida, no se z o n a c o m p a r t id a puede saber a qué dirección 10000 ¿ 110 0 ó 21 0 0 ? se refiere puesto que cada 10100 proceso ligero verá esa M a p a p ro c e s o 2 dirección de forma diferente Ejemplo: Si el código, que es común, 1000 contiene una bifurcación, no se z o n a c o m p a r tid a podrá determinar a qué dirección se debe saltar, dependiendo del proceso que esté ejecutando el código lógico físico Fundamentos de Computadores II 12 Sistemas Operativos
  • 13. 1. Objetivos del sistema de gestión de memoria D. Soporte de las regiones del proceso El mapa de memoria de un proceso no es homogéneo, ya que las regiones contienen diferentes tipos de información (código, datos y pila normalmente) y poseen diferentes características • Acciones: – Hacer mapa de memoria dinámico: • Regiones cambian de tamaño (p.ej. pila) • Se crean y destruyen regiones (el sistema de memoria debe controlar qué regiones están presentes, así como su tamaño) • Existen zonas sin asignar (huecos, con carácter dinámico) – Detectar accesos no permitidos a una región ( de sólo lectura por ej) – Detectar accesos a huecos – Evitar reservar espacio para huecos – Guardar y gestionar una tabla de regiones para cada proceso Fundamentos de Computadores II 13 Sistemas Operativos
  • 14. 1. Objetivos del sistema de gestión de memoria E. Maximizar el grado de multiprogramación El reparto de memoria debe ser tal que Aprovechamiento de memoria maximize el grado de multiprogramación óptimo es irrealizable!!!! para evitar el desperdicio de memoria Tablas de gestión demasiado • Memoria desperdiciada grandes – Restos (huecos) inutilizables (fragmentación) M e m o r ia – Tablas requeridas por gestor de 0 D ir e c c ió n 5 0 d e l p r o c e s o 4 memoria 1 D ir e c c ió n 1 0 d e l p r o c e s o 6 • Acciones 2 D ir e c c ió n 9 5 d e l p r o c e s o 7 – Crear bloques de asignación de 3 D ir e c c ió n 5 6 d e l p r o c e s o 8 menor tamaño 4 D ir e c c ió n 0 d e l p r o c e s o 1 2 – Gestionar las tablas de asignación 5 D ir e c c ió n 5 d e l p r o c e s o 2 0 más eficientemente 6 D ir e c c ió n 0 d e l p r o c e s o 1 – Se opta por la paginación ......................................... – Uso de memoria virtual para ......................................... aumentar grado de multiprogramación N -1 D ir e c c ió n 8 8 d e l p r o c e s o 9 N D ir e c c ió n 5 1 d e l p r o c e s o 4 Fundamentos de Computadores II 14 Sistemas Operativos
  • 15. 1. Objetivos del sistema de gestión de memoria F. Mapas de memoria de un tamaño adecuado (normalmente grandes) Los procesos necesitan cada vez mapas más grandes: aplicaciones más novedosas, más recursos gráficos, más carga computacional.... • Acciones – Utilizar Memoria Virtual – Hacer que el usuario disponga virtualmente de una enorme cantidad de memoria física • Otras opciones (antigua) – Overlays • Programa dividido en fases que se ejecutan sucesivamente • En cada momento sólo hay una fase residente en memoria • Cada fase realiza su labor y carga la siguiente • No es transparente: Toda la labor realizada por programador Fundamentos de Computadores II 15 Sistemas Operativos
  • 16. 2. Modelo de memoria de un proceso 2.1. Introducción 2.2. Fases en la generación de un ejecutable 2.3. Mapa de memoria de un proceso 2.4. Operaciones sobre regiones Fundamentos de Computadores II 16 Sistemas Operativos
  • 17. Modelo de memoria de un proceso 2.1. Introducción – El S.O. es el responsable de la gestión de memoria de cualquier proceso. – El mapa inicial de memoria de un proceso está relacionado con el archivo ejecutable que generará el proceso – ¿Cómo generar el mapa de memoria inicial a partir del ejecutable? – ¿Cómo se organiza el mapa de memoria? – ¿Cuáles son sus características básicas? – ¿Qué operaciones se pueden realizar en el mapa de memoria? Fundamentos de Computadores II 17 Sistemas Operativos
  • 18. Modelo de memoria de un proceso 2.2. Fases en la generación de un ejecutable • Aplicación: conjunto de módulos en lenguaje de alto nivel • Procesado en dos fases: Compilación y Montaje • Compilación: – Se asignan direcciones a los M ó d u lo M ó d u lo símbolos definidos fu e n te A fu e n te B – Resuelve referencias a los símbolos de cada módulo – Genera módulo objeto C o m p ila d o r • Montaje (o enlace): M ó d u lo M ó d u lo o b je t o A o b je to B B ib lio t e c a s – Resuelve referencias entre módulos objeto – Resuelve referencias a símbolos M o n ta d o r de bibliotecas F ic h e r o – Genera resultado (archivo e je c u t a b le ejecutable), que incluye las bibliotecas usadas Fundamentos de Computadores II 18 Sistemas Operativos
  • 19. Modelo de memoria de un proceso Biblioteca: colección de módulos objeto relacionados. Algunas bibliotecas son proporcionadas a los usuarios (bibliotecas) del sistema, mientras que otras habrán sido creadas por los usuarios (propias) (por ejemplo, bibliotecas de entrada salida, incluyendo las funciones como printf, getchar, etc, o las llamadas al sistema de POSIX) • Tipos: Estáticas: el montaje enlaza los módulos objeto del programa y de las bibliotecas, dando como resultado un ejecutable autocontenido. M a in • Desventajas: F u n c ió n A – Ejecutables grandes F u n c ió n B C ó d ig o – Código de función de biblioteca F u n c ió n d e b ib lio t e c a F 1 repetido F u n c ió n d e b ib lio te c a F 2 – Múltiples copias en memoria del código de función de biblioteca – La actualización de biblioteca implicaría volver a montar Fundamentos de Computadores II 19 Sistemas Operativos
  • 20. Modelo de memoria de un proceso Dinámicas: la carga y montaje se hace en tiempo de ejecución. El ejecutable contiene únicamente el nombre de la biblioteca y la rutina de carga y montaje en tiempo de ejecución • Proceso de carga: – La rutina de carga y montaje incorpora la biblioteca correspondiente. – Se ajustan las instrucciones que realizan las referencias a dicho símbolo, de forma que las próximas referencias accedan al símbolo de biblioteca correspondiente, sin que sea necesario activar de nuevo el proceso de montaje de la biblioteca. – Para evitar modificar el código del programa, en este proceso, se suelen utilizar referencias indirectas mediante una tabla que recoge todos los símbolos correspondientes a bibliotecas dinámicas. Hay que tener en cuenta que en algunos S.O. los segmentos de código ejecutables no son modificables Fundamentos de Computadores II 20 Sistemas Operativos
  • 21. Modelo de memoria de un proceso • Ventajas: – Menor tamaño ejecutables – Código de rutinas de biblioteca sólo en archivo de biblioteca – Procesos pueden compartir código de biblioteca – Actualización automática de bibliotecas: uso de versiones. Suele haber en un sistemas varias versiones de la misma biblioteca. Cuando un programa hace referencia a uno de sus símbolos, se busca la versión adecuada • Desventajas: – Mayor tiempo de ejecución debido a carga y montaje. Se trata de un retraso tolerable, ya que se compensan el resto de las ventajas – Ejecutable no autocontenido Fundamentos de Computadores II 21 Sistemas Operativos
  • 22. Modelo de memoria de un proceso • Forma de uso : 1. Enlace dinámico implícito: Se especifica en tiempo de montaje qué biblioteca usar, pero se pospone su carga y montaje a tiempo de ejecución. 2. Uso explícito: » Requerido por aplicaciones que determinan en tiempo de ejecución qué bibliotecas deben usar » No se especifica la biblioteca en mandato de montaje » Es el programa quien solicita la carga de bibliotecas mediante servicio del sistema (dlopen en UNIX y LoadLibrary en Win32) » El acceso a los símbolos de la biblioteca ya no es transparente, sino que se ha de hacer desde el propio programa, mediante los servicios apropiados del sistema (dlsym en UNIX y GetProcAddress en Win32) Fundamentos de Computadores II 22 Sistemas Operativos
  • 23. Modelo de memoria de un proceso • El uso de bibliotecas dinámicas es transparente. Es decir, los mandatos de compilación y montaje son idénticos que en el caso de las estáticas • Si la biblioteca dinámica contiene referencias internas (a símbolos definidos en la misma) existe el problema, ya comentado, de la zona compartida con autoreferencias • Tres posibles soluciones: 1. A cada biblioteca dinámica se le asigna un rango de direcciones fijo • Inconveniente: Poco flexible 2. En montaje en tiempo de ejecución se reajustan autoreferencias • Inconveniente: Impide compartir código de biblioteca 3. Crear biblioteca con código independiente de posición (PIC) • Se genera código con direccionamiento relativo a registro • Inconveniente (tolerable): direccionamiento relativo menos eficiente Fundamentos de Computadores II 23 Sistemas Operativos
  • 24. Modelo de memoria de un proceso Ficheros ejecutables • Distintos fabricantes usan diferentes formatos – Ejemplo: En Linux Executable and Linkable Format (ELF) • Estructura: Cabecera y conjunto de secciones • Cabecera: información de control que permite interpretar el contenido del ejecutable. Suele incluir la siguiente información: – Número mágico que identifica a ejecutable. Por ejemplo, en formato ELF el primer byte debe contener el valor hexadecimal 7f, los tres siguientes los caracteres E, L y F – Punto de entrada del programa: es decir, el valor que inicialmente contendrá el contador del programa – Tabla de secciones. Para cada una de ellas se especifica: tipo, dirección de comienzo en el archivo y tamaño. Ejemplo: » Tabla de símbolos para depuración » Lista de bibliotecas dinámicas usadas Fundamentos de Computadores II 24 Sistemas Operativos
  • 25. Modelo de memoria de un proceso F ic h e r o E je c u ta b le 0 N ú m e r o m á g ic o D e s p l. Tam . C o n t a d o r d e p r o g r a m a in ic ia l C ó d ig o 1000 4000 C a b e c e ra .................... D a t o s c o n v .i. 5 0 0 0 1000 T a b la d e s e c c io n e s D a t o s s in v .i. - - -- -- 500 1000 ...................... ........ ........ C ó d ig o T . S ím b o lo s 8000 1000 5000 S e c c io n e s D a to s c o n v a lo r in ic ia l . . . . . . . . . . . . . . . . 8000 T a b la d e s ím b o lo s Fundamentos de Computadores II 25 Sistemas Operativos
  • 26. Modelo de memoria de un proceso • Las secciones más relevantes se volcarán en el mapa de memoria del proceso: código, datos con valor inicial y datos sin valor inicial – Código (texto): contiene el código del programa – Datos con valor inicial: variables globales inicializadas – Datos sin valor inicial: variables globales no inicializadas: aunque aparece en la tabla de secciones no se almacena en el ejecutable, ya que su contenido no es relevante • No hay sección vinculada a variables locales, ya que estas tienen carácter dinámico (se crearán en la pila del proceso, cuando los procedimientos en que aparecen sean invocados) Fundamentos de Computadores II 26 Sistemas Operativos
  • 27. Modelo de memoria de un proceso • Variables globales – Estáticas – Se crean al iniciarse programa – Existen durante toda la ejecución del proceso – Dirección fija en memoria y en ejecutable • Variables locales y parámetros – Dinámicas – Se crean al invocar la función – Se destruyen al retornar – La dirección se calcula en tiempo de ejecución – Recursividad: varias instancias de una variable Fundamentos de Computadores II 27 Sistemas Operativos
  • 28. Modelo de memoria de un proceso • Ejemplo: int x=8; /* Variable global con valor inicial */ int y; /* Variable global sin valor inicial */ f(int t){ /* Parámetro */ int z; /* Variable local */ ....... } main(){ ....... } Fundamentos de Computadores II 28 Sistemas Operativos
  • 29. Modelo de memoria de un proceso 2.3. Mapa de memoria de un proceso • El mapa de memoria o imagen del proceso estará compuesto por un conjunto de regiones o segmentos; cada una de ellas almacena cierto tipo de información • Cada región: – Tiene asociada una información (un “objeto de memoria”) – Consiste en una zona contigua tratada como unidad al proteger o compartir – Se caracteriza por: • Dirección de comienzo y tamaño inicial • Soporte: donde se almacena su contenido inicial (soporte en archivo y sin soporte, es decir, objeto sin contenido inicial) • Protección: RWX • Uso compartido o privado • Tamaño fijo o variable Fundamentos de Computadores II 29 Sistemas Operativos
  • 30. Modelo de memoria de un proceso • La ejecución de un programa crea un mapa de memoria a partir del archivo ejecutable. Cada sección del ejecutable da lugar a una región del mapa inicial. – Código (texto): compartida, lectura y ejecución, tamaño fijo, soporte en archivo ejecutable – Datos con valor inicial: privada, lectura y escritura, tamaño fijo, soporte en archivo ejecutable – Datos sin valor inicial: privada, lectura y escritura, tamaño fijo, sin soporte (se rellena a ceros en algunos lenguajes) – Pila: privada, lectura y escritura, tamaño variable, sin soporte. Crece hacia direcciones más bajas. La pila inicial sólo contiene los argumentos de llamada al programa Fundamentos de Computadores II 30 Sistemas Operativos
  • 31. Modelo de memoria de un proceso Fichero ejecutable Mapa de memoria 0 0 Número mágico Cabecera Código Contador de programa inicial 4000 Datos con valor inicial Tabla de secciones 1000 5000 Datos sin valor Secciones Código inicial 5500 5000 Datos con valor inicial 8000 Tabla de símbolos Pila Argumentos del programa Fundamentos de Computadores II 31 Sistemas Operativos
  • 32. Modelo de memoria de un proceso • Durante ejecución de proceso se crean nuevas regiones. Es decir, el mapa de memoria tiene un carácter dinámico. Las nuevas regiones creadas en tiempo de ejecución pueden ser: – Región de Heap • Soporte de memoria dinámica (malloc en C) • Privada, lectura y escritura, tamaño variable, sin soporte (inicializada a cero) • Crece hacia direcciones más altas – Archivo proyectado • Región asociada al archivo proyectado • Tamaño variable, soporte en archivo • Protección y carácter compartido o privado especificado en la proyección – Memoria compartida • Región asociada a la zona de memoria compartida • Compartida, tamaño variable, sin soporte (inicializada a 0) • Protección especificada en proyección – Pilas de threads • Cada pila de thread corresponde con una región. • Estas regiones constan de las mismas características que las asociadas a la pila del proceso Fundamentos de Computadores II 32 Sistemas Operativos
  • 33. Modelo de memoria de un proceso Región Soporte Protección Comp/Priv Tamaño Código Fichero RX Compartida Fijo Dat. con v.i. Fichero RW Privada Fijo Dat. sin v.i. Sin soporte RW Privada Fijo Pilas Sin soporte RW Privada Variable Heap Sin soporte RW Privada Variable F. Proyect. Fichero por usuario Comp./Priv. Variable M. Comp. Sin soporte por usuario Compartida Variable Fundamentos de Computadores II 33 Sistemas Operativos
  • 34. Modelo de memoria de un proceso Fundamentos de Computadores II 34 Sistemas Operativos
  • 35. Modelo de memoria de un proceso 2.4. Operaciones sobre regiones Para estudiar la evolución del mapa de memoria a lo largo de la ejecución de un proceso, se pueden distinguir las siguientes operaciones: – Crear región: Implícitamente al crear mapa inicial (por parte del SO) o por solicitud del programa en tiempo de ejecución de ejecución (por ejemplo, al cargar una biblioteca dinámica) – Eliminar región: Implícitamente al terminar el proceso o por solicitud del programa en tiempo de ejecución (por ejemplo, al desproyectar un archivo) – Cambiar tamaño de la región: Implícitamente para la pila o por solicitud del programa para el heap (cuando se hace malloc) – Duplicar región: Operación requerida por el servicio fork de POSIX Fundamentos de Computadores II 35 Sistemas Operativos
  • 36. 3. Esquemas de memoria basados en asignación contigua 3.1. Esquema hardware 3.2. Gestión del SO 3.3. Política de asignación de espacio 3.4. Valoración del esquema contiguo Fundamentos de Computadores II 36 Sistemas Operativos
  • 37. Esq. de mem. basados en asignación contigua 3.1. Esquema Hardware El mapa de proceso se ubica en una zona contigua de la memoria principal. Proceso: – El S.O. busca un hueco en memoria de tamaño suficiente para alojar su mapa de memoria del proceso que comienza. – El S.O. reserva la parte del hueco necesaria y crea en ella el mapa inicial del proceso – Se establece la función de traducción, de forma que las direcciones del programa se correspondan con las direcciones existentes en el hueco asignado. Hardware requerido: – Registros valla (registro base y registro límite). Estos dos registros sólo son accesibles en modo privilegiado. – Los registros valla están desocupados cuando el S.O. toma el control para acceder a todo el mapa de memoria. Fundamentos de Computadores II 37 Sistemas Operativos
  • 38. Esq. de mem. basados en asignación contigua • Registro límite: Se comprobará que las direcciones usadas por el proceso no excedan el valor almacenado en él. • Registro base: Una vez realizada la comprobación anterior, se suma a cada dirección el valor contenido en este registro, de forma que se obtiene la dirección física pertinente. Memoria 0 Proceso 4 Procesador 10000 Hard. traducción (MMU) 10200 PC Proceso 7 8 R. límite R. base 15036 4000 21000 Proceso 3 Registro instrucción NO 20500 21000 LOAD R3, /1500 > + Proceso 2 22500 SI 25000 Excepción N Fundamentos de Computadores II 38 Sistemas Operativos
  • 39. Esq. de mem. basados en asignación contigua 3.2. Gestión del SO El S.O. almacena en el BCP cuáles son los valores de los registros valla. Dedica una estructura para conocer en todo momento el estado de la memoria, identificando qué huecos están libres. Normalmente se usa una lista en la que se almacena la dirección inicial y el tamaño de cada hueco. La gestión de esta lista obliga a comprobar, al desocupar espacio, si el nuevo espacio libre puede unirse a huecos vecinos. Problema:Según se van ejecutando procesos van quedando fragmentos de memoria libres, que debido a su tamaño no podrán ser usados en asignaciones de espacio a memoria. Este problema se denomina fragmentación externa y conlleva una mala gestión de memoria. Solución tradicional: Compactar los huecos de forma que queden contiguos. Para ello es necesario reajustar los registros valla de los procesos. INEFICIENTE. Fundamentos de Computadores II 39 Sistemas Operativos
  • 40. Esq. de mem. basados en asignación contigua 3.3. Política de asignación de espacio El S.O. debe considerar qué espacio, de los huecos libres, se usará intentando encontrar un equilibrio entre buen aprovechamiento de espacio y tiempo de respuesta corto, es decir, se aplica un algoritmo de decisión que debe ser eficiente. Este problema es un clásico: ¿Cómo asignar espacio para su aprovechamiento óptimo?. Existen tres posibles enfoques: a) Mejor ajuste (best-fit). Se elige la zona libre más pequeña donde quepa el mapa del proceso. • Problema: Conlleva crear nuevos huecos de tamaño pequeño. Además, elegir el hueco más pequeño obliga a mantener ordenados por tamaño los huecos disponibles. No es eficiente b) Peor ajuste. Se busca el hueco más grande, intentando evitar la generación de huecos pequeños. Sigue precisando mantener el control de los tamaños c) El primero que ajuste (first-fit). Suele ser la mejor política. Muy eficiente, ya que basta con encontrar una zona libre de tamaño suficiente, y ofrece un aprovechamiento aceptable Fundamentos de Computadores II 40 Sistemas Operativos
  • 41. Esq. de mem. basados en asignación contigua 3.4. Valoración del esquema contiguo • Valoracion: – Espacios independientes para procesos: mediante registros valla – Protección: mediante registros valla – Compartir memoria: no es posible – Soporte de regiones: • No existe (no hay mecanismo de permisos sobre el espacio asignado a cada proceso) • Se reserva espacio para huecos, ya que el espacio asignado al proceso en primera instancia debe servir para todo su tiempo de vida – Maximizar rendimiento: • Mal aprovechamiento de memoria por fragmentación externa – Mapas de MV de tamaño adecuado: • No permite memoria virtual Fundamentos de Computadores II 41 Sistemas Operativos
  • 42. 4. Intercambio Fundamentos de Computadores II 42 Sistemas Operativos
  • 43. Intercambio ¿Qué hacer si no caben todos los programas en memoria principal? Usar disco (dispositivo swap) como respaldo de la memoria principal. Si no caben en memoria todos los procesos activos, se elige un proceso residente y se copia en disco su imagen de memoria Expulsar (swap-out) a los procesos bloqueados. El proceso de expulsión no implica copiar toda la imagen del proceso (por ejemplo, no es preciso ocupar los huecos ni el código, al poder recuperarse fácilmente del ejecutable). Un proceso expulsado vuelve a cargarse (swap-in) cuando esté listo para ejecutar y haya espacio en memoria. Políticas de asignación de espacio en swap: Preasignación: al crear el proceso se reserva espacio de swap. NO Preasignación: sólo se reserva espacio de swap al expulsar. (¿Semejanza con estado “suspendido”?) Fundamentos de Computadores II 43 Sistemas Operativos
  • 44. 5. Memoria virtual 5.1. Introducción 5.2. Paginación 5.3. Segmentación 5.4. Segmentación paginada 5.5. Paginación por demanda 5.6. Políticas de reemplazo 5.7. Política de asignación de marcos de página 5.8. Hiperpaginación 5.9. Gestión del espacio de swap 5.10. Operaciones sobre las regiones de un proceso Fundamentos de Computadores II 44 Sistemas Operativos
  • 45. Memoria virtual 5.1. Introducción La técnica de la MV se usa prácticamente en todos los SSOO modernos. Esta técnica se basa en transferir información entre memoria principal y memoria secundaria (por lo que involucra varios niveles de la jerarquía de memoria) Suele implementarse en un esquema de paginación (es decir, la unidad de información intercambiada entre los diferentes niveles de la jerarquía de memoria es la página) Elemento Clave: Proximidad referencial habitual de los procesos. Esta propiedad permite que un proceso puede funcionar disponiendo en memoria de una parte de su imagen de memoria (conjunto residente). Objetivo final: conseguir que la información necesaria para un proceso (conjunto de trabajo) vaya ocupando la memoria principal según se va necesitando (es decir, conjunto de trabajo === conjunto residente) Fundamentos de Computadores II 45 Sistemas Operativos
  • 46. Memoria virtual Ventajas: a) Aumento del grado de multiprogramación. Por tanto, aumento en el rendimiento del sistema b) Posibilidad de ejecutar programas más grandes que la MV disponible El uso de la MV no implica que se acelere la ejecución del programa (más bien al contrario, debido a la sobrecarga asociada a los movimientos de información entre niveles de la jerarquía). Este mecanismo no es apropiado para sistemas de tiempo real. Fundamentos de Computadores II 46 Sistemas Operativos
  • 47. Memoria virtual 5.2. Paginación • Página: Zona contigua de memoria de determinado tamaño. (Por motivos de eficiencia se suele trabajar siempre con tamaños potencia de 2. Ej:4 KB.) • Organización: — El mapa de memoria del proceso se considera dividido en páginas. — La memoria principal se considera dividida en marcos de página (tamaño de marco = tamaño de página). — Los marcos contendrán páginas de los procesos en ejecución — La tabla de páginas (TP) relaciona cada página con el marco que la contiene. El hardware de traducción (MMU) usa la tabla de páginas para traducir direcciones lógicas a físicas — Típicamente la MMU usa dos tablas de páginas (TP): a) TP del usuario: Por ejemplo, direcciones lógicas que empiezan por 0 b) TP del sistema: Por ejemplo, direcciones lógicas que empiezan por 1. Estas sólo se podrán usar en modo sistema Fundamentos de Computadores II 47 Sistemas Operativos
  • 48. Memoria virtual – Cada entrada de la tabla de páginas contendrá, además del número de marco asociado con la página: a) Información de protección: tipo de acceso permitido RWX b) Bit de página válida/inválida: para indicar si dicha entrada contiene una traducción asociada, es decir, si se corresponde realmente con un marco c) Bit de página accedida (Ref): activado cuando se accede d) Bit de página modificada (Mod): activado cuando se escribe e) Bit de desactivación de caché: se usa cuando la entrada corresponde con direcciones de E/S • Tamaño de página: La elección de tamaño de página está condicionada por diversos factores, entre los que hay que conseguir equilibrio: – Potencia de 2 y múltiplo del tamaño del bloque de disco – mejor pequeño por: • Menor fragmentación • Se ajusta mejor al conjunto de trabajo – mejor grande por: • Tablas más pequeñas • Mejor rendimiento de dispositivos de E/S – Compromiso (entre 2K y 16K) Fundamentos de Computadores II 48 Sistemas Operativos
  • 49. Memoria virtual • Dirección:Una dirección lógica se obtiene a partir de: nº página + desplazamiento • Problema: – La paginación no ofrece una solución óptima. Lo ideal sería que cada palabra del mapa de memoria de un proceso pudiera ubicarse en cualquier dirección. Esta solución es inviable debido al coste de traducción – Al no ser así, con la paginación se asigna a cada proceso un número entero de marcos de página, aunque el espacio de su mapa de memoria no sea un múltiplo entero del tamaño de página. Por tanto, se irán generando huecos (memoria no aprovechada, en la última de las páginas que no se llena de forma completa). Este proceso se denomina fragmentación interna (implica que, en término medio, cada proceso desperdicia la mitad de una página) Fundamentos de Computadores II 49 Sistemas Operativos
  • 50. Memoria virtual Dirección lógica Página Byte Marcos de página 0 1 2 3 Registro base de la TP (RIED) n MP: direcciones físicas Fundamentos de Computadores II 50 Sistemas Operativos
  • 51. Memoria virtual T. Páginas Proceso 1 Página 0 Marco 2 Memoria Página 1 Marco N Pág. 1 Pr. 2 Marco 0 .............. Pág. P Pr. 2 Marco 1 Página M Marco 3 Pág. 0 Pr. 1 Marco 2 Pág. M Pr. 1 Marco 3 T. Páginas Proceso 2 Pág. 0 Pr. 2 Marco 4 Página 0 Marco 4 ............ Página 1 Marco 0 .............. Pág. 1 Pr. 1 Marco N Página P Marco 1 • Problema: Fragmentación, la memoria asignada es mayor que la memoria requerida y por lo tanto, se desperdicia cierta cantidad de espacio Fundamentos de Computadores II 51 Sistemas Operativos
  • 52. Memoria virtual • Otras cuestiones: – En este esquema, el S.O. mantiene una tabla de páginas por cada proceso. Cuando se produce un cambio de contexto se indica a la MMU qué tabla de páginas usar – El S.O. mantiene una única tabla de páginas para sí mismo. Así, todos los procesos comparten el SO. Cuando un proceso se ejecuta en modo sistema accede directamente a su mapa y al del SO – S.O. mantiene tabla de marcos, como forma de mantener información de estado de la memoria principal. De cada marco se conoce su estado (libre, ocupado, etc) – S.O. mantiene tabla de regiones por cada proceso, indicando las características de cada región y qué rango de páginas pertenecen a cada región • Desperdicio de espacio: Mucho mayor gasto en tablas que con asignación contigua: es el precio de mucha mayor funcionalidad Fundamentos de Computadores II 52 Sistemas Operativos
  • 53. Memoria virtual • Implementación de la tabla de páginas: – Las tablas de páginas se mantiene normalmente en memoria principal. Problemas: eficiencia y gasto de almacenamiento a) Eficiencia: cada acceso lógico requiere dos accesos a memoria principal, a la tabla de páginas + al propio dato o instrucción. Solución: caché de traducciones –› TLB b)Gasto de almacenamiento: tablas muy grandes. Ejemplo: páginas 4K, dir. lógica 32 bits y 4 bytes por entrada, la tabla de páginas de cada proceso tendrá 4MB. Solución: tablas multinivel y tablas invertidas • Valoración : – Espacios independientes para procesos: mediante tablas de páginas – Protección: mediante tablas de páginas – Compartir memoria: entradas corresponden con mismo marco (bajo supervisión del SO dos procesos pueden compartir una página asociada al mismo marco) – Soporte de regiones: bits de protección, bit de validez: no se reserva espacio para huecos – Maximizar rendimiento: Si, al permitir esquemas de memoria más flexibles – Mapas de tamaño adecuado: sí, al permitir esquemas de memoria virtual Fundamentos de Computadores II 53 Sistemas Operativos
  • 54. Memoria virtual TLB (Translation Look-aside Buffer): Consta de una memoria asociativa con información sobre últimas páginas accedidas. • Para el multiproceso, existen varias posibilidades: – La TLB no incluye información del proceso. En este caso, habrá que invalidar la TLB en los cambios de contexto – Entradas en TLB incluyen información sobre proceso: en este caso, debe existir un registro de UCP para mantener la identificación del proceso actual • Implementación – HW: La MMU consulta la TLB y si falla, se usa la TP en memoria. • Ventajas: Es un proceso muy rápido • Inconvenientes: Actualizar la TP en cambios de contexto y hay que invalidar la TLB cuando se produce un cambio de contexto (si no tiene información del PID) – SW: La MMU no usa la TP, sino que sólo consulta TLB. En caso de fallo, se activa el SO, que ha de buscar la entrada en la tabla de páginas (mediante programa), e insertar en la TLB la traducción hecha, de forma que se pueda reutilizar. • Ventajas: flexibilidad, ya que la tabla de páginas puede ser definida a conveniencia, sin restricciones impuestas por el hardware • Inconvenientes: Es menos eficiente, ya que parte del proceso de traducción se realiza mediante programa. Fundamentos de Computadores II 54 Sistemas Operativos
  • 55. Memoria virtual Una de las opciones disponibles para disminuir el tamaño requerido por las tablas de páginas es la tabla de páginas multinivel • Organización:Se trata de una tabla de páginas organizadas en M niveles: – Entrada de TP de nivel K apunta a TP de nivel K+1 – Entrada de último nivel apunta a marco de página • Dirección: La dirección lógica especifica la entrada a usar en cada nivel • 1 campo por nivel + desplazamiento • Accesos:Un acceso lógico supone M + 1 accesos a memoria. Solución: uso de TLB • Invaliadación:Si todas las entradas de una TP son inválidas, no se almacena esa TP y se pone inválida la entrada correspondiente de la TP superior • Ahorro de espacio:Si el proceso usa una parte pequeña de su espacio lógico, se consigue ahorro en espacio para almacenar TPs Fundamentos de Computadores II 55 Sistemas Operativos
  • 56. Memoria virtual Página Dirección lógica 1er nivel 2º nivel Byte 0 1 2 3 Marcos de página 0 1 2 3 n Registro base de la TP (RIED) n 0 1 2 3 n MP: direcciones físicas Fundamentos de Computadores II 56 Sistemas Operativos
  • 57. Memoria virtual • Ejemplo: Proceso que usa 12MB superiores y 4MB inferiores – 2 niveles, páginas de 4K, dir. lógica 32 bits (10 bits por nivel) y 4 bytes por entrada – Tamaño: 1 TP N1 + 4 TP N2= 5 * 4KB = 20KB (frente a 4MB) • Ventajas adicionales: permite compartir TPs intermedias y sólo se requiere que esté en memoria la TP de nivel superior. Las restantes pueden estar en disco y traerse por demanda Fundamentos de Computadores II 57 Sistemas Operativos
  • 58. Memoria virtual m e m o r ia ta b la s d e p á g in a s s e g u n d o n iv e l P á g in a 2 0 4 8 .. . P á g in a 1 0 2 3 T a b la d e p á g in a s p r im e r n iv e l .. P á g in a 0 V . V P á g in a 1 0 2 4 V I P á g in a 2 0 4 7 I .. V . P á g in a 3 0 7 1 .. P á g in a 1 0 4 8 5 7 5 ( 2 ^ 2 0 - 1 ) . P á g . 1 0 4 7 5 5 2 (2 ^ 2 0 -1 0 2 4 ) Fundamentos de Computadores II 58 Sistemas Operativos
  • 59. Memoria virtual Otra alternativa para disminuir el espacio necesario por la tabla de páginas es la tabla de páginas invertida • Organización: – La tabla contendrá tantas entradas como marcos de página haya. – Cada entrada almacena la página cargada en dicho marco junto con sus características: • Número de página, • Proceso dueño de la página – El tamaño de la tabla de páginas es proporcional a la memoria disponible. • Accesos:La MMU usa una TLB convencional, pero si falla la traducción se accede a la tabla de páginas invertida. Al estar la tabla organizada por marcos no se puede hacer una búsqueda directa. Debería accederse a todas las entradas en busca de la página correspondiente. Por esta razón se suele organizar como una tabla hash • Ahorro de espacio: Se reduce el espacio de almacenamiento necesario, ya que sólo se guarda información sobre las páginas válidas Fundamentos de Computadores II 59 Sistemas Operativos
  • 60. Memoria virtual Dirección lógica pid Página Byte i pid página i Byte Dirección física Fundamentos de Computadores II 60 Sistemas Operativos
  • 61. Memoria virtual 5.3. Segmentación Con la paginación la MMU no dispone de información sobre las regiones de los procesos y sólo entiende de páginas. Por esta razón, el SO debe mantener una lista de las páginas que componen cada región, lo que supone varias desventajas: • Al crear una región hay que cuidar que todas las páginas asociadas tengan la misma información de control • Para poder compartir una región es preciso que las entradas de varios procesos apunten a los mismos marcos Segmentación: es un esquema HW que intenta dar soporte directo a las regiones. En él se considera el mapa de memoria como compuesto por varios segmentos. Se puede considerar que consisten en una generalización de los registros valla base y límite, pero usando un par de registros por cada segmento Fundamentos de Computadores II 61 Sistemas Operativos
  • 62. Memoria virtual • Dirección:Una dirección lógica estará compuesta por un número de segmento y un desplazamiento en el mismo. • Traducción: La forma de realizar la traducción puede apreciarse en la imagen siguiente: d ir e c c ió n ló g ic a s d t a b la d e s e g m e n t o s lím ite base N O m e m o r ia > + S I E x c e p c ió n Fundamentos de Computadores II 62 Sistemas Operativos
  • 63. Memoria virtual • Tabla de segmentos:En este caso, la MMU usa una tabla de segmentos (TS). • Organización: – El SO mantiene una TS por proceso, de forma que en cada cambio de contexto se notifica a MMU cuál debe usar – Cada entrada de TS contiene (entre otros): • Registro base y límite del segmento • protección: RWX • Problema: Fragmentación Externa – En este esquema se produce fragmentación externa, ya que el almacenamiento de los segmentos se realiza de forma contigua. – El SO debe mantener una lista que le permita conocer qué zonas de memoria están libres y cuáles ocupadas: es decir, estructuras de datos que identifiquen huecos y zonas asignadas Fundamentos de Computadores II 63 Sistemas Operativos
  • 64. Memoria virtual • Valoración: – Espacios independientes para procesos: mediante su propia TS, que crea un espacio lógico independiente – Protección: mediante TS, ofreciendo espacios disjuntos de memoria – Compartir memoria: bajo control del SO es posible que dos o más procesos tengan un segmento asociado a la misma zona de memoria – Soporte de regiones: bits de protección – Maximizar rendimiento : No lo maximiza, por la fragmentación externa – Mapas de tamaño adecuado: No cumple este objetivo porque no permite implementar eficientemente un sistema de memoria virtual Por tanto, tal y como se ha presentado se usa en muy pocos SO reales Fundamentos de Computadores II 64 Sistemas Operativos
  • 65. Memoria virtual 5.4. Segmentación paginada Se intenta aunar las ventajas de ambos esquemas: segmentación y paginación: – Segmentación: soporte para regiones. – Paginación: mejor uso del espacio de memoria. • Organización: – Entrada en TS apunta a una TP para el segmento. – El espacio del segmento está compuesto de varias páginas, de forma que su espacio no tiene que ser contiguo. Fundamentos de Computadores II 65 Sistemas Operativos
  • 66. Memoria virtual •Traducción:La traducción se lleva a cabo según se indica. d ir e c c ió n ló g ic a s p d t a b la d e p á g in a s t a b la d e s e g m e n t o s p a ra s e g m e n to s lím ite d ir. T . P á g . p m NO m e m o r ia > m d SI d ir e c c ió n E x c e p c ió n f ís ic a Fundamentos de Computadores II 66 Sistemas Operativos
  • 67. Memoria virtual • Valoración: – Espacios independientes para procesos: mediante TS – Protección: mediante TS – Compartir memoria: bajo control del SO, podemos hacer que una misma entrada aparezca en diferentes TS (es decir, pueda ser usado por varios procesos) – Soporte de regiones: bits de protección – Maximizar rendimiento: la paginación aprovecha eficientemente el espacio de memoria. – Mapas de tamaño adecuado: permite esquemas de memoria virtual • Ventajas: Frente a paginación sin segmentos facilita al SO la gestión de las regiones, pero requiere HW más complejo Fundamentos de Computadores II 67 Sistemas Operativos
  • 68. Memoria virtual 5.5. Paginación por demanda Una vez analizados los diferentes esquemas hardware vamos a ver cómo se articulan para construir un esquema de memoria virtual (estos esquemas también pueden usarse sin memoria virtual, pero en la actualidad su uso está siempre vinculado a la memoria virtual) • Normalmente la memoria virtual se construye sobre esquemas de paginación pura o segmentada. De esta forma, la unidad de información intercambiada entre memoria principal y secundaria es la página. • Normalmente la transferencia de información se lleva a cabo bajo demanda (paginación por demanda). De esta forma, cuando un proceso necesita acceder a una página que no está en memoria principal, se genera un fallo de página y el SO se encarga de transferirla desde la memoria secundaria. Si al traerla no hay espacio suficiente en MP, será necesario desalojar alguna de las páginas actuales (ello se hace mediante un algoritmo de reemplazo) Fundamentos de Computadores II 68 Sistemas Operativos
  • 69. Memoria virtual • La construcción de un sistema de memoria virtual sobre un procesador con paginación implica usar un bit de validez en las entradas de la tabla de páginas, que indica si la página es válida. Estarán marcadas como inválidas todas las páginas que no residen en MP, así como las que constituyen huecos en el mapa de memoria. • Para las entradas correspondientes a páginas no residentes en MP, la entrada principal, en lugar de almacenar el marco donde reside contendrá la dirección del dispositivo de memoria en que se encuentra almacenada. De forma que cuando se produce un acceso a una de estas páginas, se produce una excepción y se activa el SO, responsable de hacer la transferencia desde memoria secundaria. • Algunos sistemas también usan la técnica de prepaginación. Al ocurrir un fallo de página no sólo traen la página en cuestión, sino también las cercanas, al suponerse que se usarán en un corto plazo de tiempo. La efectividad de esta técnica dependerá del acierto de la predicción. Fundamentos de Computadores II 69 Sistemas Operativos
  • 70. Memoria virtual Veamos cómo se gestiona la ocurrencia de un fallo de página: • La MMU genera una excepción. Normalmente deja en un registro especial la dirección que causó el fallo • Se activa el SO, que comprueba: – Si la página es inválida, se aborta el proceso (solución normal, aunque también podría bastar con el envío de una señal). – Si la página es ausente se siguen los pasos siguientes: a) Se consulta la tabla de marcos para ver si hay algún hueco libre: i. Si no hay ningún marco libre se aplica el algoritmo de reemplazo, que decidirá el marco a desalojar. La página almacenada hasta entonces se marca como inválida. Si ha sido modificada, antes hay que salvar su contenido en memoria secundaria ii. Si hay marco libre: se inicia la lectura desde memoria secundaria y se vuelca al marco, marcándose como válida dicha entrada en la TP y apuntando el marco en que está almacenada Fundamentos de Computadores II 70 Sistemas Operativos
  • 71. Memoria virtual • En el peor de los casos un fallo de página puede suponer dos operaciones de E/S: a) Salvaguarda de la página expulsada b) Lectura de la página nueva Dos políticas definen el funcionamiento del sistema de memoria • Política de reemplazos: – Reemplazo local: Sólo puede usarse para reemplazo un marco asignado al proceso que causa fallo – Reemplazo global: Puede usarse para reemplazo cualquier marco • Política de asignación de espacio a los procesos: – Asignación fija: El número de marcos de página para cada proceso es fijo. – Asignación dinámica: El número de marcos de página para cada proceso es dinámico Fundamentos de Computadores II 71 Sistemas Operativos
  • 72. Memoria virtual 5.6. Políticas de reemplazo • Objetivo: Minimizar la tasa de fallos de página. • Cada algoritmo descrito tiene versión local y global: – Local: criterio se aplica a las páginas residentes del proceso – Global: criterio se aplica a todas las páginas residentes • Algoritmos a estudiar A. Óptimo B. FIFO C. Reloj (o segunda oportunidad) D. LRU E. Buffering de páginas F. Retención de páginas en memoria Fundamentos de Computadores II 72 Sistemas Operativos
  • 73. Memoria virtual A) Algoritmo óptimo • Criterio: Página residente que tardará más en accederse • Implementación: Irrealizable, ya que supone disponer de una predicción fiable del uso de las páginas en un futuro a medio plazo • Versión local y global • Interés para estudios analíticos comparativos Fundamentos de Computadores II 73 Sistemas Operativos
  • 74. Memoria virtual B) Algoritmo FIFO • Criterio: se elimina la página que lleva más tiempo residente • Implementación: Fácil – Páginas residentes en orden FIFO –› se expulsa la primera – No requiere hardware especial – En el caso de estrategia local se mantiene una lista de páginas por cada proceso. En el caso global, basta con una única lista • Problema: – Una página que lleva mucho tiempo residente puede seguir accediéndose frecuentemente. – Su criterio no se basa en el uso de la página. – Anomalía de Belady: Se pueden encontrar ejemplos en que al aumentar el número de marcos aumenta el número de fallos de página Fundamentos de Computadores II 74 Sistemas Operativos
  • 75. Memoria virtual C) Algoritmo de segunda oportunidad o del reloj Se trata de una modificación del algoritmo FIFO, para evitar que una página residente desde hace tiempo sea desalojada pese a estar siendo usada. Para ello se usa el bit de referencia Ref de las páginas, con lo que se detecta su uso • Criterio: – Si la página elegida por FIFO no tiene activo el bit Ref, es la página expulsada – Si lo tiene activo se da 2ª oportunidad antes de expulsar: se desactiva el bit Ref, se pone página al final de FIFO, se aplica criterio a la siguiente página • Implementación: Se puede implementar el orden FIFO mediante una lista circular con una referencia a la primera página de la lista: se visualiza como un reloj donde la referencia a la primera página es la aguja del reloj Fundamentos de Computadores II 75 Sistemas Operativos
  • 76. Memoria virtual D) Algoritmo LRU (last recently used) • Criterio: Basado en proximidad temporal de referencias: página residente menos recientemente usada como página a eliminar • Implementación:Posible implementación con HW específico y un contador de accesos a memoria: – Cada entrada de la TP posee un contador – Cada acceso a memoria la MMU copia el contador del sistema a entrada referenciada – Reemplazo: página con contador más bajo – Difícil implementación estricta (hay aproximaciones): precisaría una MMU específica, ya que habría que controlar los accesos realizados a cada marco para actualizar los contadores de los accesos en la TP • Nota: en su versión global, hay que considerar los contadores de las páginas menos recientemente usadas teniendo en cuenta el tiempo lógico de cada proceso Fundamentos de Computadores II 76 Sistemas Operativos
  • 77. Memoria virtual E) Buffering de páginas • Criterio:Esta técnica intenta evitar el problema con las páginas modificadas que han de ser desalojadas. En este caso, el tratamiento del fallo de página implica realizar dos accesos a disco, uno para almacenar la página modificada y para traer la nueva • Implementación: – Mantiene una reserva de marcos libres. Cuando se produce un fallo de página, siempre se usa un marco libre (es decir, en verdad no hay reemplazo) – Cuando el número de marcos libres queda por debajo de cierto umbral se activa un “demonio de paginación”, que aplica repetidamente el algoritmo de reemplazo: • Páginas no modificadas pasan a lista de marcos libres • Páginas modificadas pasan a lista de marcos modificados: cuando se escriban a disco pasan a lista de libres; suelen escribirse en tandas (lo que mejora el rendimiento) – Si se referencia una página mientras está en estas listas: se recupera directamente de la lista (no hay E/S), lo que puede mejorar el comportamiento de algoritmos poco eficientes Fundamentos de Computadores II 77 Sistemas Operativos
  • 78. Memoria virtual F) Retención de páginas en memoria • Criterio:No todas las páginas son reemplazables • Aplicación: – Se aplica a páginas del propio S.O: si sus páginas están fijas en memoria, su gestión es más sencilla – También se aplica mientras se hace DMA sobre una página. La página no será reemplazable hasta que finalice la operación sobre ella • Implementación: Algunos S.O. ofrecen a las aplicaciones un servicio para fijar en memoria una o más páginas de su mapa: adecuado para procesos de tiempo real, aunque puede afectar al rendimiento del sistema. En POSIX se trata del servicio mlock Fundamentos de Computadores II 78 Sistemas Operativos
  • 79. Memoria virtual 5.7. Política de asignación de marcos de página El SO deberá decidir cuántos marcos de página asigna a cada proceso: a) Asignación Fija b) Asignación Dinámica A) Asignación fija • Número constante de marcos asignados al proceso. Puede depender de las características del proceso: tamaño, prioridad,... • No se adapta a las distintas fases de ejecución. Como positivo, el comportamiento del proceso es relativamente predecible • Sólo tiene sentido usar estrategia de reemplazo local • La arquitectura impone el Nº mínimo de marcos de página: mínimo número de marcos a asignar igual al número de referencias que aparezca en la instrucción que más fallos de página pueda generar Fundamentos de Computadores II 79 Sistemas Operativos
  • 80. Memoria virtual B) Asignación dinámica • El número de marcos asignados a un proceso es variable dependiendo del comportamiento del proceso (y posiblemente de los demás procesos). • Se adapta a las diferentes fases por las que puede pasar un proceso • Se pueden usar tanto estrategias de reemplazo global como local. – Asignación dinámica + reemplazo local: el proceso va aumentando o disminuyendo su conjunto residente dependiendo de su comportamiento (comportamiento relativamente predecible) – Asignación dinámica + reemplazo global: los procesos compiten por el uso de las páginas entre ellos (comportamiento difícilmente predecible) Fundamentos de Computadores II 80 Sistemas Operativos
  • 81. Memoria virtual 5.8. Hiperpaginación (thrashing) • Definición:Tasa excesiva de fallos de página de un proceso o en el sistema, debido a que el número de marcos de página asignados es insuficiente para albergar el conjunto residente – Con asignación fija. Hiperpaginación en el proceso Pi si conjunto residente de Pi < conjunto de trabajo Pi – Con asignación variable. Hiperpaginación en el sistema si nº marcos disponibles < Σ conjuntos de trabajo de los procesos • Problema: decae el grado de uso de la CPU. Los procesos están casi siempre en colas de dispositivo de paginación. • Solución: controlar la carga: – Disminuir el grado de multiprogramación, – Suspender uno o más procesos liberando sus páginas residentes • ¿Cómo detectar esta situación? Fundamentos de Computadores II 81 Sistemas Operativos
  • 82. Memoria virtual U t iliz a c ió n d e la U C P g r a d o d e m u lt ip r o g r a m a c ió n Se verán a continuación algunas estrategias de control de la carga de trabajo: A. Estrategia del conjunto de Trabajo B. Estrategia de administración basada en la frecuencia de fallos de página C. Estrategia de control de carga para algoritmos de reemplazo globales Fundamentos de Computadores II 82 Sistemas Operativos
  • 83. Memoria virtual A) Estrategia del conjunto de trabajo • Objetivo: Determinar el conjunto de trabajo de cada proceso, es decir, las páginas usadas por el proceso en las últimas N referencias • Proceso: – Si el conjunto de trabajo decrece se liberan marcos. – Si el conjunto de trabajo crece se asignan nuevos marcos. – Si no hay marcos disponibles se suspenderá algún(os) proceso(s), que se reactivan cuando haya marcos suficientes • Condición: Si el SO es capaz de detectar el conjunto de trabajo de cada proceso, puede especificarse una estrategia de asignación dinámica con reemplazo local • Implementación: Difícil, ya que precisaría una MMU específica que controlara las páginas accedidas por cada proceso. • Aproximación: Estrategia basada en frecuencia de fallos de página (PFF), controlando la tasa de fallos de página de cada proceso Fundamentos de Computadores II 83 Sistemas Operativos
  • 84. Memoria virtual B) Estrategia basada en frecuencia de fallos de página • Objetivo: Controlar la tasa de fallos de página por proceso • Proceso: – Si tasa < límite inferior, se liberan marcos aplicando un algoritmo de reemplazo – Si tasa > límite superior, se asignan nuevos marcos. Si no hay marcos libres se suspende algún proceso ta s a d e fa llo s d e p á g in a lí m it e s u p e r io r lí m it e in f e r io r n ú m e ro d e m a rc o s Fundamentos de Computadores II 84 Sistemas Operativos
  • 85. Memoria virtual C) Estrategia de control de carga para algoritmos de reemplazo globales • Objetivo: Controlar la hiperpaginación utilizando un algoritmo de control de carga. Se da en algoritmos de reemplazo global. • Proceso: Ejemplo: UNIX 4.3 BSD – Reemplazo global con algoritmo del reloj. Variante con dos “manecillas”: hay dos punteros en vez de uno – Uso de buffering de páginas. Un demonio de paginación controla el número de marcos libres – Si el número de marcos libres < umbral, el demonio de paginación aplica reemplazo – Si se repite con frecuencia la falta de marcos libres: un proceso “swapper” suspende procesos Fundamentos de Computadores II 85 Sistemas Operativos
  • 86. Memoria virtual 5.9. Gestión del espacio de swap La asignación del espacio de swaping puede seguir dos técnicas: a) Preasignación de swap: Al crear la nueva región se reserva espacio de swap para ella. Al expulsar una página, con esta estrategia, ya habrá espacio de swap para almacenar su contenido a) Sin preasignación de swap: Al crear una región no se hace reserva de swap. Las páginas de la región se irán trayendo a MP por demanda desde el soporte de la región. Sólo se reserva espacio de swap para una página cuando es expulsada por primera vez Tendencia actual: Se suele utilizar más la estrategia sin preasignación, puesto que la preasignación de swap conlleva un peor aprovechamiento de memoria secundaria (toda página debe tener reservado espacio de swap). Fundamentos de Computadores II 86 Sistemas Operativos
  • 87. Memoria virtual 5.10. Operaciones sobre regiones de un proceso Se considerarán a continuación las siguientes operaciones sobre las regiones de un proceso en un sistema con memoria virtual: a) Creación de región: Al crear el mapa inicial o por solicitud posterior b) Liberación de región: Al terminar el proceso o por solicitud posterior c) Cambio de tamaño de región: Aumento de tamaño: hay que comprobar que no se solape con otra región y equiparar las nuevas páginas a las ya existentes en la región. El caso de expansión de la pila es algo más complejo. Disminución de tamaño d) Duplicado de región: Operación requerida por el servicio fork de POSIX Se duplica todo y se trata de una operación costosa Fundamentos de Computadores II 87 Sistemas Operativos
  • 88. Memoria virtual a) Creación de nueva región Acciones: • Al crear una región no se asigna MP ( se hará por demanda). • Se marcarán las páginas como no residentes y válidas (fallo de página cuando se intenten acceder) • El S.O. actualiza la tabla de regiones y guarda la información correspondiente a las páginas de la región, rellenando las entradas de la TP. Debe buscar un hueco en el mapa de memoria para asignar a nueva región. • Según el soporte: – Soporte en archivo: Páginas marcadas como Cargar de archivo (CA) y se almacena dirección del bloque del archivo correspondiente – Sin soporte: Páginas marcadas como Rellenar con ceros (RC) y se inicializa cuando hay un fallo de página. • Si la región es privada con preasignación de swap, se reserva espacio de swap • Si la región es la pila: – Se copian los argumentos iniciales del proceso en bloque(s) de swap Fundamentos de Computadores II 88 Sistemas Operativos
  • 89. Memoria virtual • Algoritmo de expulsión: – Si la región es privada se escribe página en swap. Si no hay preasignación de espacio swap, en la primera expulsión se reserva espacio. Posteriores fallos se sirven de ese bloque de swap – Si la región es compartida se escribe página en soporte, para que todos los procesos puedan ver las modificaciones. Todos los fallos se sirven del soporte • En la creación del mapa inicial (servicio exec en POSIX), se crean las regiones según sus características • Código: CA, Compartida, RX • Datos v. inicial: CA, Privada, RW • Datos sin v. inicial: RC, Privada, RW • Pila inicial: contenido inicial en swap Los huecos se marcan como páginas inválidas, tanto para el HW como para el S.O. Fundamentos de Computadores II 89 Sistemas Operativos
  • 90. Memoria virtual Sw ap T a b la d e p á g in a s A r c h iv o E je c u ta b le 1 ªp á g . C a b e c e ra C ó d ig o R X A B lo q u e T ( a r c h . ) B lo q u e T ........................... C ó d ig o 1 ªp á g . D a t .v . i. R W A B lo q u e U ( a r c h . ) B lo q u e U D a t o s c o n v a lo r in ic ia l ........................... 1 ªp á g . . . . . . . . . . . . . . . . . D a t .n o .v . i. R W A R e lle n a r c o n 0 ........................... 1 ªp á g . B lo q u e S ( s w a p ) B lo q u e S P ila RW A P ila Estado inicial de ejecución en un sistema sin preasignación de swap Fundamentos de Computadores II 90 Sistemas Operativos
  • 91. Memoria virtual b) Liberación de región • Acciones: – Actualizar tabla de regiones para eliminar región – Marcar como inválidas páginas asociadas – Si la región es privada, se libera el espacio de swap asociado • Cuando: – Solicitud explícita (p.ej. desproyección de región). – Finalización del proceso (exit en POSIX). – El servicio exec de POSIX libera el mapa actual del proceso antes de construir un nuevo mapa vinculado al ejecutable a “usar” Fundamentos de Computadores II 91 Sistemas Operativos
  • 92. Memoria virtual c) Cambio de tamaño • Acciones: – Si disminuye: • Se ajusta la tabla de regiones. • Se marcan páginas como inválidas. • Se libera espacio de swap – Si aumenta: • Se comprueba que no haya solapamiento. • Se fijan nuevas páginas como no residentes y con las mismas características que otras páginas de la región. • Si hay preasignación se reserva espacio en swap para las nuevas páginas. • Casos especiales: – Expansión del heap: Solicitada por programa mediante servicios del S.O. Se marcan las páginas correspondientes como RC, privadas, RW – Expansión de pila no proviene de una solicitud del proceso, sino de la propia evolución de la pila. Por esta razón esta operación es automática Fundamentos de Computadores II 92 Sistemas Operativos
  • 93. Memoria virtual d) Duplicado de una región • Acciones: – Se duplican las regiones privadas del padre y se comparten las no privadas • La copia de una región de un proceso en el mapa de memoria de otro proceso es una operación costosa, ya que también se debe copiar el contenido. • Problema: La ejecución de fork sería muy ineficiente. • Solución: copy-on-write (COW). Se comparte una página mientras no se modifique. Si un proceso la modifica, se crea una copia para él. Esta operación se denomina duplicado por demanda Fundamentos de Computadores II 93 Sistemas Operativos
  • 94. Memoria virtual • Implementación de COW – Se comparten las páginas de regiones duplicadas – Se marcan de sólo lectura y con bit de COW. – Al realizar la primera escritura se produce un fallo de proteccción y se genera una copia privada para el proceso que escribe. – Lo normal es que haya varios procesos con misma región duplicada, por lo que existe un contador de uso por página. – Cada vez que se crea copia privada se decrementa contador, ya que hay un proceso menos trabajando sobre la copia compartida. – Si llega a 1, se desactiva el bit COW, al no haber duplicados • FORK con COW. Se comparten todas las regiones. Las regiones privadas se marcan como COW en padre e hijo, el resultado de la optimización es que en vez de duplicar todo el espacio de memoria sólo se duplica la TP. Fundamentos de Computadores II 94 Sistemas Operativos
  • 95. 5. Archivos proyectados en memoria Fundamentos de Computadores II 95 Sistemas Operativos
  • 96. Archivos proyectados en memoria • ¿En qué consiste? – Recordemos que en un sistema con MV se hacen corresponder las entradas de la TP con bloques de un archivo ejecutable. – La técnica de la proyección permite usar esta misma idea, pero con cualquier archivo. – El S.O. permite que un programa solicite la correspondencia de una zona de su mapa de memoria con los bloques de un archivo cualquiera (ya sea completo o en parte). – En la solicitud el programa indicará el tipo de acceso que desea para las páginas asociadas al archivo. • Servicio: – La generalización de la técnica de memoria virtual permite ofrecer a los usuarios una forma alternativa de acceder a los archivos. Fundamentos de Computadores II 96 Sistemas Operativos
  • 97. Archivos proyectados en memoria • Proceso: Se rellenan las entradas de la TP correspondientes con : —Página no residente, —CA (cargar de archivo), —Privada/compartida y —Protección (indicada en la llamada). M a p a d e m e m o r ia De esta forma, C ó d ig o cuando el programa accede T a b la d e p á g in a s D a t o s c o n v a l o r i n i c ia l a una posición ........................... A r c h iv o de memoria 1 ªp á g . D a t o s s i n v a l o r in ic ia l R W A B lo q u e 0 ( a r c h . ) B lo q u e 0 asociada al A r c h iv o ........................... archivo proyectado,Ú lt i m a p á g . R W A B lo q u e N ( a r c h .) 10240 B lo q u e 1 A r c h iv o está accediendo ........................... B lo q u e 2 A r c h iv o P r o y e c t a d o realmente al archivo ............. B lo q u e N P ila Fundamentos de Computadores II 97 Sistemas Operativos
  • 98. Archivos proyectados en memoria • Ventajas: Se trata por tanto de una forma alternativa de acceso a archivos, frente a las llamadas read/write. De esta forma se producen: – Menos llamadas al sistema lo que se traduce en una notable mejora de los tiempos de acceso. – Se evitan copias intermedias de la información ya que el S.O. transfiere directamente la información entre la región de memoria y el archivo. – Se facilita la programación, ya que una vez proyectado se accede al archivo como si fuera una estructura de datos en memoria • Ejemplo: Típicamente las bibliotecas dinámicas se cargan usando este tipo de proyección: la zona de código se proyecta como compartida y la zona de datos con valor inicial se proyecta como privada Fundamentos de Computadores II 98 Sistemas Operativos
  • 99. 6. Servicios de gestión de memoria Fundamentos de Computadores II 99 Sistemas Operativos
  • 100. Servicios de gestión de memoria El gestor de memoria realiza funciones internas. Por eso, ofrece pocos servicios directos para las aplicaciones. Básicamente están relacionados con la proyección de archivos: – POSIX • Proyectar un archivo: mmap • Desproyectar un archivo: munmap – Win32 • Proyectar un archivo: 2 pasos: – Crear proyección: CreateFileMapping – Realizar proyección: MapViewOfFile • Desproyectar un archivo: UnmapViewOfFile Fundamentos de Computadores II 100 Sistemas Operativos
  • 101. Servicios de gestión de memoria void *mmap(void *direc, size_t lon, int prot, int indic, int desc, off_t desp); Establece la proyección entre el espacio de direcciones de un proceso y un archivo. – Devuelve la dirección de memoria donde se ha proyectado el archivo – direc: dirección donde proyectar. Generalmente se utiliza NULL, con lo que el S.O. elige la dirección por su cuenta – lon: especifica el número de bytes a proyectar – prot: el tipo de acceso, lectura (PROT_READ), escritura (PROT_WRITE) o ejecución (PROT_EXEC), o cualquier combinación de ellas – indic: propiedades sobre la región, compartida (MAP_SHARED, un proceso hijo compartirá la región con el padre), privada (MAP_PRIVATE, el hijo obtiene copia propia de la región), fija (MAP_FIXED, el archivo ha de proyectarse en una direc´ción específica) – desc: representa el descriptor de archivo a proyectar. – Desp: desplazamiento dentro del archivo a partir del cual se realiza la proyección. Fundamentos de Computadores II 101 Sistemas Operativos
  • 102. Servicios de gestión de memoria void munmap(void *direc, size_t lon); Desproyecta parte del espacio de direcciones de un proceso desde la dirección direc hasta direc+lon. Fundamentos de Computadores II 102 Sistemas Operativos

Notas del editor

  1. No confundir los aspectos lógico y físico. Desde el punto de vista físico, cada proceso dispone de su propio espacio de direcciones. Por tanto, la zona compartida, para cada proceso, no es más que un conjunto de direcciones y cualquier referencia a una posición en ella, desde otra posición en la misma zona, no supone mayor problema. Sin embargo, no hay que olvidar que para que esto funcione ha de poder volcarse los procesos en memoria. Cuando ambos estén cargados en memoria habrá una única zona de memoria principal encargada de albergar la memoria compartida por ambos procesos. Es decir, en una posición cualquiera de esta memoria principal sólo podrá haber un valor. Si se pone de parte del proceso1, en esta posición se escribe la dirección traducida correspondiente al proceso1, es decir 11000. Sin embargo, si se pone de parte del proceso2, la posición contendrá la dirección traducida teniendo en cuenta el espacio físico del proceso2. En cualquier caso esto significa que se rompe el mecanismo de compartición, porque la memoria física no puede mantener una representación coherente del contenido de ambos espacios lógicos a la vez.
  2. Cuando llega una nueva página se inserta en el comienzo de la lista, y luego se avanza el puntero de la lista a la siguiente página. Cuando se desea determinar una página para reemplazar, se examina el bit de referencia de la página apuntada por el puntero. Si está activo, se desactiva y se avanza el puntero hasta la siguiente página. Así se continua hasta alcanzar una página en que no esté activado este bit. Esta forma de trabajo imita el comportamiento de un reloj en el que el puntero que recorre la lista se comporta como su aguja. Por eso, a esta estrategia también se le denomina algoritmo del reloj
  3. El número N es el parámetro crítico en el funcionamiento de esta estrategia. Se denomina ventana del conjunto de trabajo . Si N es muy grande, la ventana puede englobar diferentes fases de ejecución del proceso, suponiendo en este caso, una estimación excesiva de las necesidades del proceso. Si es demasiado pequeña, la ventana podría no englobar la situación actual del proceso, por lo que se producirían demasiados fallos de página
  4. Esta estrategia supone la existencia de cotas inferior y superior de la frecuencia de fallos de página de los procesos