Está en la página 1de 7

EXAMEN FINAL DE SISTEMAS OPERATIVOS (Septiembre de 2011)

No olvidar y en este orden (APELLIDOS Y NOMBRE, DNI O SIMILAR y GRUPO)



Cuestiones (4 puntos)

1. (0.5 puntos) Has desarrollado un S.O. de propsito general estableciendo una jerarqua de
memoria, basndote en que ofreces un sistema con un volumen de almacenamiento muy grande,
con un coste razonable y con un tiempo de respuesta aceptable. Cmo justificaras que esto es
as?

2. (0.5 puntos) Seala cul de los siguientes atributos es compartido entre todos los hilos (procesos
ligeros) de un mismo proceso:
a. Un estado de ejecucin.
b. Una pila de ejecucin.
c. Una variable global
d. Un contexto de ejecucin donde salvar cuando no se est en ejecucin

3. (0.5 puntos) Cmo se denomina el tiempo que un proceso permanece en la cola de procesos
listos o preparados? Explica porqu un proceso est ah.

4. (0.5 puntos) Demuestra que si las operaciones signal y wait de un semforo no se ejecutan
indivisiblemente, el semforo no cumplira su funcin.

5. (0.5 puntos) Considere un procesador con memoria paginada que usa memoria asociativa (TLB).
El tiempo de acceso a memoria principal es de 50 nseg. El tiempo de acceso a la memoria
asociativa es de 6 nseg. Si la tasa de aciertos de la memoria asociativa (TLB) es del 95 %, a
cunto asciende el tiempo medio de lectura de un dato en memoria?.

6. (0.5 puntos) Un sistema de archivos utiliza una poltica de asignacin de espacio indexada. En
este sistema, los bloques de datos de un archivo, se pueden ubicar de forma contigua? Es
necesario que los bloques estn ubicados de forma contigua? Da igual que los bloques estn o no
ubicados de forma contigua? Contestar todas las preguntas

7. (0.5 puntos) Cambiar en algo su contestacin a la ltima pregunta si la asignacin de espacio
fuera enlazada?

8. (0.5 puntos) Dentro de la estructura del software de entrada/salida, de qu se encarga el software
independiente del dispositivo?

Problemas (6 puntos) (Contestar en hojas separadas, no olvidar apellidos y nombre y grupo)

1. (2 puntos) Estamos encargados del diseo de un sistema real sobre un S.O. UNIX y tenemos que
decidir si la estrategia de planificacin por defecto de UNIX es la adecuada, para ello hemos
detallado una traza de los tres procesos crticos que tienen que terminar antes de que se cumpla el
tiempo mximo para el cual son efectivos llamado plazo mximo. Tenemos que contemplar que
cada 4 segundos de quanto de tiempo se ejecuta la Rutina de interrupcin del gestor de
planificacin donde se recalculan las prioridades y se planifica. Hemos detallado una traza de los
tres procesos crticos, de los que definimos el momento de su creacin, los tiempos de ejecucin
completos, detallando la duracin de las rfagas alternas de CPU y E/S y el plazo mximo.
Supongamos que todos los procesos tienen el mismo valor de NICE y cuando el proceso hace la
E/S no se hacen llamadas al sistema.



PROCESO CREACIN RFAGAS CPU E/S (ms) PLAZO MXIMO
P1 0 s [4, 6, 4] 16 s
P2 2 s [2, 4, 6] 20 s
P3 6 s [3] 12 s


Completar el anlisis de acuerdo a una planificacin UNIX como la detallada en clase y calcular:
los tiempos de envo a recepcin, de espera y penalizacin de cada uno de los procesos, el porcentaje
de uso de la CPU y la productividad por minuto A qu conclusiones llegas?
2. (1 puntos) En un sistema que utiliza el algoritmo del banquero existen tres tipos de recursos con
las siguientes posibilidades: A = 9, B = 3 y C = 6. En un instante dado existen cuatro procesos en
ejecucin y el sistema se encuentra en el siguiente estado:

Proceso Necesidades
mximas
Asignado
A B C A B C
P1 3 2 2 1 0 0
P2 6 1 3 5 1 1
P3 3 1 4 2 1 1
P4 4 2 1 0 0 1

