Examen USO 2007-2008-Q1

Anuncio
Utilización de Sistemas Operativos. Examen Final
11 Enero 2008
Notas: 22/01/08. Revisión: 24/01/08 de 10.30-13.30 y de 15.00-17.00. D6-213
NOMBRE y APELLIDOS:
Preguntas de Laboratorio (2.5 puntos)
Contesta justificadamente a las siguientes preguntas. Utiliza para ello el espacio
proporcionado.
-1- Escribe la línea de comandos que liste los ficheros del directorio prueba1 que
contengan un número en la cuarta posición de su nombre
-2- Explica si existe alguna diferencia en la salida que producen cada uno de estos dos
comandos:
comando1: grep error </usr/include/errno.h
comando2: grep error /usr/include/errno.h
-3- Supón que en tú directorio actual hay un fichero Makefile que contiene la regla
correcta para obtener el objetivo denominado prog. En estas condiciones, explica a qué
es debido y qué efecto tiene el mensaje ’prog’ is up to date que obtenemos
tras ejecutar el comando make prog
-4- Supón que en un entorno UNIX te encuentras en tú directorio de trabajo y que tras
ejecutar el comando ls -l –i obtienes el siguiente resultado:
973 -rw-r--r-973 -rw-r--r-972 lrwxrwxrwx
2 marc alumne
2 marc alumne
1 marc alumne
44 2008-01-07 17:02 file
44 2008-01-07 17:02 hfile
4 2008-01-07 17:02 sfile -> file
--4a- Supón que en ésta situación ejecutas el comando rm file. Escribe cuál será el
resultado tras ejecutar de nuevo el comando ls -l –i
Utilización de Sistemas Operativos. Examen Final
11 Enero 2008
Notas: 22/01/08. Revisión: 24/01/08 de 10.30-13.30 y de 15.00-17.00. D6-213
NOMBRE y APELLIDOS:
Preguntas de Laboratorio (continuación)
--4b- Estando en la nueva situación de 4a, indica cuál es el resultado que obtienes tras
ejecutar cada uno de los siguientes comandos:
comando1: cat hfile
comando2: cat sfile
-5- Sabiendo que la variable objFolder contiene el nombre de un directorio, explica
cuál es la información que sobre sus ficheros está buscando la siguiente orden del shell
en un entorno Windows-XP:
For Each FileName in objFolder.Items
if(objFolder.GetDetailsOf(FileName, 2) = “Acceso Directo”) then
. . .
End if
Next
-6- Dado el siguiente extracto de código de un proceso servidor que utiliza el
mecanismo de comunicación de sockets, explica qué diferencia existe entre los
descriptores sfd y afd devueltos por las llamadas socket y accept
int sfd, afd;
sfd = socket(AF_INET, SOCK_STREAM, 0);
. . .
afd = accept(sfd, NULL, NULL);
Utilización de Sistemas Operativos. Examen Final
11 Enero 2008
Notas: 22/01/08. Revisión: 24/01/08 de 10.30-13.30 y de 15.00-17.00. D6-213
NOMBRE y APELLIDOS:
Preguntas de Teoría (2.5 puntos)
Contesta justificadamente a las siguientes preguntas. Utiliza para ello el espacio
proporcionado.
-1- En un entorno UNIX, explica qué es y qué significado tiene el número mágico ó
magic number que aparece al comienzo de algunos ficheros
-2- Sabiendo que la llamada al sistema exit en un entorno UNIX posee la siguiente
sintaxis: void exit(int status), explica para qué sirve y qué efecto no deseable
sobre un proceso tiene la ejecución de dicha llamada. Explica también cuándo
desaparece dicho efecto no deseable
-3- Supón que nos encontramos en un Sistema de Ficheros UNIX con tamaño de bloque
de 512B y que hemos generado un fichero core. Tras preguntar a user1 y user2
sobre cuál es el comando que utilizarían para conocer el tamaño que ocupa el fichero
core en este Sistema de Ficheros, obtenemos las siguientes respuestas:
comando de user1: _$ wc –c core
8483328 core
Respuesta de user1: “core ocupa 8483328 B”
comando de user2: _$ du –s core
16592 core
Respuesta de user2: “core ocupa 16592 x 512B = 8495104 B”
Suponiendo que los dos resultados se consideran válidos, explica a qué es debida la
diferencia de tamaño del fichero core en las respuestas de user1 y user2
Utilización de Sistemas Operativos. Examen Final
11 Enero 2008
Notas: 22/01/08. Revisión: 24/01/08 de 10.30-13.30 y de 15.00-17.00. D6-213
NOMBRE y APELLIDOS:
Preguntas de Teoría (continuación)
-4- En la siguiente invocación a la llamada lseek, explica cuál es el significado del
segundo y último parámetros (-2L y SEEK_CUR) e indica también cual será el efecto de
utilizar dicha llamada dentro del código de un programa
lseek("file",-2L,SEEK_CUR);
-5- Suponer la siguiente salida que en un entorno UNIX obtenemos al ejecutar el
comando size sobre el fichero ejecutable a.out:
_$ size a.out
text
data
79606
1536
bss
916
filename
a.out
Sabemos que ésta es una información incompleta sobre el tamaño en bytes que ocupará
en memoria el proceso que ejecute a.out: segmento de Texto (text), Datos
inicializados (data) y no inicializados (bss ó block started by symbol). Con
estos datos, indica cual será la cantidad total de memoria en bytes que necesitará el
proceso que ejecute a.out y explica por qué en la salida del comando size no
obtenemos información de ésta cantidad total
Nota: si necesitas algún dato numérico, puedes dejarlo indicado con un nombre que lo
represente de forma clara
-6- Escribe una ventaja por la que crees que sería útil disponer de una nueva función
malloc que nos permitiese seleccionar si la reserva de memoria la queremos hacer de
la zona de crecimiento dinámico de datos (Heap) ó del segmento de Pila
Utilización de Sistemas Operativos. Examen Final
11 Enero 2008
Notas: 22/01/08. Revisión: 24/01/08 de 10.30-13.30 y de 15.00-17.00. D6-213
NOMBRE y APELLIDOS:
Shell (2 puntos)
-1- (1 punto) Dentro del conjunto de metacaracteres utilizados para la redirección de la
entrada/salida de un proceso, el intérprete de comandos bash (bourne again shell)
entiende la siguiente notación: digitoA>&digitoB. Utilizar ésta notación en una línea
de comandos que ejecuta a.out, indica que se debe redireccionar el descriptor dado en
el digitoA al mismo fichero al que está asociado el descriptor del digitoB
Teniendo en cuenta lo anterior y sabiendo que bash procesa las líneas de comandos de
izquierda a derecha, explica cuál es la diferencia entre ejecutar las siguientes 2 líneas de
comandos:
Línea de comandos1: a.out >file 2>&1
Línea de comandos2: a.out 2>&1 >file
-2- (1 punto) Escribe un shellscript diseñado para ser lanzado en background y que
como máximo permanecerá vivo T segundos. Durante su tiempo de vida, el shellscript
comprobará cada S segundos qué procesos están ejecutando el programa COMM. Para
todos los procesos encontrados imprimirá un mensaje por pantalla indicando el
identificador del proceso (PID) y a continuación lo matará.
Los valores de T, S y COMM serán parámetros del shellscript. T deberá ser un valor
múltiplo de S, siendo ésta condición indispensable para que el shellscript comience la
comprobación
Utilización de Sistemas Operativos. Examen Final
11 Enero 2008
Notas: 22/01/08. Revisión: 24/01/08 de 10.30-13.30 y de 15.00-17.00. D6-213
NOMBRE y APELLIDOS:
Analizar Código (1.5 puntos)
Escribe cual es el resultado de ejecutar el siguiente programa en los 2 casos que se
indican (a y b). Supón que el ejecutable del programa se llama analizar y que
ninguna de las llamadas al sistema dará error
main()
{
int id,estado,fd;
printf("linea n1\n");
if((id = fork())==0)
{
close(1);
fd=open("salida.dat",O_WRONLY|O_CREAT|O_TRUNC,0777);
write(fd,"linea n2\n",9);
exit(1);
}
else
{
while(wait(&estado)!=id);
write(1,"linea n3\n",9);
exit(0);
}
}
a) analizar
b) analizar >salida.dat
Utilización de Sistemas Operativos. Examen Final
11 Enero 2008
Notas: 22/01/08. Revisión: 24/01/08 de 10.30-13.30 y de 15.00-17.00. D6-213
NOMBRE y APELLIDOS:
Diseñar Código (1.5 puntos)
Escribe un programa en lenguaje C para UNIX a cuyo ejecutable llamaremos greplc
El programa greplc, tras recibir como parámetros un patrón y varios nombres de
ficheros, muestra por pantalla el número de líneas y el nombre de cada fichero que
contenga el patrón. A continuación tienes indicado cómo sería la sintaxis de greplc y
un ejemplo de su funcionamiento:
sintaxis: greplc patron file1 [file2. . .fileN]
(1)
ejemplo de uso : _$ greplc main file1 file2.c file3.c
35 file2.c
40 file3.c
(1) Suponemos que el patrón main sólo aparece en file2.c y file3.c,
que file2.c tiene 35 líneas y file3.c tiene 40 líneas
En el diseño de greplc debes utilizar los ejecutables de los comandos grep y wc y
tener en cuenta las siguientes consideraciones de funcionamiento:
_$ grep patron file
muestra por pantalla todas las líneas de file que contengan patron
Considera que como resultado de su ejecución grep devuelve 0 si
encuentra alguna aparición de patron, 1 si no encuentra ninguna y 2 si se
produce algún error
_$ wc -l file
muestra por pantalla el número de líneas y el nombre de file
Descargar