Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ICI
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).
b)
c)
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.
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.
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
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
2,5
10
2,5
2,5
2,5
El puntaje se asigna
completo si el uso de la
instruccin es adecuado