a) Comprobar si en T
0
el sistema est en estado seguro.
b) Si posteriormente en un instante T
1
, P1 realiza la solicitud A = 1, B = 0, C = 1, atender el
sistema esta solicitud y cmo reaccionar el sistema? Razone la respuesta.
c) Seguidamente en un instante T
2
, P2 solicita A = 1, B = 0, C = 1, atender el sistema esta
solicitud y cmo reaccionar el sistema? Razone su respuesta.
d) Seguidamente en un instante T
3
, P3 solicita A = 1, B = 0, C = 1, atender el sistema esta
solicitud y cmo reaccionar el sistema? Razone su respuesta

3. (3 puntos) Estamos encargados de disear el programa que controla la impresin de un folleto
divulgativo, el cual consta de 4 hojas distintas y para ello se dispone de 4 impresoras, cada una
imprime una hoja diferente que apila sobre el mismo motn de capacidad 120 hojas, de este
montn un separador las toma de 4 en 4 formando un grupo y lo deposita en un archivador de
capacidad 20 grupos de 4 hojas, se dispone de dos robot recolectores que toman el grupo de
hojas, doblan las hojas por la mitad formando el folleto divulgativo, que finalmente depositan en
una caja, pero slo tengo una caja que comparten los dos robot recolectores y no pueden soltar el
folleto divulgativo en su interior a la vez.
a) (2,25 puntos) Implemente el programa ImpresionFolletoDivulgativo, con el proceso
impresora, separador y robot_recolector que simule el comportamiento descrito y asegure la
correcta edicin del folleto divulgativo, con la mxima concurrencia mediante semforos.

b) (0,75 puntos) Elabora el proceso que simula el robot_recolector mediante mensajes, declara el
mnimo de buzones necesarios para asegurar su funcionamiento correcto.



EXAMEN FINAL DE SISTEMAS OPERATIVOS (Septiembre de 2011)
Ingeniera Tcnica de Sistemas
(SOLUCIONES)
Cuestiones:
1. La justificara con los dos principios en los que se basa la jerarqua de memoria que son:
- Localidad temporal: Los programas tienen tendencia a reutilizar en el futuro posiciones
de memoria que han sido referenciadas en el pasado. Esto es as porque en nuestros
programas tenemos bucles, subrutinas, datos globales, etc.
- Localidad espacial: Los programas tienen tendencia a referenciar direcciones prximas a
la ltima direccin referenciada. Esto es as porque la ejecucin de los programas es
secuencial, usamos arrays, etc
2. c. Una variable global
3. Tiempo de espera. Se encuentra ah porque est pendiente de la asignacin de recursos, en
concreto de la asignacin del procesador.
4. Si se entremezclan la ejecucin de dos instrucciones wait sobre un mismo semforo
inicializado a uno, ambos procesos podran evaluar simultneamente que el semforo
tiene valor uno y tomar los dos la decisin de avanzar sin bloquearse. Ese comportamiento sera
incorrecto, ya que solo debera avanzar uno de los dos procesos
5. Tmedio = (95/100) * (6 + 50) + (5/100) * (6+50+50) = (95/100)*56 + (5/100)*106 = 53,2 + 5,3 =
58,5 nseg
6. La asignacin indexada permite que los bloques de datos de un archivo se encuentren dispersos
por el disco, pero evidentemente no obliga a ello. As que los bloques de un archivo indexado
pueden estar contiguos.
No es necesario que estn ubicados de forma contigua.
No da igual. Los accesos secuenciales al archivo sern ms eficientes en el caso de que los
bloques estn contiguos porque el desplazamiento de los cabezales del disco ser menor,
comparado con el recorrido que tendra que hacer el cabezal si los bloques estuvieran
desperdigados por la superficie del disco. La contigidad ocasiona un menor tiempo de acceso.
En el mejor caso, todos los bloques del archivo estaran en un mismo cilindro y la cabeza lectora
no tendra que hacer ningn movimiento para leer el archivo completo.
7. La respuesta sera similar. Incluso tendra ms impacto en el rendimiento el hecho de que los
bloques estn contiguos, ya que en la asignacin enlazada cualquier acceso al archivo, ya sea
secuencial o ya sea directo, exige recorrer los enlaces de los bloques. Si los bloques estn
contiguos, el cabezal del disco har un recorrido ms pequeo.
8. Se encarga de proporcionar un tamao de bloque lgico uniforme.

PROBLEMA 1
UNIX QUANTON 4 s

Tiempo Suceso En ejecucin Preparados Suspendidos
0 Creacin de P1 ------- P1 (0) ------

Planificacin y
despacho
P1 (0) ------- -------
2 Creacin de P2 P1 (120) P2 (0) -------
4
P1 pide una E/S
vuelve en el 10
------- P2 (0) P1 (240)

