Está en la página 1de 4

CERTAMEN 1 - CORRECTOR

Sistemas Operativos Otoo 2010


Profesor: Luis Gajardo

ICI

Pregunta 1 (20 puntos)


Conteste en no ms de 6 lneas cada tem:
a)

(6p) Indique las principales caractersticas de la operacin Off-line y Spool

operacin Off-line
Existe una sala de cmputo y operador
Transporte manual de cintas entre dispositivos y computador
Ventaja: La lectura y escritura en cinta es ms rpida
Problema: La lectora e impresora son dispositivos lentos y el procesador debe esperarlos. Adems el
computador debe esperar que termine la lectura o escritura de la cinta (este problema se denomina
busy-waiting).

SPOOL: Simultaneous Peripheral Operation On-Line


No hay transporte de cinta por operadores
Dispositivos lentos conectados al computador principal
Monitor residente que lee jobs y los almacena en disco en una cola
El monitor imprime resultados de jobs ya ejecutados
Ventaja: Operacin On-Line
Problema: Jobs intensivos en E/S (E/S intermedia dentro de un job) no aprovechan el 100% del
procesador. Ahora se trata de aprovechar los tiempos muertos en la CPU.

b)

(8p) Explique en qu consiste el mecanismo de sincronizacin llamado monitor.

Los monitores son una herramienta


de sincronizacin ms estructurada
que encapsula variables
compartidas junto con los
procedimientos para acceder a
ellas.
En un monitor slo uno de los
procesos puede estar activo en
cada momento, siempre hay
exclusin mutua.
Existencia de variables de
condicin que permiten suspender
tareas y devolver
momentneamente el monitor.

El dibujo no es necesario si est bien


explicado

c)

(6p) Explique el significado de: deadlock y data-race.


datarace

3 Se produce cuando dos o ms procesos acceden simultneamente a las mismas estructuras de datos
compartidas y las dejan en un estado inconsistente.

deadlock
Se produce cuando dos (o ms) procesos esperan que ocurra algn evento o cambio de estado, el cual
depende del proceso contrario sin poder avanzar para producir tal cambio de estado.

Pregunta 2 (20 puntos)


a) (10p) Qu es una CyclicBarrier de java?, explique.

10

Es un mecanismo de sincronizacin de procesos del tipo barrera. Es cclica porque puede volver a
reutilizarse varias veces. Permite establecer un punto de encuentro entre varios threads, una vez reunidos
todos continan su ejecucin normal. Existen diversos constructores y mtodos.
b) (10p) Comente un ejemplo (en palabras) en donde se puede utilizar una CyclicBarrier (debe ser
distinto al visto en el laboratorio)

10

Sort-Merge
Usarla para resolver:
cada thread ordena una cantidad de Integer y pone los resultados en una cola.
Cuando todos terminan se lanza una thread que hace el Merge.

Pregunta 3 (60 puntos)


La federacin de tenis de mesa de Chile organiza un torneo en donde todos los jugadores se enfrentan con todos.
En el torneo participan 8 jugadores, numerados de 0 a 7 que se enfrentan en 7 rondas de 4 partidos. Para disminuir
la duracin de los torneos se requiere que los partidos se jueguen en paralelo, sujeto a que se dispone de 3 mesas
identificadas como A, B, C.
Para hacer enfrentarse los jugadores x e y, en la mesa m. Usted dispone del procedimiento enfrentar(x, y, m). Este
procedimiento toma mucho tiempo y solo retorna cuando el partido finaliz. Algunos partidos pueden ser muy
cortos (3 sets) mientras otros pueden ser muy extensos (5 sets muy disputados).
Se ha programado el siguiente procedimiento para realizar el torneo pedido:

a) Para demostrar que esta solucin es incorrecta, haga diagramas de threads que muestren que ella:
i.

(10 puntos) podra ordenar que el jugador 0 se enfrente con el jugador 4 en las mesas A , B
simultneamente , no jugarse el partido entre los jugadores 1 , 5.

10

ii.

(10 puntos) Podra ordenar que el jugador 0 se enfrente con el jugador 1 por la segunda ronda cuando el
jugador 0 todava est jugando con 4 por la primera ronda en otra mesa.

10

Sino est claro o no grafica correctamente las lneas de espera se restan


2 o 3 pts.

b) (40 puntos) Modifique esta solucin para que funcione correctamente.


Considere las siguientes restricciones:
Si en una mesa se debe comenzar un partido, pero alguno de los jugadores todava est jugando un
partido previo en otra mesa, la mesa debe esperar hasta que ese partido concluya.
Usted debe usar como nica herramienta de sincronizacin los monitores de nSystem.
El procedimiento torneo retorna slo una vez que todos los partidos finalizan
#define LIBRE
0
#define OCUPADO 1

monitor
prox

espera

jugadores

struct m {
nMonitor mon;
partidos
nCondition espera;
int jugadores[8];
struct partidos[4*7]; /*inicializada con los encuentros, tal como arriba*/
int prox;
} monitor;

void torneo() {
int i;
monitor= (struct m) malloc(sizeof(struct m));
monitor->mon= nMakeMonitor();
monitor->espera= nMakeCondition(monitor->mon);
for (i= 0; i<8; i++)
monitor->jugadores[i]= LIBRE;
monitor->prox= 0;
/*lanzar las 3 mesas*/
...
/*esperar las 3 mesas*/
...
}

10

int mesa(char *m) {


nEnter(monitor->mon);
int x= partidos[prox].x;
int y= partidos[prox].y;
prox++;
while (jugadores[x]==OCUPADO && jugadores[y]==OCUPADO)
nWaitCondition(monitor->espera);
jugadores[x]= OCUPADO;
jugadores[y]= OCUPADO;
nExit(monitor->mon);
enfrentar(x, y, m);
nEnter(monitor->mon);
jugadores[x]= LIBRE;
jugadores[y]= LIBRE;
nSignalCondition(monitor->espera);
nExit(monitor->mon);
return 0;
}

2,5
10

2,5
2,5

2,5

El puntaje se asigna
completo si el uso de la
instruccin es adecuado

También podría gustarte