Subido por Carlos Moreno

sol DyASO 2021 Febrero Segunda Semana

Anuncio
DISEÑO Y ADMINISTRACIÓN DE SISTEMAS OPERATIVOS
Material permitido:
Texto base y calculadora.
Tiempo: 90 minutos.
Febrero de 2021 AvEx
Aviso 1: El formato y el orden en el que se presentan las
preguntas en la herramienta AvEx es diferente para cada
estudiante.
Examen AvEx
Debido a las circunstancias excepcionales provocadas por el COVID19 ha sido necesario adaptar el
modelo de Examen de Diseño y Administración de Sistemas Operativos para su evaluación en la
plataforma AvEx.
Cada estudiante ha realizado un examen diferente cuyas preguntas han sido seleccionadas
aleatoriamente de la siguiente forma:
Bloque 1 (5 preguntas de 1 punto de entre las siguientes)
Número 1
(1 punto). Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas:
a) (0.5 p) El mayor problema de seguridad en un sistema de ficheros s5fs proviene del
superbloque.
b) (0.5 p) Una de las principales limitaciones del planificador del UNIX BSD4.3 es que presenta
inversión de prioridades.
RESPUESTA:
A) Es cierta, El mayor problema de seguridad proviene del superbloque que contiene información vital
sobre el sistema de ficheros como por ejemplo la lista de bloques libres y el tamaño de la lista de nodos-i
libres y cada sistema de ficheros contiene una única copia de su superbloque. (ver 8.8.8 Análisis del s5fs)
B) También es cierta, la planificación tradicional de UNIX tiene inversión de prioridades (ver 5.4.4
Análisis)
Número 2
(1 punto) Explica razonadamente si las siguientes afirmaciones son verdaderas o falsas:
a) (0.5 p) En un intérprete de comandos de UNIX la pulsación de las teclas [control + w] permite
borrar todo el contenido de la línea de órdenes.
b) (0.5 p) En un sistema UNIX la entrada de un fichero en un directorio constituye un enlace
simbólico para el fichero.
RESPUESTA
A) Falso, sólo borra una palabra “word”, para borrar toda la línea hay que pulsar ctrl+u (ver página 83).
B) Falso, cada entrada de un directorio es un enlace duro al fichero que apunta (ver 8.5 Enlaces
simbólicos)
Número 3
(1 punto) Se tiene un computador con una memoria principal de capacidad CMP= 16 Mbytes y un tamaño
de página SP = 1Kbyte. Calcula el número total de marcos de página.
RESPUESTA
El número de marcos de página se calcula a partir de la fórmula 5 del tema 7:
NTM=CMP/SP= 24·220/210=214=16384 marcos de página.
Número 4
(1 punto) Razona brevemente si es verdadera o falsa cada una de las siguientes afirmaciones:
a) (0.5 puntos) Un cambio de contexto es el conjunto de tareas que debe realizar el núcleo para
aplazar o finalizar la ejecución del proceso actualmente en ejecución y comenzar o continuar con la
ejecución de otro proceso.
b) (0.5 puntos) Las interrupciones son atendidas en modo usuario dentro del contexto del proceso que
se encuentra actualmente en ejecución, aunque dicha interrupción no tenga nada que ver con la
ejecución de dicho proceso.
RESPUESTA
A) Cierto, ver página 144.
B) Falso, son atendidas en modo núcleo, ver 3.7 Tratamiento de las interrupciones
Número 5
(1 punto) Razona brevemente si es verdadera o falsa cada una de las siguientes afirmaciones:
a)
(0.25 puntos) Unix clasifica la interfaz del driver en función de que este sea de modo bloque o de
modo carácter.
b)
(0.25 puntos) El núcleo de UNIX sólo llama a un driver cuando se produce una interrupción en el
dispositivo asociado.
c)
(0.25 puntos) La parte superior del driver está aislada del área U del proceso invocador. Esto
produce una protección efectiva de la memoria.
d)
(0.25 puntos) Todos los drivers controlan dispositivos físicos.
RESPUESTA
A es correcta (ver la página 418 del libro base). El resto son falsas ya que el núcleo llama al driver en
muchos más supuestos (pag 419) como en el arranque del dispositivo las operaciones E/S o las
instrucciones de control. La parte superior del driver puede acceder al área U del proceso invocador, la
parte inferior no. Y la última es falsa debido a la existencia de pseudodispositivos como men o /dev/null
(pag 418).
Número 6
(1 punto) En un directorio existe un único fichero de texto “prueba.txt” cuyo contenido es “hola”, el
propietario del fichero invoca las siguientes acciones en un terminal:
$ ln prueba.txt texto.txt
$ ln -s prueba.txt datos.txt
$ rm prueba.txt
¿Después de invocar dichas acciones cuál de las siguientes afirmaciones es cierta?
a) (0.25 puntos) El contador de referencias de “datos.txt” vale 2.
b) (0.25 puntos) Al invocar “cat datos.txt” se imprime “hola”.
c) (0.25 puntos) Al invocar “cat texto.txt” se imprime “hola”.
d) (0.25 puntos) Al invocar “cat prueba.txt” se imprime “hola”.
RESPUESTA
La única afirmación cierta es la C).
El usuario primeramente crea un enlace duro a prueba.txt (usando ln) cuyo nombre es texto.txt,
esto incrementa el contador de referencias de dicho nodo-i (que en caso de no existir más referencias
pasaría a valer 2). La segunda sentencia crea un enlace simbólico (ln –s) de nombre datos.txt hacia
el mismo archivo prueba.txt pero esto no afecta en absoluto al nodo-i del archivo prueba.txt.
Finalmente, la tercera sentencia borra el nombre prueba.txt pero no el archivo puesto que todavía
existe un enlace duro que apunta hacia él (texto.txt).
La respuesta A) es falsa puesto que el fichero datos.txt recién creado tiene el contador de referencias
a 1 (es un enlace simbólico, no un enlace duro). B) También es falsa ya que el enlace simbólico
datos.txt apunta hacia un nombre que ya no existe y se producirá un error al intentar acceder a él. C)
es verdadera ya que el fichero original cuyo contenido era “hola” sigue existiendo y es accesible a través
del enlace duro “texto.txt”. d) es falso ya que el nombre “prueba.txt” ha sido borrado y al intentar
leerlo se producirá un error.
Número 7
(1 punto) Razona brevemente si es verdadera o falsa cada una de las siguientes afirmaciones:
Si debido a un fallo en la alimentación se corrompe la lista de bloques libres del sistema de un sistema de
ficheros s5fs….
a) (0.25 puntos) El disco queda inutilizable.
b) (0.25 puntos) No ocurre nada puesto que la lista de bloques libres sólo sirve para localizar
rápidamente espacio libre en el disco.
c) (0.25 puntos) Es necesario arreglar el sistema de ficheros usando las herramientas que
proporciona el sistema.
d) (0.25 puntos) Gracias al Journaling el sistema s5fs es capaz de detectar y arreglar el error
automáticamente cuando se reinicie.
RESPUESTA
A es Falso, el problema puede (y debe) solucionarse usando fsck o herramientas similares (ver 8.9
Comprobación del estado de un sistema de ficheros) por ese mismo motivo C) es cierto.
B Es falso ya que, es necesario hacer la reparación, de lo contrario en caso de que un bloque aparezca
en la lista de bloques libres cuando en realidad está ocupado corre el peligro de ser sobrescrito por otro
fichero perdiéndose sus datos. Esto es especialmente grave si el fichero es un directorio (todos los
archivos podrían quedar huérfanos). Además, si un bloque no está ocupado ni tampoco en la lista de
bloques libres el sistema de ficheros no podrá utilizarlo (lo que es un desperdicio de espacio, pero no tan
grave como la pérdida de datos).
D) También es falso ya que s5fs no implementa Journaling (ver 8.12.1.a Journaling)
Número 8
(1 punto) Razona brevemente si es verdadera o falsa cada una de las siguientes afirmaciones:
a) (0.5 puntos) Un sistema UNIX BSD4.3 es no expropiable, es decir, si un proceso se está
ejecutando en modo núcleo no se le puede expropiar el uso de la CPU para que la use otro
proceso aunque éste sea más prioritario.
b) (0.5 puntos) El núcleo suministra poco apoyo para el almacenamiento temporal en los dispositivos
de modo carácter.
RESPUESTA
A verdadera, El núcleo tradicional de UNIX es estrictamente no expropiable. Es decir, si el proceso actual
se encuentra en modo núcleo (debido a una llamada al sistema o a una interrupción), no puede ser
forzado a ceder la CPU a un proceso de mayor prioridad (ver 5.4 Planificación tradicional en UNIX).
B verdadera La interfaz de los dispositivos modo bloque suministra un apoyo razonable para la asignación
y gestión del espacio de almacenamiento temporal (buffers). No obstante, no existe este esquema
uniforme para los dispositivos modo carácter (véase 9.6.1 Motivación).
Número 9
(1 punto) Razona brevemente si es verdadera o falsa cada una de las siguientes afirmaciones:
a)
b)
c)
d)
(0.25 puntos) d_close() es invocado cada vez que un proceso deja de usar un dispositivo.
(0.25 puntos) c_open() se encarga de la apertura de dispositivos de modo carácter.
(0.25 puntos) b_open() se encarga de la apertura de los dispositivos de modo bloque.
(0.25 puntos) d_strategy() puede modificar el orden en el que se realizan las operaciones de E/S.
RESPUESTA
A) es falsa ya que d_close() se invoca cuando se libera la última referencia al dispositivo, es decir, cuando
ningún proceso tiene este dispositivo abierto. B) y C) son falsas ya que existe un único método d_open()
que puede abrir dispositivos de tipo bloque y caracter. D) es cierta: d_strategy() se llama así ya que el
driver puede usar alguna estrategia para reordenar las peticiones pendientes con objeto de optimizar el
rendimiento del dispositivo (ver 9.4.4 Puntos de entrada de un driver).
Bloque 2 (1 pregunta de 2 puntos de entre las siguientes)
Número 10
(2 puntos) Se parte del fichero ordinario test, con permiso de lectura y escritura para el propietario, y
permisos de lectura para el resto de los usuarios. Los bits S_ISUID , S_ISGID y S_ISVTX están
desactivados. Escriba los comandos que hay que aplicar sucesivamente para para que los permisos del
fichero sigan la siguiente secuencia:
a)
b)
c)
d)
-
rwrwrwrw-
---w-w-w-
r—rwrwx
rwt
RESPUESTA
Existen múltiples formas válidas de hacerlo, a continuación, se muestra una de ellas.
Se parte de la siguiente máscara de modo simbólica:
- rw- r-- r-A) Es necesario eliminar el permiso de lectura para el grupo, para ello puede usarse la siguiente orden:
$ chmod g-r test
B) Basta con añadir permisos de lectura a todos los usuarios
$ chmod a+w test
C) Se requiere aplicar permisos de ejecución al resto de usuarios, por ejemplo, usando la siguiente orden:
$ chmod o+x test
D) La diferencia respecto al modo anterior que en octal es 0627 es que en este caso el sticky bit está
activado (t). Para activar dicho bit basta con hacer:
$ chmod 1627 test
Número 11
(2 puntos) Supóngase que el directorio de trabajo actual de un usuario contiene tres ficheros ordinarios
(datos, foto.jpg, listas.txt) y tres subdirectorios (fotos, videos, correo). Explica
razonadamente cual sería el resultado de la ejecución de las siguientes órdenes desde la línea de
comandos ($) de un terminal UNIX:
a) (0.5 p) $ echo *s
b) (0.5 p) $ echo *
c) (0.5 p) $ echo foto?
d) (0.5 p) $ echo foto*
RESPUESTA
A) El comodín se expande a un número cualesquiera de caracteres de modo que se muestran todos los
ficheros que acaben en “s”, es decir “datos fotos videos”
B) El comodín se expande a todos los ficheros y directorios y se muestra “correo datos foto.jpg fotos
listas.txt videos”
C) La interrogación se expande a un carácter por lo que se muestra “fotos” pero no foto.jpg
D) Se muestran todos los ficheros que comiencen por “foto” es decir “foto.jpg fotos”
Bloque 3 (1 problema de 3 puntos)
Problema (3 puntos)
(3 puntos) Conteste razonadamente a los siguientes apartados:
a) (2 p) Explique brevemente qué hace el siguiente programa y cuál es su salida cuando el código se
compila en el fichero ejecutable examen, se ejecuta con la orden ./examen DyASO y no se
produce ningún error.
b) (0.5 p) Si no se ejecutase la línea [21] ¿Qué ocurriría?
c) (0.5 p) ¿Por qué no se usan instrucciones de espera (wait) ni es necesario imprimir
inmediatamente las salidas (fflush) para que la salida sea siempre la misma y no haya condiciones
de carrera?
RESPUESTA
Parte A:
El programa comprueba que hay dos argumentos de entrada, el primero es el nombre del ejecutable y el
segundo “DyASO”. En caso contrario emite un mensaje de error y sale del programa (exit) con código
de retorno -1.
Entonces, mediante la función signal asocia la señal SIGALARM con la función fun1, esto significa que
cuando se reciba la citada señal se ejecutará la función fun1. La sentencia if comprueba si se ha
producido un error y en caso afirmativo imprime dicho error con perror y finaliza el programa con código
de retorno -2.
A continuación, la llamada a sistema time almacena en la posición de memoria donde se encuentar x el
tiempo actual medido en segundos (desde el 1 de enero de 1970).
Hecho esto el proceso realiza la llamada al sistema alarm pasándole 7 como argumento, esto programa
una alarma de tiempo real que se disparará transcurridos 7 segundos.
Seguidamente la llamada al sistema pause que detiene el proceso hasta que reciba una señal que no
esté bloqueada o ignorada.
Cuando hayan pasado 7 segundos y se dispare la alarma el sistema operativo envía la señal SIGALARM
al proceso, eso hace que se despierte y se ejecute en primer lugar el manejador de la señal fun1 que
imprime un salto de línea y a continuación “Recibo señal:” seguido de la cadena de texto que describe
dicha señal (obtenida mediante strsingal)
Cuando fun1 acaba el programa continúa ejecutándose por la línea 18 (la inmediatamente siguiente a
“pause” que acaba de concluir), de este modo se vuelve a medir el tiempo y se almacena en la variable y.
Puesto que han pasado 7 segundos al calcular el resultado se obtiene 7 y por lo tanto la línea [20]
imprime “7 DyASO correcto” ya que DyASO era el segundo argumento a la función (argv[1]).
La instrucción [21] envía una señal SIGTERM al proprio proceso, el proceso al recibirla emite un mensaje
de terminación y finaliza su ejecución inmediatamente, de modo que [21] no llega a ejecutarse.
Por lo tanto, el programa espera 7 segundos y la salida es:
recibo señal: Alarm clock
¡Problema 7 DyASO correcto!
Terminado
Parte B:
Si no se enviase la señal SIGTERM el programa ejecutaría la línea [22] e imprimiría el mensaje
¡Erróneo!
Parte C:
Todo ocurre en el contexto de un único proceso (no hay forks) que además tiene un único hilo de
ejecución, por eso no hay problemas de sincronización ni hace falta usar wait ni fflush. Estas
instrucciones se utilizan cuando se quiere sincronizar la terminación de los procesos o utilizar la salida
estándar por orden cuando hay varios procesos/hilos.
Descargar