28 de Junio de 2016
Cuestin 1. (1 punto) Considera un sistema de ficheros tipo ext-3. Traduce la informacin de este sistema de Ficheros
a uno de tipo FAT. Los bloques son de 32 B.
i-nodo 2 4 7 8 9 10 11 16
enlaces 4 3 2 1 1 1 1 2
Tipo D F
Directo 2 4 5 10 15 9
Directo null null null 6 12 8 null null
Indirecto null null null null null 7 null null
Tabla de nodos-i
1 2 3 4 7
. 2 . 4 . 16 . 18
.. 2 .. 2 .. .. 19
home 4 estudiante 16 Examen.odt 8
usr 7 tmp.txt 11 Notas.txt 9
Solucion.odt 10
Lista de bloques relevantes (los bloques que no aparecen aqu contienen datos o estn vacos)
Cuestin 2. (1 punto) Hilos: contesta a las preguntas sobre el siguiente cdigo, razonando tu respuesta.:
1
a) Cuntos hilos se crean?
b) Cuntas veces se ejecuta cada hilo?
c) Cul es el valor final de variable_global?
d) Qu cambiara de las respuestas anteriores si no hubiramos escrito los pthread_join?
Cuestin 3. (1 punto) Contestar a las siguientes preguntas sobre diferentes formas de planificar la ejecucin de este
conjunto de tareas.
a) Cul ser la ltima tarea en ejecutarse si se aplica JSF no expropiativo? Qu productividad se consigue?
b) Cul sera el tiempo total de ejecucin con Round Robin y q=3? Qu productividad se consigue?
c) Qu tarea se estar ejecutando en el ciclo 12 si se aplica un algoritmo expropiativo basado en prioridad que tome
como tarea ms prioritaria la de menor nmero en el campo Prioridad?
Cuestin 4. (1 punto) Un programador ha escrito el siguiente cdigo para resolver un problema tipo lector/escritor..
Contestar a las siguientes preguntas:
pthread_mutex_destroy(&cerrojo);
exit(0);
}
2
Cuestin 5. (1 punto) Un proceso en UNIX ejecuta el siguiente cdigo:
int main(void) if (PIDhijo == 0)
{ {
pid_t PIDhijo; int j;
pid_t soy, papa; int numB=0;
for (j = 0; j < 14; j++)
int child_status; {
int var= 7; var=var+1;
}
soy=getpid(); /* PID del proceso, antes de ser padre */ while((c=getc(archivo1))!=EOF)
{
archivo1=fopen("prueba.txt","r"); numB = numB+1;
PIDhijo = fork(); }
exit(0);
if (PIDhijo == -1) /* no se pudo realizar le fork, no hay }
proceso hijo */ else
{ {
int j;
fprintf(stderr, "can't fork, error %d\n", errno); int numB=0;
exit(EXIT_FAILURE); for (j = 0; j < 6; j++)
} {
var=var+1;
soy = getpid(); }
while((c=getc(archivo1))!=EOF)
papa = getppid(); {
numB = numB+1;
}
wait(&child_status);
if (fclose(archivo1)!=0)
exit(0);
}
return 0;
}
3
TDDA padre
0 230 TFA (intermedia)
1 564 Pos L/E num nodo-i permisos cont. refs.
2 28 ...
3 12 12 57
4 13
5 14
...
TDDA hijo
0 230 Tabla nodos-v
1 564 Nodo-v Contador
2 28 ...
3 Info nodo-57
4 ...
5
Cuestin 6. (1 punto) Dada la siguiente secuencia de referencias a direcciones de memoria virtual generadas por un
slo programa en un sistema con paginacin pura:
0x3A0, 0x4B8, 0x210, 0x320, 0x40C, 0x6F8, 0x504, 0x122, 0x22C, 0x43A, 0x380, 0x6D2, 0x502
REF. 0x3A0 0x4B8 0x210 0x320 0x40C 0x6F8 0x504 0x122 0x22C 0x43A 0x380 0x6D2 0x502
#pag
m0
m1
m2
m3