Download Preguntas de Laboratorio (2.5 puntos)
Document related concepts
Transcript
Ingeniería Técnica en Informática de Gestión Utilización de Sistemas Operativos (USO). Grupo 20 Prueba Parcial. 6 Mayo 2008 NOMBRE y APELLIDOS: Preguntas de Laboratorio (2.5 puntos) Contesta justificadamente a las siguientes preguntas. Utiliza para ello el espacio proporcionado -1- Supón un usuario user1 que se encuentra en su directorio de trabajo. Explica qué intenta hacer user1 con la siguiente línea de comandos: ls -i [aeiou]???? -2- Escribe la línea de comandos que utilizarías para mostrar el nombre del fichero con mayor número de enlaces que hay en el directorio actual -3- Escribe cómo asignarías desde el shell el resultado de la anterior línea de comandos a la variable maxenlaces. Dí también cómo mostrarías el contenido de dicha variable -4- Escribe un ejemplo de fichero Makefile que permita que con una única invocación de make donde no se especifica ningún objetivo se creen los dos ficheros ejecutables de los programas file1.c y file2.c -5- En un entorno UNIX el usuario user ha escrito un programa de uso de la llamada al sistema fork() y a su ejecutable lo ha llamado usofork. Tras ejecutar usofork en background, el comando ps –lu user le muestra la siguiente información: F 4 0 1 0 S S R Z R UID 139 139 139 139 PID 7871 1165 1166 1168 PPID C PRI NI 7870 0 75 0 7871 99 85 0 1165 0 76 0 7871 0 75 0 ADDR SZ - 1090 337 0 623 WCHAN - TTY pts/0 pts/0 pts/0 pts/0 TIME 00:00:00 00:00:28 00:00:00 00:00:00 CMD bash usofork <defunct> ps Explica razonadamente cuál es la situación no deseable que está representando la información anterior y dí al menos 2 formas de hacerla desaparecer Ingeniería Técnica en Informática de Gestión Utilización de Sistemas Operativos (USO). Grupo 20 Prueba Parcial. 6 Mayo 2008 NOMBRE y APELLIDOS: Preguntas de Laboratorio (continuación) -6- Supón que creas el fichero file2 con el comando cp file file2 y que a continuación ejecutas el comando ls -l file2 y obtienes la siguiente información: -rw-r-xr-- 1 user alumne 33 2008-04-30 18:50 file2 Escribe cuál será el valor que debe tener umask si sabes que el fichero file tiene activos todos los permisos para todos los usuarios -7- Sabiendo que la variable objFolder contiene el nombre de un directorio, completa el siguiente extracto de shellscript para Windows-XP donde se pretende buscar todos sus subdirectorios. Escribe sólo qué valores pondrías en las variables A y B: For Each FileName in objFolder.Items if(objFolder.GetDetailsOf(FileName, A ) = B ) then . . . End if Next A = B = -8- Escribe al menos 2 comandos que utilizarías desde el Intérprete de Comandos de un sistema para crear un hardlink del fichero con nombre prueba Ingeniería Técnica en Informática de Gestión Utilización de Sistemas Operativos (USO). Grupo 20 Prueba Parcial. 6 Mayo 2008 NOMBRE y APELLIDOS: Preguntas de Teoría (2.5 puntos) Contesta justificadamente a las siguientes preguntas. Utiliza para ello el espacio proporcionado -1- De las siguientes palabras selecciona aquella que mejor se ajusta a las definiciones que tienes a continuación: driver, llamadas al sistema, interrupción, instrucción/es privilegiada/s, función/es de librería (a) el evento mediante el cual un dispositivo puede avisar al sistema operativo de que ha finalizado una operación de entrada/salida se denomina ………………………………... (b) el código de un programa se dice que es más portable cuando está escrito en un lenguaje de programación donde se utilizan ………………………………..................... (c) el evento mediante el cual un programa puede avisar al sistema operativo de que desea utilizar un determinado dispositivo se denomina ………………………………..... -2- Para cada una de las siguientes afirmaciones relacionadas con la evolución de los sistemas operativos, marca aquella opción que consideres correcta: cierta (C) ó falsa (F) (a) el monitor era el programa residente en memoria que hacía el papel de sistema operativo en los computadores de la 2ª Generación (1955-1965) C F (b) los interfaces gráficos de usuario (GUIs) sólo producen ventajas para los sistemas de tiempo compartido al mejorar el tiempo de respuesta del usuario C F (c) un núcleo pequeño de sistema operativo (μkernel) hace que el sistema sea poco seguro al permitir que los usuarios realicen la mayoría de las operaciones C F -3- Supón que te encuentras en un entorno UNIX y que se acaba de generar en tú directorio de trabajo un fichero core que ocupa en disco 139264 bytes. Sabes que el causante de éste fichero core sólo puede ser uno de tus dos ficheros ejecutables en formato ELF a.out1 ó a.out2. De los comandos que conoces relacionados con la ocupación de espacio de los ficheros (size, ls, du, df …), escribe cuál usarías y cómo harías para averiguar cuál de los dos ficheros ejecutables causó la generación del core Nota: utiliza en tú respuesta las siguientes suposiciones: (1) que este sistema genera un tipo de ficheros core “parciales” donde sólo se vuelcan a disco los segmentos de la imagen del proceso que no son creados dinámicamente (2) que en ninguno de los programas fuentes con los que se generaron a.out1 y a.out2 se dejaron variables sin inicializar Ingeniería Técnica en Informática de Gestión Utilización de Sistemas Operativos (USO). Grupo 20 Prueba Parcial. 6 Mayo 2008 NOMBRE y APELLIDOS: Preguntas de Teoría (continuación) -4- En un sistema operativo de tiempo compartido, dí al menos dos razones por las que es posible que un proceso que está en ejecución (estado running) pase a preparado (estado ready) -5- En un sistema de ficheros formateado para UNIX, dí cuántos accesos a disco se necesitarán, como mínimo, para obtener el primer bloque de datos del fichero /usr/marc/mifile Nota: debes dar una respuesta justificada y utilizar las siguientes suposiciones: (1) el número de i-nodo del directorio raíz es conocido y se encuentra en memoria (2) el fichero /usr/marc/mifile es un softlink al fichero /bin/usr/file -6- Sabiendo que en Windows-XP podemos usar la función CreateProcess para crear un nuevo objeto proceso donde ejecutar otro programa, dí cuáles de los diez argumentos del siguiente ejemplo de uso de ésta función están relacionados con la ventana en la que va a ejecutarse el nuevo proceso: CreateProcess(NULL, ”otro_prog”, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi) -7- Un administrador de sistemas acaba de recibir cuatro discos y el encargo de decidir una disposición de los mismos tipo RAID-0, RAID-1 ó RAID-6. Explica cuál debería ser su decisión sabiendo que el sistema donde se van a instalar los discos va a ser usado por aplicaciones que necesitan mucha velocidad de cálculo y que generan resultados que son muy importantes Ingeniería Técnica en Informática de Gestión Utilización de Sistemas Operativos (USO). Grupo 20 Prueba Parcial. 6 Mayo 2008 NOMBRE y APELLIDOS: Shellscript (1.5 puntos) -1- Indica justificadamente cual es la función del siguiente shellscript #!/bin/bash i=11 k=0 for j in * do m=`ls -l $j | tr -s ' ' | cut -d' ' -f8 | wc -c` if test $m -gt $i then mv $j $k k=`expr $k + 1` fi done echo $k -2- Explica cual es la utilidad de la línea for j in * en el anterior shellscript y dí qué pasaría si se cambia por la nueva línea: for j in $* Ingeniería Técnica en Informática de Gestión Utilización de Sistemas Operativos (USO). Grupo 20 Prueba Parcial. 6 Mayo 2008 NOMBRE y APELLIDOS: Analizar Código (2 puntos) Suponiendo que el ejecutable del siguiente programa se llama programa, indica justificadamente el resultado que se obtiene al invocarlo de la siguiente forma: programa 11 Responde de forma clara a la pregunta ayudándote del diagrama de procesos creados (relación padre/hijo) y de la información que imprime cada uno. Puedes suponer que ninguna de las llamadas al sistema dará error main(int argc, char *argv[]) { int i,n; char *argu[]={"echo","hola",NULL}; switch(argc){ case 1: execvp(argu[argc-1],&argu[argc-1]); case 2: n=atoi(argv[1]); for(i=0; i<=n; i++) if(i%2==0){ fork(); if(wait(NULL)>0) execlp(argv[0],argv[0],NULL); } break; default: exit(1); } exit(0); } Ingeniería Técnica en Informática de Gestión Utilización de Sistemas Operativos (USO). Grupo 20 Prueba Parcial. 6 Mayo 2008 NOMBRE y APELLIDOS: Diseñar Código (1.5 puntos) Escribe un programa en lenguaje C para UNIX a cuyo ejecutable llamaremos creaprocs Tú programa debe recibir dos parámetros que serán números positivos (cond1) y el primer número mayor ó igual que el segundo (cond2). Si creaprocs se invoca con un número de parámetros distinto ó si alguna de esas dos condiciones (cond1, cond2) no se cumple, el programa finalizará con código de finalización 1. Cuando creaprocs se invoca de forma correcta, crea tantos procesos como indica su primer parámetro. Cada uno de los procesos creados ejecutará un código que itera un número aleatorio de veces comprendido entre 0 y el valor del segundo parámetro. Por su parte, el proceso padre esperará la finalización de todos sus hijos pero sólo escribirá por pantalla el PID de aquellos procesos que ejecutaron un código que iteraba un número impar de veces