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”.