Problemas Tema 2: Gestión de Memoria

Anuncio
Problemas Tema 2: Gestión de Memoria
Problema 2.1.
Suposem un 'hardware' que no proporcioni cap mecanisme de traducció d'adreces. Les adreces físiques són equivalents a les adreces lògiques del processador. El sistema operatiu i els programes
han de compartir un espai únic, lògic i físic. Un cop carregats, les adreces de l'espai lògic dels processos no poden ser de 0 a N per a tots ells perquè hi hauria solapament. Hauran d'anar de P(i) a
Q(i), on 'i' indica el procés. El seu espai físic també serà de P(i) a Q(i).
1. Quin tipus de reubicació haurà de fer el carregador per a que els programes es
puguin executar correctament ?
2. Com es transforma l'espai lògic del programa a l'espai lògic del procés?
Problema 2.2.
Quines característiques hauria de tenir un sistema de gestió de memòria per permetre la càrrega
d’un nou procés amb un espai lògic de procés de mida 17K a l’espai físic indicat (les porcions que
tenen la mida indicada a l’esquerra són lliures). I si la mida de l’espai lògic de procés del nou procés
fos de 25K?.
EF
10K
EL1
15K
SO
10K
EL2
20K
5K
5K
Problema 2.3.
L’espai lògic de processador és linial i té una mida de 32 Mbytes; l’espai lògic de procés ocupa 14
Mbytes de codi, 4 Mbytes de dades i 6 Mbytes de pila.
Considereu que el sistema operatiu en qüestió proporciona les següents crides al sistema relacionades amb la gestió de memòria:
• adreça_inicial=assignar_memòria(mida)→ Demanem una certa quantitat de memòria
consecutiva, i ens contesta amb l’adreça inicial de memòria on ens ha assignat el bloc.
• ok=assignar_memòria(adreça_inicial,mida)→ Indiquem les posicions de memòria que
volem que ens siguin assignades i ens contesta dient si ha estat possible aquesta
assignació.
• ok=protegir_memòria(adreça_inicial,mida,protecció)→ Definim la protecció que correspon
a un tros de memòria. Ens constesta dient si ha estat possible fer l’operació.
• ok=desassignar_memòria(adreça_inicial,mida)→ Es llibera un tros de memòria que era
assignada al nostre procés.
Problemas Tema 2:Gestión de Memoria
1
1. Dibuixa una possible configuració de l’espai lògic que es podria obtenir en executarlo.
2. Quina crida al sistema s’hauria d’utilitzar i com es modificaria l’espai lògic si les
dades creixen 4 Mbytes?
Problema 2.4.
Un procés en execució vol detectar que el creixement automàtic de la seva pila no arribi fins a la
zona de dades. Explica com es podria detectar que la pila no creixi massa a les següents situacions:
1. Espai lògic lineal
2. Espai lògic segmentat
Problema 2.5. Debugger
Volem depurar un programa carregat a memòria; per fer-ho podem disposar d’un programa de sistema anomenat debugger que possibilita definir al codi un seguit de punts d’aturada (breakpoints)
que ens permeten consultar i modificar el contingut de la memòria i dels registres del processador
en aquell punt concret d’execució.
Quan definim un breakpoint, el que fa el debugger és fer-se una còpia de la instrucció següent
al breakpoint i substituir-la per una instrucció de salt a codi propi del debugger; aquest codi propi
permet la consulta de la memòria i, quan es vol rependre l’execució del programa original, s’encarrega d’executar la instrucció que haviem salvat i de tornar el control d’execució a les instruccions
posteriors al breakpoint.
Si inicialment la regió de codi és protegida, explica com es possible fer-ho. (Podeu disposar de
les mateixes crides al sistema que es mencionaven al Problema 2.3.)
Problema 2.6. Llibreries compartides (Muntatge dinàmic)
En carregar el nostre programa a memòria es monta dinàmicament amb una llibreria compartida
amb altres processos que té adreces lògiques de L a M.
1. Explica les restriccions que imposa al muntatge i a la càrrega de programes.
2. De quina forma es reubiquen les crides o funcions d’aquesta llibreria.
Problema 2.7.
Disposem de un Sistema Operatiu que ofereix memòria virtual. Quins són els components del Sistema Operatiu (parts del seu codi, de les dades, piles, ...) que han de ser residents a memòria física
obligatòriament en qualsevol instant? Posa exemples per raonar aquesta necessitat.
Problema 2.8.
Disposem d’una màquina amb un espai lògic de processador de 1024 Kbytes i una memòria física
instal·lada de 128 Kbytes. El sistema de gestió de memòria del Sistema Operatiu instal·lat en
aquesta màquina es basa en la tècnica de la paginació sota demanda vista a classe, on les pàgines
tenen una mida de 2 Kbytes. Podeu suposar que a una pàgina només hi haurà o bé codi, o bé dades
del procés, o bé la pila d’execució de l’únic fluxe del procés.
Sobre aquesta màquina volem executar un programa. La capçalera de l’executable d’aquest pro-
Problemas Tema 2:Gestión de Memoria
2
grama ens indica que el codi del programa ocupa 10 Kbytes, que tenim 6 Kbytes de dades inicialitzades, que les dades no-inicialitzades ocuparan 15 Kbytes i la pila 12 Kbytes. Amb aquesta
informació contesteu les següents preguntes:
1. Pots aproximar la mida que tindrà el fitxer executable del programa que hem descrit?
I si la mida de les pàgines de memòria fos de 1 Kbyte, quina seria ara la mida del
fitxer executable?
2. Un cop carregat aquest programa i creat l’espai lògic del procés corresponent, i
suposant que totes les pàgines que ocupa el nostre procés són presents a memòria
física, quina seria la quantitat de memòria física que ocuparia el nostre procés?
Respondre a la mateixa pregunta si les pàgines fossin de 1 Kbyte.
3. Quina és la fragmentació interna que produeix aquest procés en el cas de que les
pàgines fossin de 2 Kbytes? I si fossin de 1 Kbyte?
4. Com afectaria un canvi a la quantitat de memòria física instal·lada que té aquesta
màquina sobre els següents espais d’adreces: espai lògic del programa (fitxer
executable), espai lògic del processador i espai lògic del procés.
PROBLEMES D’EXAMEN
Problema 2.9. Entrada al Sistema
L’objectiu d’aquest problema és deixar clara l’entrada d’un flux d’usuari al Sistema Operatiu
(UNIX en aquest cas). Per això, el problema està organitzat en diversos passos que, un cop resolts,
donaran la solució completa.
1er pas:
L’usuari executa un programa compilat que conté el següent codi en C:
fd = open (“fitxer”,O_RDONLY);
a) Com es pot traduir a assemblador ? Escriviu-ho en un codi assemblador
ideal. (open és una rutina de la llibreria del sistema).
2on pas:
L’usuari fa una crida a sistema (‘open’). En el codi que haureu escrit haurà aparegut una instrucció equivalent a:
call _open
b) És aquesta instrucció la crida a sistema ?
c) On continua el flux executant després d’aquesta instrucció ?
d) Està el processador executant ja en mode sistema ?
e) Intenteu escriure el codi que s’executarà abans de passar a mode sistema.
3er Pas:
f) Quins canvis provoca una instrucció com “trap #UNIX“?
4art Pas:
g) On continua l’execució del flux després d’aquesta instrucció ?
h) Quines operacions fa la rutina de servei del trap ?
Problema 2.10.
Un programa puede considerarse dividido en cuatro áreas: código, pila, datos inicializados y datos
Problemas Tema 2:Gestión de Memoria
3
no inicializados. Se desea que los datos y la pila sean legibles y escribibles, a la vez que sea imposible modificar el código (ya sea voluntariamente o por error del programa). Suponiendo que el
espacio lógico del procesador sea lineal de tamaño 16 M bytes y el sistema de memoria sea paginación bajo demanda con pàginas de 2 Kbytes, contestad las siguientes preguntas:
Área
Tamaño
Código
2558 bytes
Pila
6 KB
Datos Inic.
1534 bytes
Datos no ini
5118 bytes
1. Dibujad el Espacio Lógico del proceso que se crea para ejecutar el anterior
programa. Tened en cuenta que se quiere que tanto la pila como los datos no
inicializados puedan crecer de manera dinámica, es decir, a medida que el programa
se ejecuta.
2. Si el proceso tuviera más de un flujo de ejecución ¿cambiaría algo en la estructura
del Espacio Lógico del proceso que habéis descrito anteriormente? Si es así,
calculad el tamaño del Espacio Lógico del proceso dependiendo de F (número de
flujos) y dibujad la nueva estructura de su Espacio Lógico.
Problema 2.11. Rotonda
1. Indicad a qué espacio (o a qué espacios) de direcciones corresponden los conjuntos
de instrucciones siguientes (casos 1 a 4 de la figura).
2. ¿Qué tipo de transformaciones se han dado a cada paso?
3. ¿La máquina sobre la que se ejecuta posee MMU (unidad de gestión de memoria)?
Justifícalo.
4. ¿En qué posición de memoria física y de memoria virtual se encuentra la variable x?
Justifícalo
2) 200: add 4(sp), 8(sp), R0; rutina func
1) func (a,b)
a)
b)
{
return (a+b);
}
int x,y,z;
main()
{
x=func(y,z)
}
a)
b)
206: ret
104:
108:
112:
116:
push 1028 ;rutina main
push 1032
call _func
mov R0, 1024
4) 13512: add 4(sp), 8(sp), R0
13518: ret
13816:
13820:
13824:
13828:
Problemas Tema 2:Gestión de Memoria
3) 1224: add 4(sp), 8(sp), R0
1230: ret
1528:
1532:
1536:
1540:
push 2452
push 2456
call 1224
mov R0, 2448
push 2452
push 2456
call 1224
mov R0, 2448
4
Problema 2.12. D'elefant
Suposeu que una màquina té un sistema de gestió de memòria multiprogramat, no contigu, no resident, mòbil i no sencer, on la traducció d'adreces s'efectua dinàmicament (en execució). Contesteu
a les següents preguntes tot justificant breument la vostra resposta.
1. Pot ser més gran la mida de l'espai lògic d'un procés que la quantitat total de
memòria física instal.lada a la màquina ?
2. Com afectarà un augment de la quantitat de memòria física instal.lada sobre la mida
de l'espai lògic del processador ?
3. És possible que la mateixa adreça lògica de dos processos diferents, sigui traduïda a
la mateixa adreça física en un mateix moment ?
4. És possible que una adreça lògica d'un programa en execució, sigui traduïda a
adreces físiques diferents durant la mateixa execució ?
5. Es necessari que la pila d'execució d'un procés s'enmagatzemi a adreces lògiques
consecutives? I en adreces físiques consecutives ?
6. Compilem un mateix programa de dues formes diferents; a la primera indiquem que
la mida inicial de la pila serà de 10 K, i a la segona indiquem que serà de 20 K.
Quina creieu que serà la diferència de mida entre els dos fitxers executables
generats?
7. En quines circumstàncies creieu que apareix el missatge Segmentation Fault a
un sistema UNIX?
8. Si tenim reubicació dinàmica, creieu que és necessària l'existència d'una MMU ?
9. Ens permet ampliar el grau de multiprogramació el fet de disposar de memòria
virtual?
10.Es cert que un trap és una interrupció síncrona provocada pel mateix procés
d'usuari?
Problema 2.13. La Bomba lògica
Digues què és el que penses al respecte de les següents afirmacions, tot justificant la resposta.
1. Durant l'execució de la rutina d'atenció a una fallada de pàgina es poden produir
noves fallades de pàgina.
2. L'Espai Lògic de processador pot ser més gran que la suma de les mides de la
memòria física instal·lada i de la mida del dispositiu d’emmagatzemament de
pàgines tretes de memòria física (àrea de swap).
3. L'Espai Lògic de procés pot ser més gran que la suma de les mides de la memòria
física instal·lada i de la mida del dispositiu d’emmagatzemament de pàgines tretes
de memòria física (àrea de swap).
4. Qualsevol procés d'usuari té parts del seu espai lògic de procés que han de trobar-se
permanentment a memòria física durant l'execució del procés.
5. Si durant l'execució concurrent de dos processos, tots dos intenten accedir a la
mateixa adreça lògica, això vol dir que estan compartint memòria.
6.
a) Dos processos que comparteixen pàgines de codi, necessàriament han de
veure ubicades les pàgines físiques compartides a les mateixes pàgines
lògiques.
Problemas Tema 2:Gestión de Memoria
5
b) Dos processos que comparteixen pàgines de dades, necessàriament han
de veure ubicades les pàgines físiques compartides a les mateixes pàgines lògiques.
c) Dos processos que comparteixen pàgines de pila, necessàriament han de
veure ubicades les pàgines físiques compartides a les mateixes pàgines
lògiques.
Problema 2.14. Memoria
Da tu opinión sobre las siguientes afirmaciones justificando tu respuesta.
1. La reubicación dinámica en tiempo de carga es utilizada por algún sistema de
gestión de memoria (SGM).
2. El espacio lógico de un programa puede verse alterado por algún cambio en el
tamaño o características de la memoria física.
3. Para proteger la memoria física asignada a un proceso de los accesos del resto de
procesos, es necesaria la existencia de un espacio lógico y de un espacio físico
independiente.
4. Si un programa ha sido cargado en posiciones consecutivas de memoria física, el
SGM es contiguo.
5. En un SGM basado en paginación es posible que distintos procesos compartan una
página lógica.
6. Un SGM que utilice reubicación estática no necesita MMU.
7. Una diferencia entre reubicación estática y dinámica es el número de veces en que se
realiza la traducción de una misma dirección lógica.
Problema 2.15.
Tenemos un proceso (miproc) cuyo código ocupa 5 Kbytes, su datos no inicializados 8 Kbytes, la
pila 2 Kbytes y los datos inicializados ocupan 2 Kbytes.
5 Kb
Código
2 Kb
D. inic.
8 Kb
D. no inic.
2 Kb
Pila
Figura 1: Espacio lógico del proceso miproc
Y disponemos de tres sistemas multiprogramados diferentes en los que queremos lanzar el proceso. El estado de la memoria física antes de lanzar nuestro proceso es el mismo en los tres sistemas
y es el que que muestra en la figura 2. Justo después de cargar nuestro proceso, observamos el estado de la memoria física en cada uno de los sistemas y obtenemos los resultados descritos en la
figura 3.
Problemas Tema 2:Gestión de Memoria
6
Figura 2: Estado de la memoria física
antes de cargar miproc
Figura 3: Estado de la memoria física después de cargar miproc
en el sistema 1
en los tres sistemas
10 K
M. Ocupada
6K
M. Libre
18 K
M. Ocupada
10 K
10 K
M. Libre
M. Ocupada
17 K
miproc
10 K
M. Libre
9K
M. libre
10 K
M. Ocupada
18 K
M. Ocupada
10 K
M. Ocupada
en el sistema 2
en el sistema 3
10 K
6K
M. Ocupada
miproc
10 K
6K
M. Ocupada
miproc
18 K
M. Ocupada
18 K
M. Ocupada
10 K
miproc
10 K
10 K
2K
8K
M. Ocupada
miproc
M. libre
10 K
1K
9K
miproc
M. Ocupada
miproc
M. libre
Se os pide que describáis las características que creéis que tiene cada uno de los sistemas de memoria, y la MMU mínima que necesitarían, justificando vuestra respuesta. Fijaos que el sistema 2
y el sistema 3 no son iguales.
Problema 2.16.
En un sistema multiprogramado ejecutamos un proceso que tiene el espacio lógico de memoria
descrito en la siguiente figura:
5 Kb
Código
2 Kb
D. inic.
8 Kb
D. no inic.
2 Kb
Pila
Durante la ejecución observamos en dos ocasiones la cantidad de memoria física que el proceso
tiene asignada. La primera vez vemos que el proceso tiene 10 K de memoria física. La segunda
vez, vemos que el proceso ha pasado a tener 6 K de memoria física.
Describe un sistema de gestión de memoria capaz de permitir este comportamiento, y la MMU
mínima que necesita. ¿A qué se puede deber este cambio en la cantidad de memoria física del proceso?
Problema 2.17.
Tenemos una máquina con un sistema de gestión de memoria basado en paginación. En este sistema es posible asociar a cada página tres permisos de acceso diferentes: lectura, escritura y ejecución.
En esta máquina se quiere ejecutar un proceso cuyo espacio lógico de direcciones tiene las siguientes características:
• El código ocupa 10Kb, y el usuario quiere que la zona de memoria que ocupe sólo tenga
permiso de ejecución
• Los datos inicializados tienen 3 Kb en los que no se quiere permitir la escritura y otros
6Kb que se pueden leer y escribir
Problemas Tema 2:Gestión de Memoria
7
• Los datos no inicializados tienen un tamaño inicial de 4 Kb y se pueden tanto leer como
escribir.
• Y la pila tiene inicialmente un tamaño de 8Kb y también se puede leer y escribir.
1. Contesta a las siguientes preguntas, suponiendo que el tamaño de página es 4Kb y
suponiendo que es 2Kb:
a) ¿Cómo se tendrían que cargar en memoria física las páginas lógicas para
cumplir los requerimientos de protección? Di qué parte de cada una de
las zonas del espacio lógico se cargaría en cada una de las páginas físicas
asignadas.
b) ¿Qué cantidad de memoria física ocuparía el proceso si estuviera cargado por completo en memoria?
c) ¿Cuánta fragmentación interna se tendría? ¿Y fragmentación externa?
2. Si la cantidad de memoria física de la máquina fuera 24Kb, ¿sería posible que el
proceso se ejecutara? ¿bajo qué condiciones?
Problema 2.18.
Tenemos dos máquinas que sólo se diferencian en la cantidad de memoria de la que disponen. La
máquina A tiene 128 Mbytes, mientras que la máquina B dispone de 64 Mbytes. Ambas máquinas
utilizan un sistema de gestión de memoria basado en paginación, con un tamaño de página de
4Kbytes y un área de swap de 256 Mbytes, y utilizan el mismo sistema operativo. Este sistema operativo necesita estar cargado permanentemente en memoria para funcionar correctamente, y ocupa
10 Mbytes. En las dos máquinas lanzamos al mismo tiempo dos programas. Uno de ellos ocupa 30
Mbytes, mientras que el tamaño del otro es 40 Mbytes. ¿Se podrán ejecutar en las dos máquinas
los dos programas al mismo tiempo? ¿En las dos máquinas, tardarán el mismo tiempo en acabar la
ejecución?
Problema 2.19.
Suponed que tenéis una máquina con un sistema de gestión de memoria virtual basado en paginación. En este sistema las páginas son de 1Kb, y el total de memoria física es 128 páginas. El algoritmo de reemplazo de páginas del sistema operativo se ejecuta cuando necesita cargar una página
y no tiene ninguna página física libre, y siempre selecciona para enviar al área de swap a la página
que hace más tiempo que no se accede. Las páginas que ocupa el sistema operativo se mantienen
permanentemente en memoria física.
En esta máquina queréis ejecutar un programa que recorra una matriz M formada por 512 filas, cada una de 512 enteros (en esta máquina, 1 entero ocupa 2 bytes). Se tienen dos propuestas
de código:
Problemas Tema 2:Gestión de Memoria
8
Código B
Código A
(...)
char M[512][512];
(...)
char M[512][512];
for (i = 0; i < 512; i++){
for (j = 0; j < 512; j++){
M[i][j] = 0;
}
}
(...)
for (j = 0; j < 512; i++){
for (i = 0; i < 512; j++) {
M[i][j] = 0;
}
}
(...)
Suponiendo que la matriz se sitúa en memoria por filas:
M[0][0]
M[0][1]
M[0][2]
Memoria
Física
M[0][511]
M[1][0]
M[511][510]
M[511][511]
1. Teniendo en cuenta el número de fallos de página, ¿cuál de los dos códigos
seleccionarías? ¿por qué?
2. ¿Se te ocurre otra forma de situar la matriz en memoria que favoreciera el otro
código?
Problema 2.20.
Tenemos dos máquinas basadas en paginación que sólo se diferencian en el tamaño de página y en
el tamaño de la memoria física (el resto de características hardware y software son idénticas).
La máquina A dispone de 36 Kbytes para ejecutar procesos de usuario y el tamaño de página es de
2048 bytes. En la máquina B podemos usar 32 Kbytes y el tamaño de página es de 4096 bytes.
Suponed que lanzamos en cada una sólo el proceso cuyo espacio lógico tenéis en la siguiente figura
(el espacio lógico del proceso no cambiará de tamaño durante la ejecución).
Problemas Tema 2:Gestión de Memoria
9
código
13 Kb
datos
no modificables
2 Kb
datos
modificables
13 Kb
pila
5 Kb
En las dos máquinas el proceso se ejecuta con normalidad, pero en la máquina A acaba antes
que en la máquina B.
1. ¿Cuánta memoria ocupa el proceso en cada máquina, una vez cargado todo su
espacio de direcciones?
2. ¿Qué sistema de gestión de memoria crees que tienen estas máquinas?
3. ¿A qué se debe la diferencia en la velocidad de ejecución?
Problemas Tema 2:Gestión de Memoria
10
Descargar