tema8 1transporpagina
Sistemas Operativos:
Programación de Sistemas
Oscar Déniz Suárez
Alexis Quesada Arencibia
Francisco J. Santana Pérez
Curso 2006-07
Introducción
programa fuente
compilador
compilación
módulo objeto
otros objetos
y bibliotecas
bibliotecas
del sistema
bibliotecas
dinámicas
Fichero ejecutable
(principal)
enlazador
(linker)
cabecera
programa ejecutable
códigocargador
carga
programa y datos
binarios en memoria
HARDWARE
ejecución
datos
inicializados
Introducción
A cada proceso se le asocia un espacio de
direcciones
Este espacio incluye:
el código del proceso
los datos del proceso
• variables inicializadas
• variables no inicializadas (bss)
el código y los datos de bibliotecas compartidas
utilizadas por el proceso
la pila usada porel proceso
Introducción
kernel
Direcciones altas
c0000000
parámetros y entorno
pila
datos no inici.(bss)
datos inicializados
Direcciones bajas
código
exec los pone a 0
Leídos de
disco por exec
Introducción
Es importante entender la diferencia entre
dirección física y dirección lógica (virtual)
Los procesos trabajan con espacio de
direcciones virtuales
Algún módulo softwarey/o hardware se
encarga de traducir de direcciones virtuales a
físicas
Zonas de memoria contiguas en espacio virtual
no tienen porqué estar físicamente contiguas
Introducción
Dirección física: la que llega al chip de
memoria
Dirección lógica o virtual: la generada por la
CPU
El dispositivo que traduce direcciones virtuales
a físicas se llama unidad de manejo de
memoria (MMU, eninglés)
El espacio de direcciones lógicas y el espacio
de direcciones físicas no tienen por qué
coincidir
Ejemplo: registro base
Introducción
Fichero fuente
(principal.cc)
#include
main()
{
int cont;
...
cont++
...
}
Fichero ejecutable
(principal)
cabecera
Memoria lógica del
proceso
Memoria física
código
MR
código
datos
inicializados
datos
inicializados
datos sin
inicializarProceso
pila
Espacio de direcciones
simbólicas
Espacio de direcciones lógicas/físicas
Introducción
Dirección
lógica o
virtual
CPU
Memoria
Disco
Controlador
de
memoria
Controlador
de
disco
CPU
dir. lógica
1234
MMU
+
80000
registro base
MMU
dir. física
81234
memoria
Dirección física
Introducción
En sistemas multiusario como Linux, a veces
conviene no mantener todo el espaciode
direcciones de un proceso en memoria, sobre
todo cuando está inactivo
Así, otros procesos puede usar ese espacio
Mediante el intercambio o swapping se
pueden llevar zonas de memoria a memoria
secundaria y viceversa
Introducción
Para conocer las direcciones de memoria
donde se encuentran los segmentos de
código y de datos de un proceso hay
disponibles los siguientes símbolos:
extern int_end;
extern int _etext;
extern int _edata;
Introducción
parámetros y entorno
pila
program
break
datos no inici.(bss)
datos inicializados
código
_end
_data
_etext
El sistema de ficheros proc
Pseudo-Sistema de ficheros montado
automáticamente en Linux que almacena
información del estado del sistema
El sistema de ficheros proc no está asociado a
un dispositivo: es una “ventana” alkernel
Es una forma conveniente de consultar y (en
algunos casos) modificar cosas en el sistema
El sistema de ficheros proc
El fichero /proc/$pid/maps contiene información sobre los segmentos de
memoria de un proceso
Contiene rangos de direcciones, permisos, etc., no solo de su código sino
también de las librerías compartidas a las que tiene acceso (p.ej. libc)
address
perms offset devinode
pathname
08048000-08056000 r-xp 00000000 03:0c 64593
/usr/sbin/gpm
08056000-08058000 rw-p 0000d000 03:0c 64593
/usr/sbin/gpm
08058000-0805b000 rwxp 00000000 00:00 0
40000000-40013000 r-xp 00000000 03:0c 4165
/lib/ld-2.2.4.so
40013000-40015000 rw-p 00012000 03:0c 4165
/lib/ld-2.2.4.so
4001f000-40135000 r-xp 00000000 03:0c 45494
/lib/libc-2.2.4.so
40135000-4013e000 rw-p 00115000 03:0c 45494...
Regístrate para leer el documento completo.