Parcial de USO (24-5

Anuncio
Parcial de USO (24-5-2007)
Nom i Cognoms:...............................................................................................................................
Qüestions de laboratori (3 punts)
Contesteu justificadament les següents preguntes a l’espai proporcionat:
1.- A un shellscript escrit en llenguatge bash apareix la comanda echo `cat f1 | grep xxx`
Escriviu una comanda equivalent més simple (indiqueu per què és equivalent) ?
2.- Intenteu executar un fitxer executable present al directori actual i el shell mostra l’error Command not
found. A què és degut l’error? Indiqueu dues possibles solucions per poder executar el programa (sense
copiar-lo a un altre directori)?
3.- Sobre un sistema de fitxers de Unix, un usuari únicament té activats els permísos wx sobre un fitxer
de tipus directori. Podrà situar-se sobre el directori? Podrà llistar-ne els seus fitxers? Podrà crear algun
fitxer al directori? Podrà esborrar algun fitxer del directori?
4.- En intentar executar un programa apareix el missatge d’error error while loading shared libraries:
xxxxxxx: cannot open shared object file: No such file or directory. A què és degut l’error? Com pot
solucionar-se?
5.- Obriu dues finestres sobre Unix. És possible que una comanda executada a una finestra escrigui els
seus resultats a l’altra? En cas afirmatiu, indiqueu de quina forma?
6.- Treballant sobre Unix, quin efecte té prèmer Ctrl-Z sobre una finestra on s’executa un programa en
mode foreground? I sobre una finestra on s’executa un programa en mode background?
7.- Com obtindrieu l’identificador d’un procés (per exemple, el del navegador web) a un sistema
Windows-XP ?
Parcial de USO (24-5-2007)
Nom i Cognoms:...............................................................................................................................
Qüestions de teoria (3 punts)
Contesteu justificadament les següents preguntes a l'espai proporcionat:
1.- Indicad para qué casos el Sistema Operativo utiliza las interrupciones y en qué se diferencian éstas
de las excepciones.
2.- ¿Qué desventajas tiene un procesador con un solo modo de ejecución respecto a otro con varios
modos de ejecución?
3.- Un programa P, cuyo ejecutable fue generado en la máquina A, se desea ejecutar en la máquina B.
La máquina B tiene la misma arquitectura y el mismo Sistema Operativo que la máquina A. Sin embargo
las versiones de ciertas librerías que utiliza el programa P son diferentes en ambas máquinas. Indicad
qué acciones serán necesarias para que el programa P pueda funcionar correctamente en la máquina
B según el modo en el que se montaron (linkaron) las librerías al programa en cuestión.
4.- ¿De qué manera el proceso hijo puede informar al proceso padre sobre el resultado de su ejecución?
En caso que el proceso hijo acabe correctamente, ¿es posible informar de diferentes estados?, ¿de qué
forma?
5.- Indicad varios escenarios (3) en los que la invocación a la llamada al sistema exec retorne error.
6.- Teniendo en cuenta un sistema de ficheros tipo Unix como ext2, ¿por qué es útil limitar el número
de ficheros que puede crear un usuario? ¿Sería necesario limitar también su cuota de disco?
7.- Describid las diferencias entre un RAID tipo 4 y uno tipo 5.
Shellscript (1.5 punts)
1.- Indiqueu justificadament quina és la
funció del següent shellscript.
2.- Simplifiqueu el codi del shellscript.
Analitzar codi (1 punt)
Indiqueu justificadament quin seria el
resultat d’executar el següent programa
(nombre de processos creats, relació
pare/fill entre els processos creats,
informació impresa per cad procés,,...).
Podeu assumir que cap crida al sistema
retornarà error.
#!/bin/bash
i=0
for j in *
do
for k in $j/*.c
do
a=`grep while $k 2>/dev/null | wc -l‘
if test $a -ge 1
then
i=`expr $i + $a`
fi
done
done
echo $i
main () {
int i=4, n;
while (((n=fork()) ==0) && (i>0)) {
printf (“%d”, n);
i--;
}
if (n==0)
printf (“%d”, i);
}
Escriure codi (1.5 punts)
a) Escribid un programa para ser ejecutado sobre Unix tal que ejecute 3 programas (prog1, prog2 y
prog3) en paralelo (concurrentemente). Se debe esperar la finalización de cada uno de los programas
y mostrar su pid y su código de finalización (status) por pantalla.
b) Escribid el pseudocódigo de un programa que realice lo mismo que a) pero para ser ejecutado sobre
Win32.
Observaciones: Es preciso especificar todos los argumentos de las llamadas al sistema Unix; de las
llamadas Win32 sólo es preciso especificar los argumentos fundamentales. No es preciso hacer el
tratamiento de errores en las llamadas al sistema. No es preciso implementar el programa en codi C
sintácticamente correcto, es posible utilizar un pseudo-código “razonable”.
Descargar