SO2/SOA
Espacio 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
2017-2018 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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
@dcba
Espacio de memoria lógica
(1 por proceso) Espacio de memoria física
( Total de memoria disponible )
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
@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 el espacio lógico de un proceso y su correspondiente espacio físico aparece tal y como se indica en la siguiente figura, representa el contenido de la tabla de páginas.
Ejemplo de traducción So
po
rte
HW
: M
MU
0x100000 page (4KB)
TP
Código
Datos
Pila
espacio físico
0x100000
Datos
espacio lógico
Código
Pila
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
• 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
• 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
SO2/SOA
• [1] Understanding Linux Kernel 3rd ed. Chapter 2 Memory addressing.
• [2] Intel® 64 and IA-32 architectures software developer's manual volume 3A: System programming guide. Chapter 3 and 4.
References
Top Related