Download Preguntas de Laboratorio (2.5 puntos)

Document related concepts

/dev/null wikipedia , lookup

Network File System wikipedia , lookup

Setuid wikipedia , lookup

Alternate Data Streams wikipedia , lookup

Archivo COM wikipedia , lookup

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