PDF de programación - Sistemas operativos II

Imágen de pdf Sistemas operativos II

Sistemas operativos IIgráfica de visualizaciones

Publicado el 6 de Julio del 2017
597 visualizaciones desde el 6 de Julio del 2017
4,2 MB
53 paginas
Creado hace 15a (12/01/2009)
Sistemas operativos II

Memoria en UNIX

Introducción
Espacio de direcciones de los procesos
Organización de la memoria física
Robo de páginas e intercambio

Memoria en UNIX

Introducción
Espacio de direcciones de los procesos
Organización de la memoria física
Robo de páginas e intercambio

Memoria en UNIX

Introducción
Espacio de direcciones de los procesos
Organización de la memoria física
Robo de páginas e intercambio

Generalidades

I Los procesos se ejecutan en un espacio de direcciones virtual
I Usualmente la memoria física está dividida en trozos de

tamaño fijo denominados marcos o páginas físicas

I Tamaño de página depende del procesador. En sistemas

actuales típicamente 4Kbytes

I Lo procesos trabajan con direcciones virtuales compuestas por

número de página y desplazamiento dentro de la página.
Ejemplo: en un sistema con páginas de 4K la dirección
0x800c03a9, corespondería a desplazamiento 0x3a9 en la
página 0x800c0

I La traslación de número de página y desplazamiento a número
de página física (marco) y desplazamiento se hace en tiempo
de ejecución con ayuda del hardware

Esquema del direccionamiento en la arquitectura i386

Esquema del direccionamiento en la arquitectura i386

Generalidades

I Si el sistema soporta memoria virtual

I un proceso no tiene que estar en memoria totalmente para
poderse ejecutar: la tabla de páginas ha de tener un bit que
indica si está o no en memoria.

I El S.O. guarda información de dónde en el almacenamiento
secundario está cada página no residente en memoria física

I Cuando se crea un proceso se necesita memoria para las

estructuras proc y u area

I el código y los datos inicializados residen en el fichero de disco
I la pila y los datos sin inicializar se ajustan durante la ejecución
I solo se asigna memoria para aquellas páginas que son

referenciadas: paginación bajo demanda pura

Generalidades

I Las páginas de memoria no usadas se sacan de la memoria:

robo de páginas.

I En unix el proceso que realiza esta tarea es pageout,

pagedaemon o paged

I Si se produce hiperpaginación (los procesos tienen menos
páginas que su working set en memoria), se intercambian
procesos enteros a disco.

I En unix esto lo hace el swapper (sched)

Memoria en UNIX

Introducción
Espacio de direcciones de los procesos
Organización de la memoria física
Robo de páginas e intercambio

Memoria en unix: regiones

I En su acepción mas simple, un proceso consta de tres

regiones: código, datos y pila.

I código (text) Contiene el código de las funciones del

programa. Es de solo lectura

I datos (data + bss) Contiene los datos (variables globales,

tanto inicializadas como sin inicialización explicita) del
proceso. El montículo (heap) suele ser parte de esta región

I pila (stack). Usado para pasar los parámetros a las funciones y

por éstas para sus variables locales

memoria en unix: regiones

I Cada proceso tiene una tabla de regiones del proceso con
referencias a las entradas en la tabla de regiones del kernel
que constituyen el proceso

I cada entrada de la tabla de regiones que contiene

I donde (dirección virtual) comienza y termina la región
I permisos de la región (solo lectura, lectura-escritura, lectura

ejecución . . . )

I puntero a entrada en la tabla de regiones del kernel

memoria en unix: regiones

I El kernel contiene una tabla de regiones del kernel
I En la tabla de regiones del kernel hay un puntero a los mapas
de traducción de direcciones virtuales a reales (dependientes
de la implementación)

I Cada entrada en la tabla de regiones del kernel contiene
I puntero al inodo cuyos contenidos se cargan en esa región
I tipo de región (código, datos, pila, memoria compartida,

mmaped file)

I tamaño de la región
I localización de la región en memoria física
I contador de referencias

operaciones sobre regiones

I las operaciones sobre regiones que hace el kernel son
I asignar una región (fork(), exec(), shmget())
I encadenar una región a un proceso (fork(), exec(),

shmat())

