View
214
Download
0
Embed Size (px)
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