You are on page 1of 8

Examen 2021/22-1

Assignatura Codi Data Hora inici


Sistemes operatius 05.566 15/1/2022 12:30

Fitxa tècnica de l'examen

• No és necessari que escriguis el teu nom. Un cop resolta la prova final, només s’accepten documents en
format .doc, .docx (Word) i .pdf.
• Comprova que el codi i el nom de l'assignatura corresponen a l'assignatura de què t'has matriculat.
• Temps total: 2 hores Valor de cada pregunta: Indicat a l'enunciat
• Es pot consultar cap material durant l'examen? SÍ Quins materials estan permesos? Materials
assignatura
• Es pot fer servir calculadora? SÍ De quin tipus? PROGRAMABLE
• Si hi ha preguntes tipus test, descompten les respostes errònies? NO Quant?
• Indicacions específiques per a la realització d’aquest examen:

Capçalera

Enunciat: L’enunciat de l’examen estarà en format PDF. A l’ordinador des d’on fareu l’examen cal tindre instal·lat algun
programari per a poder llegir documents en format PDF. Per exemple, es pot utilitzar el programari gratuït Adobe Acrobat
Reader DC, però podeu utilitzar qualsevol altre programari.

Respostes: S’ha d’identificar cada resposta dins l’examen. És obligatori indicar el número de pregunta i l’apartat,
opcionalment també es pot afegir tot o part de l’enunciat si això us ajuda en la resolució de la pregunta.
Si no s’identifica correctament a quina pregunta fa referència la resposta no s’avaluarà.
En cas de ser necessari aplicar un procediment per resoldre alguna pregunta, mostreu clarament i argumenteu el
procediment aplicat, no només el resultat. En cas de dubte, si no es poden resoldre pels mecanismes establerts o per
manca de temps, feu els supòsits que considereu oportuns i argumenteu-los.

Elaboració document a lliurar: Podeu utilitzar qualsevol editor de text per crear el document amb les respostes, sempre
que després us permeti exportar el document a format PDF per fer el lliurament.
És obligatori lliurar les respostes de l’examen en un únic document en format PDF. No s’acceptaran altres formats.
És responsabilitat de l’estudiant que la informació que contingui el document PDF que es lliuri reflecteixi correctament les
respostes donades a l’examen. Recomanem que obriu el fitxer PDF generat i reviseu atentament les respostes per evitar
que s’hagi pogut perdre, canviar o modificar alguna informació al generar el document en format PDF.
El lliurament es pot fer tantes vegades com es vulgui, es corregirà el darrer lliurament que es faci dins l’horari especificat
per realitzar l’examen.

COMPROMÍS D'AUTORESPONSABILITAT: aquest examen s’ha de resoldre de forma individual sota la vostra
responsabilitat i seguint les indicacions de la fitxa tècnica. En cas que no sigui així, l’examen s’avaluarà amb un zero. Per
altra banda, i sempre a criteri dels Estudis, l'incompliment d'aquest compromís pot suposar l’obertura d’un expedient
disciplinari amb possibles sancions.

Pàgina 1 de 8
Examen 2021/22-1
Assignatura Codi Data Hora inici
Sistemes operatius 05.566 15/1/2022 12:30

1.- Teoria (3 punts)


Indiqueu justificadament si les següents afirmacions són certes o falses. Respostes sense justificar o amb
justificació insatisfactòria seran considerades incorrectes.

a) Utilitzar rutines de biblioteca d’entrada/sortida permet fer les operacions d’entrada/sortida des de
mode d’execució usuari.

b) Si la mida inicial de la pila d’un procés és de cinc pàgines (assumiu que cada pàgina ocupa 4
KiloBytes), el fitxer executable del programa tindrà una mida mínima de 20 KiloBytes.

c) L’identificador de canal retornat per la crida al sistema open() es pot considerar una capability,.

d) Quan un procés executa la crida al sistema exit(), els seus processos fills passen a l’estat zombie.

e) Sigui una aplicació multi-thread (amb més de 5 threads) que té una única regió crítica i que utilitza un
semàfor per a regular-ne l’accés en exclusió mútua. En aquest cas, mai es podrà produir deadlock
(abraçada mortal).

Pàgina 2 de 8
Examen 2021/22-1
Assignatura Codi Data Hora inici
Sistemes operatius 05.566 15/1/2022 12:30

