Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Solució 2:
int i, p, pfd[2], val=1;
if(p>0){
//proces pare espera pels fills
close(pfd[0]);
close(pfd[1]);
2
2. [2 puntos] ¿Qué semáforos y valores de inicio se necesitan para diseñar un esquema
de procesos productor y consumidor con semáforos en un vector de N elementos?
Escribir el pseudocódigo de la función: int sumar_elementos(), que devuelve la suma de
los valores de las posiciones del vector que no están vacías. Esta función no debe
ejecutarse cuando el vector está vacío y se deben usar semáforos para gestionar esta
situación y para acceder al vector. Se puede suponer un caso simple como:
0 1 2 3
out=0 in=4 N=9
s=sumar_elementos(out, in-1);
}
for(m=primero;m++;m<=ultimo)
suma=suma+vector[m];
signal(mutex);
signal(hay_elementos);
return(suma);
}
3
3. [1 punto] A partir del diagrama de tiempos de ejecución de los procesos A, B y C
indicar los estados de los procesos A, B y C cuando A aparece en tiempo 0, B en tiempo
1 y C en tiempo 5
A CPU CPU E/S CPU CPU
B CPU CPU CPU E/S CPU
C CPU E/S CPU
0 1 2 3 4 5 6 7 8 9 10
Estados de los procesos:
A EXE EXE BLQ LLEST LLEST LLEST EXE EXE
B LLEST LLEST EXE EXE EXE BLQ LLEST LLEST LLEST EXE
C LLEST EXE BLQ LLEST EXE
1 2 3 4 5 6 7 8 9 10
4
6. En un cambio de contexto entre dos procesos, ¿Qué elementos del Sistema
Operativo intervienen y qué operaciones básicas realizan?
Un ejemplo en el que dos threads ejecutan un código tan sencillo como a++; sobre una
variable compartida a. Dado que la ejecución de dicho código requiere las tres
instrucciones de máquina (load, inc y store), dependiendo del orden relativo de
ejecución de los threads el resultado será correcto o erróneo. Solamente se obtiene el
valor correcto cuando cada thread ejecuta las tres instrucciones de máquina sin
entremezclarse con las del otro, es decir, de forma atómica.
init (s, 0)
int a; /* compartida */
<<Entrada a sección crítica>> wait (s)
a++;
<<Salida de sección crítica>> signal (s)
5
8. ¿Una interrupción hardware es una llamada al sistema? Explicar la respuesta.