I cambiar el tamaño de una región (brk(), sbrk(), (malloc()))
I cargar una región (exec())
I desasignar una región (exec(), exit(), shmctl(IPC RMID, ))
I desencadenar una región del espacio de direcciones de

un proceso (exec(), exit(), shmdt())

I duplicar una región (fork())

memoria en System V R4

I El espacio de direcciones de un proceso se almacena como una

lista enlazada de sus segmentos (código, datos, pila . . . )

I en la estructuta proc hay una referencia a una estructura as

(address space)

I la estructura as contiene la referencia a la primera de las

estructuras de la lista que describe los segmentos que
constituyen el espacio de direcciones

I cada segmento esta descrito por una estructura seg que

contiene una referencia a una estructura segvn data.

Mapa de memoria en solaris

Salida del comando pmap

I en solaris

08046000
08050000
0806A000
0806B000
D16D0000
D16E0000
D17A9000
D17AF000
D17C0000
D17CA000
D17FB000
D17FC000

I en linux

8K rwx--

[ stack ]

44K r-x-- /home/antonio/so2tex/Practicas/a.out
4K rwx-- /home/antonio/so2tex/Practicas/a.out
8K rwx--
4K rwx--

[ heap ]
[ anon ]

740K r-x-- /lib/libc.so.1
24K rw--- /lib/libc.so.1
8K rw--- /lib/libc.so.1

24K rwx--

[ anon ]

132K r-x-- /lib/ld.so.1
4K rwx-- /lib/ld.so.1
8K rwx-- /lib/ld.so.1

08048000
08051000
08052000
b7e7c000
b7e7d000
b7fa4000
b7fa9000
b7fab000
b7fbb000
b7fbf000
b7fc0000
b7fd5000
bf8a0000

36K r-x--
4K rw---
4K rw---
4K rw---
1180K r-x--
20K r----
8K rw---
12K rw---
16K rw---
4K r-x--
84K r-x--
8K rw---
88K rw---

/home/antonio/so2tex/Practicas/a.out
/home/antonio/so2tex/Practicas/a.out

[ anon ]
[ anon ]

/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so

[ anon ]
[ anon ]
[ anon ]

/lib/ld-2.3.6.so
/lib/ld-2.3.6.so

[ stack ]

tras asignarse 100M de memoria . . .

I en solaris

08046000
08050000
0806A000
0806B000
D16D0000
D16E0000
D17A9000
D17AF000
D17C0000
D17CA000
D17FB000
D17FC000

I en linux

8K rwx--
44K r-x--
4K rwx--
97672K rwx--
4K rwx--
740K r-x--
24K rw---
8K rw---
24K rwx--
132K r-x--
4K rwx--
8K rwx--

08048000
08051000
08052000
b1f1d000
b7e7d000
b7fa4000
b7fa9000
b7fab000
b7fbb000
b7fbf000
b7fc0000
b7fd5000
bf8a0000

36K r-x--
4K rw---
136K rw---
97664K rw---
1180K r-x--
20K r----
8K rw---
12K rw---
16K rw---
4K r-x--
84K r-x--
8K rw---
88K rw---

[ stack ]

/home/antonio/so2tex/Practicas/a.out
/home/antonio/so2tex/Practicas/a.out

[ heap ]
[ anon ]

/lib/libc.so.1
/lib/libc.so.1
/lib/libc.so.1

[ anon ]

/lib/ld.so.1
/lib/ld.so.1
/lib/ld.so.1

/home/antonio/so2tex/Practicas/a.out
/home/antonio/so2tex/Practicas/a.out

[ anon ]
[ anon ]

/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so

[ anon ]
[ anon ]
[ anon ]

/lib/ld-2.3.6.so
/lib/ld-2.3.6.so

[ stack ]

tras crear una zona de memoria compartida . . .

I en solaris

08024000
08050000
0806A000
0806B000
D1693000
D16D0000
D16E0000
D17A9000
D17AF000
D17C0000
D17CA000
D17FB000
D17FC000

I en linux

144K rwx--

[ stack ]

44K r-x-- /home/antonio/so2tex/Practicas/a.out
4K rwx-- /home/antonio/so2tex/Practicas/a.out

97672K rwx--
236K rwxs-
4K rwx--

[ heap ]
[ shmid=0xe ]
[ anon ]

