21
SO2/SOA Espacio de direcciones de un proceso Yolanda Becerra Fontal Juan José Costa Prats Facultat d'Informàtica de Barcelona (FIB) Universitat Politècnica de Catalunya (UPC) BarcelonaTech 2014-2015 QP

Espacio de direcciones de un procesoSO2/SOA • Tabla de páginas –Para mantener información a nivel de página: validez, permisos de acceso, marco asociado, etc…. –Una entrada

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • SO2/SOA

    Espacio de direcciones de un proceso Yolanda Becerra Fontal Juan José Costa Prats

    Facultat d'Informàtica de Barcelona (FIB)

    Universitat Politècnica de Catalunya (UPC) BarcelonaTech 2014-2015 QP

  • SO2/SOA

    • Generación de ejecutables y carga

    • Espacios de direcciones

    • Espacio lógico de un proceso

    • Soporte HW: MMU

    • Gestión de memoria en ZeOS

    Indice

  • SO2/SOA

    • Evolución de los programas – Lenguaje alto nivel Lenguaje máquina Ejecución

    • Fase I i. Compilación: Traducción de lenguaje alto nivel a

    código objeto ii. Montaje: Creación de un fichero ejecutable a partir

    de 1 o varios ficheros objeto y librerías

    • Fase II i. Carga/Ejecución: Carga un fichero ejecutable en

    memoria física y da control a la primera instrucción del programa

    Generación de ejecutables y carga G

    en

    era

    ció

    n d

    e e

    jecu

    tab

    les

    y ca

    rga

  • SO2/SOA

    Etapas G

    en

    era

    ció

    n d

    e e

    jecu

    tab

    les

    y ca

    rga

    ensamblar

    Ficheros fuente Ficheros objeto y librerías Fichero ejecutable

    FASE I.i

    .asm

    .c

    .o

    .a

    .o

    .exe editar

    FASE I.ii

    compilar mo

    nta

    r

  • SO2/SOA

    Fase de montaje G

    en

    era

    ció

    n d

    e e

    jecu

    tab

    les

    y ca

    rga

    0: call _f1

    1: add ax,#2,bx

    2: call _write

    .....

    50: jump 10

    0: /* f1*/

    1: add ax, #2,bx

    ...

    40: jump 10

    ...

    70: ret

    /* librería */

    ...

    /* write */

    100: add ax, #2,bx

    ...

    140: ret

    f1.o

    f2.o

    bib.a

    0: call 51

    1: add ax,#2,bx

    2: call 122

    ...

    50: jump 10

    51: add ax,#2,bx

    ...

    91: jump 61

    ...

    121: ret

    122: add ax,#2,bx

    ....

    162: ret

    +0

    +51

    +51+71

    MONTAJE

    Fichero ejecutable

    -100

  • SO2/SOA

    • El fichero ejecutable contiene además una cabecera dónde indica qué es código, datos inicializados, memoria necesaria para pila y datos no inicializados

    Compilar - Montar G

    en

    era

    ció

    n d

    e e

    jecu

    tab

    les

    y ca

    rga

  • SO2/SOA

    • El programa cargador lee un ejecutable y:

    – Carga en memoria todo su código y sus datos

    • Aunque puede cargar sólo una parte

    – Reserva espacio en memoria para pila y datos no inicializados.

    Cargador G

    en

    era

    ció

    n d

    e e

    jecu

    tab

    les

    y ca

    rga

    cargador

    Código

    Pila

    Datos inicializados

    Heap (datos)

    .exe

  • SO2/SOA

    • Espacio de direcciones lógico del procesador – Rango de direcciones que puede acceder un procesador

    – Depende del bus de @

    • Espacio de direcciones lógico del proceso – Espacio que ocupa un proceso en ejecución

    – Las direcciones que lanza un procesador cuando quiere acceder a datos/código/pila del proceso

    – RELATIVAS

    • Espacio de direcciones físico del proceso – Direcciones de memoria física asociadas a las direcciones

    lógicas

    Espacios de direcciones

  • SO2/SOA

    • Regiones

    – Código

    – Datos (inicializados o no)

    – Heap: memoria dinámica

    – Pila

    Espacio lógico de un proceso Es

    pac

    io ló

    gico

    de

    un

    pro

    ceso

    Código

    Datos

    Pila

    Memoria

  • SO2/SOA

    • Las direcciones que genera un procesador cuando está ejecutando un proceso son lógicas – Relativas a una dirección 0, igual para todos los

    procesos – Pero los datos se guardan en posiciones físicas de

    memoria

    • Hace falta traducir de direcciones lógicas a físicas – MMU: memory management unit. El hardware

    necesario para producir esta traducción

    • Puede haber más cosas – Swap o memoria virtual

    Espacio lógico de un proceso Es

    pac

    io ló

    gico

    de

    un

    pro

    ceso

  • SO2/SOA

    • MMU: memory management unit

    – Unidad encargada de traducir las @lógicas a @físicas

    Soporte HW: MMU So

    po

    rte

    HW

    : M

    MU

    @1234

    MMU @1234

    @abcd

    @abcd

    @dcba

    Espacio de memoria lógica

    (1 por proceso) Espacio de memoria física

    ( Total de memoria disponible )

  • SO2/SOA

    • Intel pentium: MMU usa segmentación paginada

    – Espacio lógico del proceso dividido en segmentos

    – Segmentos divididos en páginas • Tamaño de segmento múltiplo del tamaño de página

    • Unidad de trabajo del SO es la página

    Segmentación paginada So

    po

    rte

    HW

    : M

    MU

    CPU unidad de

    segmentación unidad de paginación

    memoria física

    @lógica @lineal @física

    MMU

  • SO2/SOA

    • Tabla de segmentos

    – Para cada segmento: @ base y tamaño

    – Una tabla por proceso

    Segmentación So

    po

    rte

    HW

    : M

    MU

    CPU @lógica

    d

    s

    límite base

    <

    no

    Excepción: @ ilegal

    si + @lineal

    Tabla de segmentos

    MMU

    s

    registro de segmento

  • SO2/SOA

    • Tabla de páginas – Para mantener información a nivel de página: validez, permisos de

    acceso, marco asociado, etc…. – Una entrada para cada página – Una tabla por proceso

    • Suele guardarse en memoria y SO debe conocer la @ base de la tabla de cada proceso (por ejemplo, guardándola en el PCB)

    • Procesadores actuales también disponen de TLB (Translation Lookaside Buffer) – Memoria asociativa (cache) de acceso más rápido en la que se

    almacena la información de traducción para las páginas activas – Hay que actualizar/invalidar la TLB cuando hay un cambio en la MMU

    • Gestión HW del TLB/Gestión Software (SO) del TLB • Muy dependiente de la arquitectura

    Paginación So

    po

    rte

    HW

    : M

    MU

  • SO2/SOA

    Paginación So

    po

    rte

    HW

    : M

    MU

    CPU

    MMU

    Memoria

    #página #marco

    TLB

    @lógica p d

    @física f d

    acierto de TLB

    f

    Tabla de páginas

    fallo de TLB

    p

    Excepción: @ ilegal

  • SO2/SOA

    • Dado un sistema de memoria donde la tp del proceso y el espacio físico del proceso aparece tal y como se indica en la siguiente figura, representa el espacio lógico del proceso, indicando dirección inicial de cada región y nombre de la región.

    Ejemplo de traducción So

    po

    rte

    HW

    : M

    MU

    0x100

    0x0

    0x102

    0x0

    0x101

    Código

    Datos

    Pila

    0x100000 0x100

    0x102

    0x104

    page (4KB)

    TP espacio físico

    espacio lógico

  • SO2/SOA

    Paginación

    • Espacio necesario para las tablas de páginas?

    • Tabla de páginas multinivel

    – Ahorrar memoria necesaria para las tablas

    – Sólo traducción para páginas en uso

    • Intel Pentium: 2 niveles

    Sop

    ort

    e H

    W:

    MM

    U

  • SO2/SOA

    • No hay cargador – Ejecutable de usuario se carga en tiempo de boot

    • En el código base todos los procesos tienen: – Mismo espacio lógico de direcciones – Misma cantidad de memoria física

    • Todos los procesos comparten memoria física del código

    • No se explota la segmentación – Sólo se utiliza para implementar protección – Todos los segmentos: misma @base y mismo tamaño

    Gestión de memoria en ZeOS G

    est

    ión

    de

    me

    mo

    ria

    en

    Ze

    OS

  • SO2/SOA

    – User mode

    – Kernel mode

    ZeOS: espacio lógico de direcciones G

    est

    ión

    de

    me

    mo

    ria

    en

    Ze

    OS

    User Code

    User Data+Stack

    Kernel Data +Kernel Stacks

    Kernel Code

    KERNEL_START

    User Code

    L_USER_START

    DATA_START=L_USER_START+(NUM_PAG_CODE*PAGE_SIZE)

    User Data+Stack DATA_END=DATA_START+(NUM_PAG_DATA*PAGE_SIZE)

    Incluye task table

    L_USER_START

    DATA_START=L_USER_START+(NUM_PAG_CODE*PAGE_SIZE)

    DATA_END=DATA_START+(NUM_PAG_DATA*PAGE_SIZE)

  • SO2/SOA

    ZeOS: memoria física G

    est

    ión

    de

    me

    mo

    ria

    en

    Ze

    OS User Code

    P0:User Data+Stack

    Kernel Data +Kernel Stacks

    Kernel Code

    PH_USER_START

    P1:User Data+Stack

    P5:User Data+Stack

    ...

    ...

    memoria física

    User Code

    User Data+Stack

    Espacio de @ de P5 …

    PAG_LOG_INIT_CODE_P0

    PAG_LOG_INIT_DATA_P0

    Tabla de páginas cr3

    directory

  • SO2/SOA

    typedef union { unsigned int entry; struct { unsigned int present : 1; presente unsigned int rw : 1; permisos unsigned int user : 1; user/supervisor unsigned int write_t : 1; write through/write_back (linux write back) unsigned int cache_d : 1; caching is enable (linux sets this) unsigned int accessed : 1; (reset by OS) unsigned int dirty : 1; (set by OS) unsigned int ps_pat : 1; (page_size: normal or big) unsigned int global : 1; (if set, tlb is not flushed after modifying CR3) unsigned int avail : 3; (not in use) unsigned int pbase_addr : 20; } bits; } page_table_entry;

    Atributos por página: entrada TP En

    trad

    a TP

    par

    a lin

    ux

    en

    Pe

    nti

    um