Qüestions de teoria (2.5 punts)

Anuncio
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Notas: 17-01-11
Nom i cognoms:.....................................................................................................................................
Qüestions de teoria (2.5 punts)
Contesteu justificadament, però sense excedir-vos de l'espai disponible, les següents preguntes.
1. Què vol dir que una instrucció del llenguatge màquina sigui privilegiada? Indica tres
instruccions del llenguatge màquina que siguin privilegiades.
2. Què entenem per “Independència de dispositius”?
3. Què vol dir que una crida al sistema sigui bloquejant?
4. El tercer paràmetre de la crida al sistema read de Unix indica el nombre de bytes que
demanem llegir. És possible que el resultat indiqui que s'han llegit menys caràcters que els
demanats?, i més caràcters? En cas afirmatiu, poseu un exemple.
5. Si utilitzem un pendrive i el volem extreure del port USB, perquè és aconsellable indicar al
SO que el volem extreure?
6. Quins són els objectius d'una organització de discos en RAID-5?
7. L'operador & del llenguatge C aplicat a una variable ens retorna la direcció de memòria on
s'emmagatzema la variable. Ara bé, aquesta adreça és lògica o física?
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Notas: 17-01-11
Qüestions de laboratori (2.5 punts)
Contesteu justificadament, però sense excedir-vos de l'espai disponible, les següents preguntes.
Podeu assumir que les següents preguntes fan referència a l'entorn de treball Linux (ubuntu) utilitzat
a les classes de laboratori de l'assignatura.
1. Al directori actual hi ha el fitxer executable file. L'invoques però apareix el missatge d'error
Command not found. A què es degut? Digues dues formes d'arreglar el problema.
2. tee és un filtre present a les distribucions Linux. Us adjuntem un fragment de la seva ajuda.
user@host:~$ tee ­­help Usage: tee [OPTION]... [FILE]... Copy standard input to each FILE, and also to standard output. ...
A partir d'aquesta descripció, indiqueu què fa la línia de comandes següent:
ls ­l | tee file1 | grep ^dr | tee file2 | grep ^drwr > file3
3. Escriu una línia de comandes que mati tots els teus processos que estan executant la comada
firefox. Observació: no és possible utilitzar la comanda killall.
4. Quines diferències hi ha entre un hardlink i un softlink? Com ens mostra cada tipus d'enllaç
la comanda ls?
5. Què podem trobar al directori /proc?
6. Suposa que la implementació d'un servidor www crea un procés fill cada cop que rep una
petició http. En aquest escenari, seria problemàtic que la implementació no invoqués mai la
crida al sistema wait? En cas afirmatiu, quin problema podria causar.
7. Com s'interpreta el missatge d'error Segmentation fault? Que faries per corregir-lo?
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Shellscript (1 punt)
1. Indiqueu justificadament quina és la
funció del següent shellscript.
2. Volem eliminar les 3 línies marcades
en negreta. Com caldria modificar la
resta de línies existents del shellscript
tot mantenint la funcionalitat global
del shellscript?
Notas: 17-01-11
#!/bin/bash for p in `ps aux | tr ­s ' ' | cut ­d' ' ­f2` do if test $p != PID then if test $1 ­lt $p then if test $2 ­gt $p then kill ­9 $p fi fi fi done Com a referència, a continuació es mostra un exemple del format de sortida de la comanda ps aux
user@host:~$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2884 1788 ? Ss 08:45 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 08:45 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 08:45 0:01 [ksoftirqd/0] ...
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Notas: 17-01-11
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Notas: 17-01-11
Nom i cognoms:.....................................................................................................................................
Analizar código (2 puntos)
Sabiendo que programa.c es el código fuente en lenguaje C para UNIX del ejecutable programa,
explica cuál será el resultado que se obtiene tras ejecutar:
_$ ./programa 4 Hello World
Añade a tú respuesta el dibujo del Diagrama de Procesos generado durante la ejecución del anterior
comando. Completa para ello el diagrama de la siguiente hoja donde debes indicar la relación
Padre  Hijo y para cada proceso escribir qué mensaje imprime y/o qué programa ejecuta (valores
tras : )
/* programa.c */
char *arg[3]={"date","who","pwd"};
int i,j=2;
void escribe(char *s)
{
write(1,s,strlen(s));
if(!fork())
execlp(arg[i],arg[i],NULL);
wait(NULL);
}
int main(int argc, char *argv[])
{
if(argc==4){
for(i=0;i<(atoi(argv[1])/j);i++)
if(i%2==0){
if(!fork()){
escribe(argv[i+j]);
exit(0);
}
wait(NULL);
}
else{
if(!fork()){
escribe(argv[i+j]);
exit(0);
}
wait(NULL);
write(1,argv[i+j­1],strlen(argv[i+j­1]));
write(1,argv[i+j],strlen(argv[i+j]));
execlp(argv[i­1],argv[i­1],NULL);
}
}
if(argc==1) execlp(arg[j],arg[j],NULL);
return 0;
}
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Explicación:
Notas: 17-01-11
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Diagrama de Procesos:
P
:
Notas: 17-01-11
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Notas: 17-01-11
Escribir código (2 puntos)
Escribe un programa en lenguaje C para UNIX a cuyo ejecutable llamaremos lnopat
El programa lnopat, tras recibir como parámetros un patron y un nombre de fichero, muestra
por pantalla el número de líneas de fichero que no contienen el patron. A continuación tienes
indicado cómo sería la sintaxis de lnopat y un ejemplo de su funcionamiento:
sintaxis: lnopat patron file
ejemplo(1): _$ lnopat main file.c
44
(1) Suponemos que file.c tiene 45 líneas y que el patrón main sólo aparece en 1 de ellas
En el diseño del programa lnopat.c debes cumplir lo siguiente: solo puedes utilizar el ejecutable
de un comando llamado nopat y debes invocarlo usando la llamada al sistema execvp
El anterior comando nopat, únicamente tiene la siguiente funcionalidad:
_$ nopat patron file
muestra por la salida estándar todas las líneas de file que no contienen patron
Examen final de USO (12-1-2011)
Revisión: 18-01-11. D6-221: de 11.00-12.00 y de 16.00-17.00
Notas: 17-01-11
Descargar