Planificacin y
despacho
P2 (0) P1 (240)
6
P2 pide una E/S
Vuelve en el 10
------- P1(240), P2 (120)
Creacin de P3 ------- P3 (0) P1 (240), P2 (120)

Planificacin y
despacho
P3 (0) P1 (240), P2 (120)
9 Fin de P3 ------- ------- P1 (240), P2 (120)
10
Fin de E/S de P1
Fin de E/S de P2
------- P1 (240), P2 (120)

Planificacin y
despacho
P2 (0) P1 (240)
14
Fin de quanto y
reajuste de
prioridades
------- P1(120) , P2 (240) -------

Planificacin y
despacho
P1(0) P2 (240) -------
18 Fin de P1 ------- P2 (240) -------

Planificacin y
despacho
P2(0) ------- -------
20 Fin de P2 ------- ------- -------

Tiempos de envo a recepcin (tiempo de finalizacin tiempo de creacin):

P1 :: 18 0 = 18 s
P2 :: 20 2 = 18 s
P3 :: 9 6 = 3 s
Tiempos de espera (tiempo de envo a recepcin tiempo real):

P1 :: 18 14 = 4 s
P2 :: 18 12 = 6 s
P3 :: 3 3 = 0 s
Penalizacin (tiempo de envo a recepcin / tiempo real):

P1 :: 18 / 14 = 1.3
P2 :: 18 / 12 = 1.5
P3 :: 3 / 3 = 1
Productividad (nmero de procesos / tiempo de finalizacin de todos los procesos):

3 procesos / 20 s = 0.15 procesos cada s = 9 procesos por minuto
Porcentaje de uso de la CPU:

(8 + 8 + 3) 100 / 20 = 95 %
La CPU no se est utilizando al 100 % debido a que entre el instante de tiempo 9 (en el que se produce el fin del proceso
P3) la CPU permanece inactiva al estar todos los procesos suspendidos. Es posible utilizar este tiempo en el que hay
procesos con mucha E/S y poca carga de CPU para solucionar problemas de fragmentacin de memoria (p.e:
compactacin de memoria, etc). Con el proceso 3 se comparta muy bien con l la estrategia de planificacin, pues termina
el primero y con un buen tiempo de envi a recepcin, sin tiempo de espera y con ninguna penalizacin. El proceso p2
tiene ms tiempo de espera que el P1, pero a pesar de esto veremos qu pasa con este proceso P1.
El proceso crtico P1 termina fuera de su plazo, por lo tanto no es una buena eleccin como planificador.
PROBLEMA 2
a) S lo est; siendo disponibles A = 1, B = 1, C = 3, existe al menos una secuencia segura de
procesos, por ejemplo P2, P1, P3, P4.
b) No se le asignaran, ya que en ese caso el sistema ira a un estado inseguro (no existe ninguna
secuencia segura de procesos).
Reaccin si P1 solicita A = 1, B = 0, C = 1.
Como se trabaja con el algoritmo del banquero, el sistema puede reaccionar concediendo la
peticin o denegndola en caso de que se pasara a un estado inseguro. El nuevo estado, si
concediramos la peticin sera:
Disponible: A = 0, B = 1, C = 2
Proceso Necesidades
mximas
Asignado
A B C A B C
P1 3 2 2 2 0 1
P2 6 1 3 5 1 1
P3 3 1 4 2 1 1
P4 4 2 1 0 0 1
Busquemos una secuencia segura. En esta situacin, ningn proceso puede finalizar en el peor
caso, porque todos y cada uno de ellos pueden pedir un recurso de tipo A, del cual no quedan
existencias. Por tanto no existe secuencia segura y el estado es inseguro. As pues, el sistema
tendr que denegar la peticin y dejar el proceso bloqueado.
c) S se le asignaran, ya que existen disponibilidades y adems el sistema va a un estado seguro
(existe al menos una secuencia segura de procesos, por ejemplo: P2, P1, P3, P4).
Reaccin si P2 solicita A = 1, B = 0, C = 1.
Como se trabaja con el algoritmo del banquero, el sistema puede reaccionar concediendo la
peticin o denegndola en caso de que se pasara a un estado inseguro. El nuevo estado, si
concediramos la peticin sera:
Disponible: A = 0, B = 1, C = 2
Proceso Necesidades
mximas
Asignado
A B C A B C
P1 3 2 2 1 0 0
P2 6 1 3 6 1 2
P3 3 1 4 2 1 1
P4 4 2 1 0 0 1
Busquemos una secuencia segura. En esta situacin, el proceso P2 puede obtener un recurso de C
del cual tenemos disponibles y terminar y devolver todos los recursos que tiene asignados, as
tendramos A = 6, B = 2, C = 4, que seran suficientes para que terminase el proceso P3, P4 y P1.
Por tanto existe una secuencia segura y el estado es seguro. As pues, el sistema tendr que
conceder la peticin y actualizar las tablas.