740K r-x-- /lib/libc.so.1
24K rw--- /lib/libc.so.1
8K rw--- /lib/libc.so.1

24K rwx--

[ anon ]

132K r-x-- /lib/ld.so.1
4K rwx-- /lib/ld.so.1
8K rwx-- /lib/ld.so.1

08048000
08051000
08052000
b1ee2000
b1f1d000
b7e7d000
b7fa4000
b7fa9000
b7fab000
b7fbb000
b7fbf000
b7fc0000
b7fd5000
bf891000

36K r-x--
4K rw---
136K rw---
236K rw-s-
97664K rw---
1180K r-x--
20K r----
8K rw---
12K rw---
16K rw---
4K r-x--
84K r-x--
8K rw---
148K rw---

/home/antonio/so2tex/Practicas/a.out
/home/antonio/so2tex/Practicas/a.out

[ anon ]
[ shmid=0x3c800f ]
[ anon ]

/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so

[ anon ]
[ anon ]
[ anon ]

/lib/ld-2.3.6.so
/lib/ld-2.3.6.so

[ stack ]

tras mapear un fichero de 152739840 bytes . . .

I en solaris

08024000
08050000
0806A000
0806B000
C8400000
D1693000
D16D0000
D16E0000
D17A9000
D17AF000
D17C0000
D17CA000
D17FB000
D17FC000

I en linux

144K rwx--

[ stack ]

44K r-x-- /home/antonio/so2tex/Practicas/a.out
4K rwx-- /home/antonio/so2tex/Practicas/a.out

97672K rwx--

[ heap ]

149160K r---- dev:102,7 ino:29125

236K rwxs-
4K rwx--

[ shmid=0xe ]
[ anon ]

740K r-x-- /lib/libc.so.1
24K rw--- /lib/libc.so.1
8K rw--- /lib/libc.so.1

24K rwx--

[ anon ]

132K r-x-- /lib/ld.so.1
4K rwx-- /lib/ld.so.1
8K rwx-- /lib/ld.so.1

36K r-x--
08048000
4K rw---
08051000
08052000
136K rw---
a8d38000 149160K r----
236K rw-s-
b1ee2000
97664K rw---
b1f1d000
1180K r-x--
b7e7d000
20K r----
b7fa4000
8K rw---
b7fa9000
12K rw---
b7fab000
b7fbb000
16K rw---
4K r-x--
b7fbf000
84K r-x--
b7fc0000
8K rw---
b7fd5000
bf891000
148K rw---

/home/antonio/so2tex/Practicas/a.out
/home/antonio/so2tex/Practicas/a.out

[ anon ]

/home/antonio/so2tex/Practicas/fichero.tar

[ shmid=0x3c800f ]
[ anon ]

/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so
/lib/tls/i686/cmov/libc-2.3.6.so

[ anon ]
[ anon ]
[ anon ]

/lib/ld-2.3.6.so
/lib/ld-2.3.6.so

[ stack ]

tras crear otra zona de memoria compartida . . .

I en solaris

08024000
08050000
0806A000
0806B000
C6800000
C8400000
D1693000
D16D0000
D16E0000
D17A9000
D17AF000
D17C0000
D17CA000
D17FB000
D17FC000

I en linux

144K rwx--

[ stack ]

44K r-x-- /home/antonio/so2tex/Practicas/a.out
4K rwx-- /home/antonio/so2tex/Practicas/a.out

97672K rwx--
27920K rwxs-

[ heap ]
[ shmid=0xf ]

149160K r---- dev:102,7 ino:29125

236K rwxs-
4K rwx--

[ shmid=0xe ]
[ anon ]

740K r-x-- /lib/libc.so.1
24K rw--- /lib/libc.so.1
8K rw--- /lib/libc.so.1

24K rwx--

[ anon ]

132K r-x-- /lib/ld.so.1
4K rwx-- /lib/ld.so.1
8K rwx-- /lib/ld.so.1

36K r-x--
08048000
4K rw---
08051000
136K rw---
08052000
a71f4000
27920K rw-s-
a8d38000 149160K r----
236K rw-s-
b1ee2000
97664K rw---
b1f1d000
1180K r-x--
b
  • Links de descarga
http://lwp-l.com/pdf4960

Comentarios de: Sistemas operativos II (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad