Sistemas Operativos
Sistemas Operativos (II, ITIG, ITIS) Fundamentos de Sistemas Operativos (Grado en Ing. Inf.) Examen parcial, 29 de abril de 2011
1 2 3
Nombre
Dispone de tres horas para realizar el examen
Titulación
1 (2,50 puntos)
Una
planta
desaladora
de
agua
Jene
un
sistema
de
control
informáJco
que
mide
periódicamente
la
calidad
del
agua
producida,
a
parJr
de
tres
sensores.
El
sistema
se
ha
implementado
mediante
cuatro
procesos:
tres
de
ellos
leen
conJnuamente
un
sensor,
y
otro
proceso
uJliza
las
lecturas
de
los
sensores
para
calcular un
indicador
de
calidad
del
agua. Este
es
el
código
en
pseudo-‐C
de
los
procesos
que
se
han
implementado:
float sensor[3]; // para las lecturas de los tres sensores float indiceCalidad; // para obtener el índice de calidad // i puede valer 0, 1 o 2 (hay tres procesos lectores) proceso LectorSensor (int i) { while (true) { sensor[i] = leer_sensor(i); } } proceso IndicadorCalidad () { while (true) { indiceCalidad = obtener_indice_calidad( sensor[0], sensor[1], sensor[2] ); printf (“índice actual de calidad: %f\n”, indiceCalidad ); } }
Primera parte (1,50 puntos). El
sistema
está
dando
problemas,
porque
los
procesos
no
están
sincronizados
entre
sí.
Por
ello
se
te
ha
contratado
como
experto
en
programación
concurrente.
Tu
misión
consiste
en
arreglar
el
código
de
manera
que
el
proceso
IndicadorCalidad
sólo
llame
al
cálculo
de
un
nuevo
índice
de
calidad
si
se
han
generado
nuevos
valores
de
lectura
de
los
tres
sensores:
mientras
no
estén
disponibles
todos
los
tres
nuevos
valores,
se
debe
quedar
bloqueado.
Además,
Jenes
que
conseguir
que
el
proceso
LectorSensor(i)
sólo
modifique
su
variable
sensor[i] cuando
el
valor
actual
ya
se
ha
uJlizado
en
la
obtención
de
un
índice
de
calidad
(si
no
es
así,
el
proceso
lector
debe
quedarse
esperando). Tienes
que
implementar
los
cambios uJlizando
semáforos. Segunda parte (1 punto). Los
técnicos
de
la
planta
se
han
quedado
contentos
con
tu
solución
y
te
piden
una
mejora,
que
consiste
en
que
los
procesos
lectores
vayan
depositando
los
valores
leídos
en
sendos
tres
búferes
de
capacidad N.
El
proceso
IndicadorCalidad,
cada
vez
que
hay
una
nueva
terna
de
valores,
los
extrae
de
los
búferes
y
realiza
su
cálculo.
Los
procesos
lectores
sólo
se
bloquearán
si
se
encuentran
con
su
búfer
lleno.
UJliza
también
semáforos
para sincronizar
los
procesos.
Para
los
búferes
puedes
usar
la
estructura
que
prefieras
(puedes
considerar
que
ya
la
Jenes
implementada).
Sistemas Operativos – examen parcial, 29 de abril de 2011
pág. 2/3
2 (2,50 puntos)
En
un
planificador
de
procesos
tenemos
la
carga
de
trabajo...
Regístrate para leer el documento completo.