Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Examen de Recuperació COM-GCED: 2017-2018 Q2

Estudiant (cognoms, nom):


DNI:

Examen de Recuperació de COM-GCED


Justifica totes les respostes d’aquest examen. Les respostes sense justificar es
consideraran equivocades. Escriu les respostes en bolígraf (excepte vermell).

Exercici 1 (2,5 punts)


1. (1,0 punt) Explica les eines que fem servir i el mecanisme que permet passar de tenir un codi
d’alt nivell a un fitxer executable. Fes un dibuix mostrant les diferents eines intermitges i el
resultat que anem obtenint en cada fase.

El compilador tradueix el codi d’alt nivell a un altre, normalment de més baix nivell. En aquest
cas a codi en ensamblador.

L’ensamblador tradueix el codi a un format conegut com codi objecte, que és una combinació
de instruccions, dades i informació addicional.

El Linker combina els diferents fitxers objecte i llibreries de tal manera que els enllaça per
generar un executable final.

1
Examen de Recuperació COM-GCED: 2017-2018 Q2
Estudiant (cognoms, nom):
DNI:
2. (0,5 punts) Explica les diferències entre compilador i intèrpret.
El compilador tradueix un codi de un llenguatge d’alt nivell per generar un fitxer objecte que,
amb l’ajuda del linker, genera un executable. L’intèrpret llegeix, tradueix i executa
directament sense crear un altre fitxer per executar.

3. (0,5 punts) Explica breument què passa si llegim un numero que està guardat en memòria en
format “integer” utilitzant una variable de format “char”.
Com el char només ocupa un sol byte, mentre que el “integer” ocupa, normalment, 4 bytes el
que passaria és que es quedaria un dels quatre bytes del integer i per tant es perdria
informació

4. (0,5 punts) Explica breument què aporta utilitzar la codificació de caràcters amb format UTF-8
versus utilitzar el format ASCII.
Dona molta més flexibilitat per poder representar un rang de caràcters molt més ampli.

Exercici 2 (2,5 punts)


1. (0,5 punts) Explica les diferències entre un programa i un procés:
Un programa és un conjunt de instruccions i dades estàtiques, mentre que un procés és un
programa en execució.

2. (0,5 punts) Explica les diferències entre un flux i un hardware thread:


Un flux és el fil d’execució de un procés. Es a dir, la seqüencia de instruccions. Un hardware
thread és el subconjunt mínim de recursos hardware dins del processador per poder executar
un flux.

3. (0,5 punts) Explica les diferències entre una llibreria compartida i una llibreria estática:
Un llibreria és un conjunt de fitxers objectes pre-compilats que inclouen funcions i variables
globals per poder ser utilitzats per diferents codis. Una llibreria compartida pot ser utilitzada
(i per tant està carregada a memòria) per diferents processos que s’estan executant a l’hora.
Llibreria estàtica està preparada per ser copiada i incloses dins del programa generat.

2
Examen de Recuperació COM-GCED: 2017-2018 Q2
Estudiant (cognoms, nom):
DNI:
4. (0,5 punts) Explica les diferències entre una política de planificació preemptiva i una no
preemptiva:
Preemptiva significa que el SO té la potestat de poder desassignar (per tant treure) un procés
de l’estat de running. En canvi una política “no-preemptiva” significa que el SO no ho pot fer i
només ho pot fer el propi procés si ho demana (per exemple, per fer una E/S bloquejant)

5. (0,5 punts) Explica les diferències entre la zona de memòria de stack i la de heap:
El stack és la zona de memòria per posar les variables locals i pas de paràmetres de funcions.
En canvi el heap és la zona de memòria per poder demanar i alliberar, de manera dinàmica,
memòria durant l’execució del procés.

Exercici 3 (2 punts)
1. (0,75 punts) Hem vist que els processadors actuals tenen un banc de registres escalars i un altre
de registres vectorials. Explica per a què serveix cada banc de registres, quins tipus de dades
podem guardar a cadascun d’ells i quins avantatges té cadascun:
El banc de registres escalars permeten fer operacions comuns, mentre que els registres
vectorials estan especialitzats en operacions sobre vectors (conjunts de dades guardades en
un array). De tal manera que els registres vectorials són útils per optimitzar operacions sobre
vectors, mentre que els scalars per valors únics.