d) No se le asignaran; estando disponibles A = 0, B = 1, C = 2, no disponemos de recurso A para
concederle. As pues, el sistema tendr que denegar la peticin y dejar el proceso bloqueado.

PROBLEMA 3 (a)
program ImpresionFolletoDivulgativo;
const
NhojasMonton = 120
NgruposArchivador = 20
Nimpresoras = 4
NhojasFolleto = 4

type
tipo_hoja =
tipo_grupo_hojas = array 1..NhojasFolleto of tipo_hoja
tipo_folleto =
var
i : integer;
monton : array 1..NhojasMonton of tipo_hoja;
hay_hoja : semaforo_gen;
hay_hueco_monton: semaforo_gen;
turno: array 1.. NhojasFolleto of semforo_bin;
archivador : array 1..NgruposArchivador of tipo_grupo_hojas;
hay_grupo_hojas : semaforo_gen;
hay_hueco_archivador: semaforo_gen;
mutex_archivador: semaforo_bin;
mutex_caja: semaforo_bin;

process impresora (i : integer);
var
hoja : tipo_hoja;
begin
while true do begin
imprimir_hoja (hoja);
wait (turno[i]); (*espera que sea el turno de la impresora que corresponde la hoja a poner*)
wait (hay_hueco_monton);
poner_hoja (monton,hoja);
signal (hay_hoja);
signal (turno[(i + 1) mod NhojasFolleto]); (*turno a la siguiente impresora que corresponda poner la
hoja*)
end;
end;


process separador;
var
i : integer;
grupo : tipo_grupo_hojas;
begin
while true do begin
for i:=1 to NhojasFolleto do begin
wait (hay_hoja );
grupo[i]:= sacar_hoja (monton);
signal (hay_hueco_monton);
end;

wait (hay_hueco_archivador);
poner_grupo_hojas (archivador, grupo);
signal (hay_grupo_hojas);
end;
end;



process robot_recolector (i : integer);
var
grupo : tipo_grupo_hojas;
folleto : tipo_folleto;
begin
while true do begin
wait ( hay_grupo_hojas );
wait (mutex_archivador);
grupo := sacar_grupo (archivador);
signal (mutex_archivador);
signal (hay_hueco_archivador);
folleto = doblar_mitad (grupo);
wait (mutex_caja);
depositar_caja (folleto);
signal (mutex_caja);
end;
end;


begin

hay_hoja := 0;
hay_hueco_monton := NhojasMonton;
turno[1] := 1; (* Tambin vale signal (turno[1]) *)
for i:=2 to NhojasFolleto do turno[i] := 0;
hay_grupo_hojas := 0;
hay_hueco_archivador := NgruposArchivador;
mutex_archivador := 1; (* Tambin vale signal (mutex_archivador) *)
mutex_caja := 1; (* Tambin vale signal (mutex_caja) *)

for i:=1 to Nimpresoras do iniciate (impresora(i));
iniciate (separador, robot_recolector (1), robot_recolector (2));
end.


PROBLEMA 3 (b)

Primero creamos los buzones, elegimos direccionamiento indirecto por buzones, con rutinas crear y destruir
buzones.
Send no bloqueante y Receive bloqueante.
..
..
crear buzon (hay_grupo_hojas);
crear buzon (hay_hueco_archivador);
crear buzon (mutex_caja);
i : integer;
..
..
process robot_recolector (i : integer);
var
folleto: tipo_folleto;
grupo : tipo_grupo_hojas;
begin
while true do begin
receive (hay_grupo_hojas, grupo);
send (hay_hueco_archivador, Nulo);
folleto = doblar_mitad (grupo);

receive (mutex_caja, msj)
depositar_caja (folleto);
send (mutex_caja, Nulo)
end;
end;

Inicializacin de buzones:

begin
..
..
send (mutex_caja, Nulo); (* buzn que controla la exclusin mutua para depositar dentro de la caja *)
for i := 1 to NgruposArchivador do
send (hay_hueco_archivador, Nulo); (*para el buzn que controla los grupos de hojas en el archivador *)
end;
..
..
end.

También podría gustarte