Espacio de direcciones de un proceso - .–Direcciones de memoria física asociadas a las direcciones

  • View
    214

  • Download
    0

Embed Size (px)

Text of Espacio de direcciones de un proceso - .–Direcciones de memoria física asociadas a las...

  • SO2/SOA

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

    Facultat d'Informtica de Barcelona (FIB)

    Universitat Politcnica de Catalunya (UPC) BarcelonaTech 2014-2015 QP

  • SO2/SOA

    Generacin de ejecutables y carga

    Espacios de direcciones

    Espacio lgico de un proceso

    Soporte HW: MMU

    Gestin de memoria en ZeOS

    Indice

  • SO2/SOA

    Evolucin de los programas Lenguaje alto nivel Lenguaje mquina Ejecucin

    Fase I i. Compilacin: Traduccin de lenguaje alto nivel a

    cdigo objeto ii. Montaje: Creacin de un fichero ejecutable a partir

    de 1 o varios ficheros objeto y libreras

    Fase II i. Carga/Ejecucin: Carga un fichero ejecutable en

    memoria fsica y da control a la primera instruccin del programa

    Generacin 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 libreras 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

    /* librera */

    ...

    /* 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 adems una cabecera dnde indica qu es cdigo, 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 cdigo y sus datos

    Aunque puede cargar slo 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

    Cdigo

    Pila

    Datos inicializados

    Heap (datos)

    .exe

  • SO2/SOA

    Espacio de direcciones lgico del procesador Rango de direcciones que puede acceder un procesador

    Depende del bus de @

    Espacio de direcciones lgico del proceso Espacio que ocupa un proceso en ejecucin

    Las direcciones que lanza un procesador cuando quiere acceder a datos/cdigo/pila del proceso

    RELATIVAS

    Espacio de direcciones fsico del proceso Direcciones de memoria fsica asociadas a las direcciones

    lgicas

    Espacios de direcciones

  • SO2/SOA

    Regiones

    Cdigo

    Datos (inicializados o no)

    Heap: memoria dinmica

    Pila

    Espacio lgico de un proceso Es

    pac

    io l

    gico

    de

    un

    pro

    ceso

    Cdigo

    Datos

    Pila

    Memoria

  • SO2/SOA

    Las direcciones que genera un procesador cuando est ejecutando un proceso son lgicas Relativas a una direccin 0, igual para todos los

    procesos Pero los datos se guardan en posiciones fsicas de

    memoria

    Hace falta traducir de direcciones lgicas a fsicas MMU: memory management unit. El hardware

    necesario para producir esta traduccin

    Puede haber ms cosas Swap o memoria virtual

    Espacio lgico de un proceso Es

    pac

    io l

    gico

    de

    un

    pro

    ceso

  • SO2/SOA

    MMU: memory management unit

    Unidad encargada de traducir las @lgicas a @fsicas

    Soporte HW: MMU So

    po

    rte

    HW

    : M

    MU

    @1234

    MMU @1234

    @abcd

    @abcd

    @dcba

    Espacio de memoria lgica

    (1 por proceso) Espacio de memoria fsica

    ( Total de memoria disponible )

  • SO2/SOA

    Intel pentium: MMU usa segmentacin paginada

    Espacio lgico del proceso dividido en segmentos

    Segmentos divididos en pginas Tamao de segmento mltiplo del tamao de pgina

    Unidad de trabajo del SO es la pgina

    Segmentacin paginada So

    po

    rte

    HW

    : M

    MU

    CPU unidad de

    segmentacin unidad de paginacin

    memoria fsica

    @lgica @lineal @fsica

    MMU

  • SO2/SOA

    Tabla de segmentos

    Para cada segmento: @ base y tamao

    Una tabla por proceso

    Segmentacin So

    po

    rte

    HW

    : M

    MU

    CPU @lgica

    d

    s

    lmite base

    <

    no

    Excepcin: @ ilegal

    si + @lineal

    Tabla de segmentos

    MMU

    s

    registro de segmento

  • SO2/SOA

    Tabla de pginas Para mantener informacin a nivel de pgina: validez, permisos de

    acceso, marco asociado, etc. Una entrada para cada pgina Una tabla por proceso

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

    Procesadores actuales tambin disponen de TLB (Translation Lookaside Buffer) Memoria asociativa (cache) de acceso ms rpido en la que se

    almacena la informacin de traduccin para las pginas activas Hay que actualizar/invalidar la TLB cuando hay un cambio en la MMU

    Gestin HW del TLB/Gestin Software (SO) del TLB Muy dependiente de la arquitectura

    Paginacin So

    po

    rte

    HW

    : M

    MU

  • SO2/SOA

    Paginacin So

    po

    rte

    HW

    : M

    MU

    CPU

    MMU

    Memoria

    #pgina #marco

    TLB

    @lgica p d

    @fsica f d

    acierto de TLB

    f

    Tabla de pginas

    fallo de TLB

    p

    Excepcin: @ ilegal

  • SO2/SOA

    Dado un sistema de memoria donde la tp del proceso y el espacio fsico del proceso aparece tal y como se indica en la siguiente figura, representa el espacio lgico del proceso, indicando direccin inicial de cada regin y nombre de la regin.

    Ejemplo de traduccin So

    po

    rte

    HW

    : M

    MU

    0x100

    0x0

    0x102

    0x0

    0x101

    Cdigo

    Datos

    Pila

    0x100000 0x100

    0x102

    0x104

    page (4KB)

    TP espacio fsico

    espacio lgico

  • SO2/SOA

    Paginacin

    Espacio necesario para las tablas de pginas?

    Tabla de pginas multinivel

    Ahorrar memoria necesaria para las tablas

    Slo traduccin para pginas 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 cdigo base todos los procesos tienen: Mismo espacio lgico de direcciones Misma cantidad de memoria fsica

    Todos los procesos comparten memoria fsica del cdigo

    No se explota la segmentacin Slo se utiliza para implementar proteccin Todos los segmentos: misma @base y mismo tamao

    Gestin de memoria en ZeOS G

    est

    in

    de

    me

    mo

    ria

    en

    Ze

    OS

  • SO2/SOA

    User mode

    Kernel mode

    ZeOS: espacio lgico de direcciones G

    est

    in

    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 fsica G

    est

    in

    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 fsica

    User Code

    User Data+Stack

    Espacio de @ de P5

    PAG_LOG_INIT_CODE_P0

    PAG_LOG_INIT_DATA_P0

    Tabla de pginas 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 pgina: entrada TP En

    trad

    a TP

    par

    a lin

    ux

    en

    Pe

    nti

    um