2.- Memòria (2 punts)


Implementeu una rutina en llenguatge C tal que, donat un string, ens retorni com a resultat un vector d’enters
creat dinàmicament amb tantes posicions com paraules tingui l’string i on la posició i-èsima del vector indiqui
la posició de l’string on comença la paraula i-èsima. Podeu considerar que les paraules de l’string estan
separades per un únic caràcter en blanc, que l’string ni comença ni acaba amb un espai en blanc i que l’string
contindrà com a mínim una paraula.

int *words(char *str);

Per exemple, si l’string d’entrada és Nobody is perfect, la rutina retornarà un vector d’enters amb 3
posicions amb el contingut {0, 7, 10}, que són les posicions a l’string dels caràcters “N”, “i” i “p”, les
posicions del primer caràcter de les 3 paraules de l’string.

Observacions:
- Per a resoldre aquest exercici no podeu utilitzar rutines de biblioteca que construeixen strings com
ara sprintf(), strcat(), strdup(), strcpy(), ...
- Si ho necessiteu, sí que podeu utilitzar strlen().
- Podeu assumir que els strings d’entrada estan ben formats.
- Si no és possible realitzar l’operació, la rutina retornarà NULL.

Pàgina 3 de 8
Examen 2021/22-1
Assignatura Codi Data Hora inici
Sistemes operatius 05.566 15/1/2022 12:30

3.- Processos (3 punts)


Indiqueu justificadament quin serà el comportament d’executar els següents programes: jerarquia de
processos creada (dibuixeu l’arbre de processos), informació mostrada per la sortida estàndard (i en quin
ordre), existència de processos zombies, bloquejos,... Podeu assumir que les crides fork() i execlp() mai
retornaran error.

a)

Pàgina 4 de 8
Examen 2021/22-1
Assignatura Codi Data Hora inici
Sistemes operatius 05.566 15/1/2022 12:30

b)

Pàgina 5 de 8
Examen 2021/22-1
Assignatura Codi Data Hora inici
Sistemes operatius 05.566 15/1/2022 12:30

4.- Concurrència (2 punts)


A una fàbrica es construeixen els productes Q i R a partir dels components A, B, C i D. Per a controlar
les existències de cadascun dels components A, B, C i D, s’utilitzen quatre semàfors de recursos
(semA, semB, semC i semD respectivament). Si ens fixem en el component A, semA estarà inicialitzat
al nombre de components A disponibles inicialment; cada cop que algú necessiti un component A
haurà d’executar sem_wait(semA); cada cop que un nou component A estigui disponible caldrà
executar sem_signal(semA). Els components B, C i D seran gestionats de forma anàloga.

Assumiu que cada producte Q necessita tres components per a poder iniciar la seva producció: un
de tipus B, un de tipus A i un de tipus D; anàlogament, cada producte R necessita tres components:
un de tipus D, un de tipus C i un de tipus A. A més a més, per limitacions de la fábrica, només es
poden producir simultàniament 7 productes de qualsevol tipus (per exemple, es poden producir
alhora 3 Q i 4R però no 2 Q i ·6 R).

a) (1 punt) Al següent fragment de codi, afegiu justificadament el codi necessari a produce_Q()


i produce_R() i indiqueu les variables globals/semàfors necessàries (i la seva inicialització) per
obtenir el comportament especificat. No cal que declareu ni inicialitzeu semA, semB, semC ni semD.

/* Global variables and initialization */

void produce_Q ( ) void produce_R ( )


{ {
/∗ Wait for conditions and /∗ Wait for conditions and
components . components .
Update global state.∗/ Update global state.∗/

/∗ produce Q ∗/ /∗ produce R ∗/
. . . . . .

/∗ Exiting produce_Q( ). /∗ Exiting produce_R( ).


Update global state. ∗/ Update global state. ∗/

} }

b) (1 punt) Si el producte R també necessités un segon component D, indiqueu justificadament


quins canvis caldria introduir a la vostra resposta?

Pàgina 6 de 8
Examen 2021/22-1
Assignatura Codi Data Hora inici
Sistemes operatius 05.566 15/1/2022 12:30

Pàgina 7 de 8
Examen 2021/22-1
Assignatura Codi Data Hora inici
Sistemes operatius 05.566 15/1/2022 12:30

Pàgina 8 de 8

You might also like