2. (0,5 punts) Explica què vol dir que una arquitectura és NUMA. Quants nodes diferents penses que
pot arribar a tenir una arquitectura d’aquest tipus?
Non-Uniform Memory Access. Es a dir, hi ha zones de memòria amb diferent latència. Això es
dona quan tenim dos o més processadors en un mateix ordinador. Cada processador té un
conjunt, o node, de memòria (RAM) amb una latència menor que si accedeix al conjunt de
memòria (RAM) dels altres processadors del mateix ordinador.

3. (0,75 punts) Explica la diferència entre sector i bloc d’un disc de emmagatzemament, així com
també quin impacte té tenir un tamany de bloc massa gran i quin impacte té tenir-ne un de
massa petit.
Sector és la unitat mínima, des del punt de vista del hardware, de gestió i subdivisió d’espai
en un dispositiu d’emmagatzement. Bloc és la unitat mínima, des del punt de vista del SO. Si
és massa gran podem desaprofitar espai. Si és massa petit podem ralentitzar el rendiment del
dispositiu.

3
Examen de Recuperació COM-GCED: 2017-2018 Q2
Estudiant (cognoms, nom):
DNI:
Exercici 4 (3 punts)
Assumim que estem treballant amb un ordinador amb un Sistema Operatiu Linux que incorpora un
Sistema de Fitxers (SF) basat en I-nodes.

1. (0,5 punts) Explica breument quines estructures del SF, de les explicades en classe, es tenen
que actualitzar degut a l'execució de la següent línia de comandes
#>mknod MIPIPE p
Es crea un nou I-node (el de la pipe amb nom) i s’actualitza el contingut del directori actual
per afegir la nova entrada “MIPIPE”. Per poder fer-ho s’actualitza el I-node del directori i del
bloc de dades del directori.

2. (1 punt) Indica quins canvis hauries de fer, i raona breument els motius dels quals, en el següent
codi per aconseguir que el procés creï 5 processos fill que s’executin seqüencialment i que, a més,
cadascun canviï per executar el programa “prog” que no necessita cap paràmetre addicional
d’entrada:

for(i=0; i<5; i++){


fork();
}
while (waitpid(-1, NULL, 0)>0);

for(i=0; i<5; i++){


if (fork() == 0){
execlp(“./prog”, “./prog”, NULL);
}
waitpid(-1, NULL, 0);
}

La implementació original no es diferencia el procés recent creat (fill) del creador (pare). A
més, està implementat per execució concurrent dels fills.

4
Examen de Recuperació COM-GCED: 2017-2018 Q2
Estudiant (cognoms, nom):
DNI:
3. (1 punt) El programa “prog” simplement obre la pipe amb nom “MIPIPE”, que hem creat en el
primer apartat d’aquest exercici, en mode lectura per així llegir el contingut i mostrar-ho per
pantalla. Explica breument què succeeix des de que comença a executar-se el codi del apartat
anterior (que crea 5 processos fill que s’haurien d’executar seqüencialment), si a continuació
executem la següent línia de comandes des d’una altra terminal executem la línia de comandes:
#>echo 12345 > MIPIPE
fins que acaba l’execució tots ells.
Al ser ara execució seqüencial, el primer procés fill llegirà i mostrarà tot, mentre que el
següent es quedarà bloquejat al fer l’open de la pipe, perquè no hi haurà cap altre procés
que l’obrirà per escriure. Per tant, el procés pare també es quedarà bloquejat en el waitpid
del segon fill, perquè no acabarà.

4. (0,5 punts) Explica breument què és una secció crítica, quin problema presenta en l’execució de
programes que tenen alguna, com es pot solucionar i amb quin/s mecanisme/s.
Es una zona de codi que té variables compartides entre threads. De tal manera que si diferents
threads executen a l’hora aquesta zona de codi, poden generar un ordre d’actualització de
valors incoherent de les variables compartides. Per poder solucionar-ho es tenen que posar
mecanismes de bloqueig per assegurar que només un únic thread pugui estar dins de la secció
crítica i alliberar aquest mecanisme quan s’acabi (és a dir, executi les instruccions posteriors
que ja estan fora de la zona de codi) per permetre entrar altres threads.

You might also like