Cuestiones
ayuda
option
Mi Daypo

TEST BORRADO, QUIZÁS LE INTERESETest DSO

COMENTARIOS ESTADÍSTICAS RÉCORDS
REALIZAR TEST
Título del test:
Test DSO

Descripción:
Test DSO

Autor:
gusgusgus
(Otros tests del mismo autor)

Fecha de Creación:
09/02/2020

Categoría:
Informática

Número preguntas: 44
Comparte el test:
Facebook
Twitter
Whatsapp
Comparte el test:
Facebook
Twitter
Whatsapp
Últimos Comentarios
No hay ningún comentario sobre este test.
Temario:
Mediante la herramienta valgrind, podrá detectar: Fugas de memoria Todas son correctas Uso incorrecto de variables sin inicializar Accesos inválidos a memoria .
El comando ar sirve para: Compilar el código fuente de una biblioteca cualquiera Comprobar qué bibliotecas dinámicas utiliza un programa Generar una biblioteca dinámica a partir de un código objeto Generar una biblioteca estática a partir de un código objeto.
Dada la siguiente traza: ==17781== Invalid read of size 4 ==17781== at 0x4007EF: function 2 (valgrind_test.c:41) ==17781== by 0x400ADO: main (valgrind_test.c:97) ==17781== Address Ox51fd148 is 0 bytes after a block of size 40 free'd ==17781== at 0x4C2BDEC: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==17781== by 0x4007DA: function2 (valgrind_test.c:40) ==17781== by 0x400ADO: main (valgrind_test.c:97) ¿Cuál de las siguientes afirmaciones es correcta? Este error se produce al intentar leer un valor de una variable no inicializada El error se produce por intentar escribir un dato de tipo double Se ha producido al intentar hacer una lectura sobre un array en una posición fuera de rango Se ha producido al asignar un valor a una posición de un array .
Una ventaja de utilizar bibliotecas dinámicas es: Los ejecutables tendrán un tamaño más reducido Si cambia la biblioteca (pero no la interfaz) no habrá que volver a compilar los ejecutables que la utilicen Se pueden compartir entre varias aplicaciones que se encuentren en memoria Todas son correctas.
¿Cuál de los siguientes pasos le proporcionará información de depuración a las herramientas GDB y valgrind? Compilar el código fuente con la opción -S, siempre que se utilice primero con Valgrind Asegurarse de ejecutar el comando Idd sobre el ejecutable antes de depurar No se puede depurar un mismo código fuente con GDB y Valgrind Compilar el código fuente con la opción -g.
Suponga que quiere imprimir una variable local con gdb siempre que esta cambie. Utilizará: El comando list Los comandos break y display Los comandos break y print Los comando break y watch.
En una ejecución normal del nanokernel proporcionado. ¿Quién descarga los driver (dlclose)? Ninguna de las anteriores El último dispositivo que lo utilice El propio nanokernel El usuario, mediante una llamada al sistema .
El tratamiento de la interrupción de reloj está en: En modo usuario, en una llamada al sistema En el nanokernel En un driver en el nanokernel Ninguna es cierta.
En el nanokernel estudiado. ¿Cuál de las siguientes afirmaciones es cierta? Los módulos init y lc operan a nivel de usuario El resto de opciones son falsas Los módulos nic_drv y lc operan a nivel de kernel En el driver de la tarjeta de red hay que capturar la interrupción hardware de red simulada.
¿Cuál de los siguientes flags de GCC se necesita para la generación de bibliotecas dinámicas? - v -Epic -g -Wall .
¿Qué ventaja tiene Valgrind respecto a depurar mediante impresiones por pantalla (printf)? Permite depurar mediante el uso de puntos de ruptura. Es más sencillo de utilizar. Ninguna de las anteriores es correcta Aunque es necesario recompilar el programa, permite depurar paso a paso.
GDB recibe como entrada: Un fichero de código fuente. No recibe ningún argumento de entrada. Un fichero de código ejecutable Un fichero Makefile.
La línea sudo dkpg -i linux-headers-* deb: Instala el paquete que contiene las cabeceras de un kernel Elimina las cabeceras del kernel existente y las recompila Instala el paquete que contiene un kernel previamente compilado Re-instala un kernel existente.
El programa de prueba de una nueva llamada al sistema en espacio de usuario hace referencia a la misma en la función syscall mediante: Ninguna de las anteriores El nombre El número El número y el nombre.
La llamada al sistema dso_strcpy: Se añade al kernel del sistema operativo Se añade a la librería estándar Reemplaza la versión de strcpy del kernel Reemplaza la versión de strcpy de la librería estándar .
Al añadir una nueva llamada, indique qué campo no se incluye en los ficheros syscall_32.tbl y syscall_64.tbl. Nombre del fichero que implementa la llamada Nombre de la función que implementa la llamada Número asociado a la llamada Nombre de la llamada.
Para hacer efectiva la inclusión de una llamada al sistema, lo mínimo necesario es: Recompilar el kernel, recompilar el programa de usuario e instalar ambos Recompilar el programa de usuario e instalarlo Recompilar sólo una parte del kernel, reinstalarlo y reiniciar Recompilar todo el kernel .
Cuando en la llamada al sistema se usa printk para imprimir un mensaje: La salida de DMESG muestra los mensajes impresos El mensaje aparece siempre en pantalla Esta función llama a printf El mensaje aparece en /var/log/dmesg.
Cada línea de los archivos syscall_32.tbl y syscall_64.tbl incluye información de: Todas las anteriores Paso de argumentos a las funciones La numeración de las llamadas al sistema Tamaño y alineación de los tipos de datos.
Sobre la afirmación: "durante la realización del cuaderno de laboratorio 2, el proceso habitual consiste en ir copiando (ctrl-c) y pegando (ctrl-v) el contenido de los archivos documentados, así como los mandatos a ejecutar" Indique la contestación recomendada y su justificación correcta. Es mentira porque es posible que se copien caracteres que no son válidos en la terminal Es verdad, copiar y pegar del documento evita errores al escribir a mano en el terminal. Es verdad, aunque si se escribe a mano se recuerda mejor. Es verdad, ahorra tiempo de tener que escribir en el terminal. .
Añadir una nueva llamada al sistema en un kernel de un sistema operativo permite... (por favor conteste a la opción que sea más completa) Añadir más funcionalidad para que dicha funcionalidad siempre sea más rápida de ejecutar. Añadir funcionalidad que en caso de usar un número elevado de llamadas al sistema irá más rápido Reducir el tamaño del la librería de sistema en espacio de usuario al permitir compartir código a través del kernel. Añadir más funcionalidad sin tener que sobrecargar el sistema operativo. .
El archivo "/boot/config-4.4.0-109-generic" contine... Las opciones que la distribución de Linux aconseja sea compilado el kernel Las opciones con las que será compilado las fuentes del kernel por defecto Siempre contendrán las opciones con que fué compilado el kernel que se está usando en el momento. Si el número de versión coincide con el kernel actualmente en ejecución entonces contiene las opciones con las que este fue compilado.
Sobre el módulo 'dso-barrier', para despertar a todos los procesos bloqueados, la mejor opción es usar: signal wake_up wake_up_ur wake_up_interrumpible.
La variable atómica en el siguiente fragmento de código: atomic_set(&is_blocking_mode, 0); wait_event_interruptible(dso_wq1, (atomic_read(&is_blocking_mode) == 1)); Se puede leer utilizando la función 'atomic_set' Es utilizada para proteger de condiciones de carrera el acceso a la cola Es utilizada para indicar si el módulo está cargado o no Es utilizada para proteger el acceso a la variable global 'jiffies'.
'jiffies' es: El tiempo que pasa entre dos ticks El número de ticks por segundo Una función del kernel que devuelve el número de ticks de reloj Una variable global del kernel que cuenta el número de ticks de reloj.
Sobre el módulo 'dso-barrier', es necesario tener: Una cola de espera, para procesos de escritura Dos colas de espera, una para lecturas y otra para escrituras Ninguna de las respuestas es correcta Sólo una variable entera (int) .
La función 'proc_create' es utilizada para: Crear un nuevo proceso en Linux Ninguna de las respuestas es correcta Crear una nueva entrada en el directorio "/PROC" Crear una nueva variable global .
Para añadir una nueva funcionalidad al kernel utilizando un módulo de kernel, el tiempo de compilación Es mayor que añadir una llamada al sistema porque hay que compilar primero el kernel y luego el nuevo módulo Es el mismo, porque hay que compilar el kernel y el módulo se compila a la vez Es cero. Los módulos nunca se compilan Es menor que añadir una llamada al sistema, porque sólo hay que compilar el módulo.
La estructura 'file_operations' Tiene más de tres campos Permite a los programadores implementar operaciones sobre el sistema de ficheros, siguiendo la interfaz POSIX Todas las respuestas son correctas Contiene punteros de función que representan procedimientos relacionados con ficheros como 'open', 'read', 'flush', etc .
Durante las pruebas del módulo solicitado (dso-barrier) se utilizan los siguientes comandos: cat /proc/dso-barrier & echo 1 > /proc/dso-barrier cat /proc/dso-barrier & jobs ¿Cuál es el resultado? El comando 'jobs' debe mostrar el comando 'cat' realizado antes del 'echo', porque el otro 'cat' debería haber terminado El comando jobs no debería mostrar nada, porque todos los procesos han terminado El comando 'jobs' debe mostrar el proceso 'cat' que se realizó tras el 'echo' porque el otro 'cat' debería haber finalizado El comando 'jobs' debe mostrar dos procesos 'cat', ninguno de ellos finalizado (estado 'done') .
El siguiente código: atomic_set(&is_blocking_mode, 0); wait_event_interruptible(dso_wq1, (atomic_read(&is_blocking_mode) == 1)); printk("<1>process %ld passed.\n", (long) current->pid); return 0; ¿Cuándo debería ejecutarse? Al abrirse /proc/dso-barrier Tanto en las escrituras como en las lecturas sobre /proc/dso-barrier Al escribir en /proc/dso-barrier Al leerse /proc/dso-barrier.
Sobre los módulos de kernel: Son cargados o descargados por usuarios comunes (sin privilegios) Son ejecutado en modo kernel Una vez cargados, sólo pueden ser utilizados por procesos privilegiados (procesos lanzados por usuarios privilegiados) Son ejecutados en modo usuario.
Indique cuál de las siguientes respuestas sobre minor number y major number es correcta. (ejemplo: en el mandato "sudo mknod /dev/keybd c 60 1" 60 es el major number y 1 el minor number). Al major number identifica el driver y el minor driver habitualmente la versión El major number identifica el dispositivo y el minor number habitualmente la versión El major number identifica el driver y el minor numer habitualmente el dispositivo El major number identifica el dispositivo y el minor number habitualmente el driver .
¿Cuál de estas afirmaciones sobre el major number es correcta? (Ejemplo: en "register_chrdev (60, "keybd", &keybd_fops);", el major number es 60). EL major number identifica unívocamente un dispositivo en el sistema Ningún dispositivo puede compartir major number con otro Varios drivers en ejecución pueden compartir major number El major number identifica univocamente un driver en el sistema.
¿Qué solución se aplicó para solucionar el Big Kernel Lock? La mejor solución planteada fue que el cerrojo se liberara automáticamente cuando un thread duerme, para que pueda entrar otro a ejecutar Se ha eliminado el cerrojo global del kernel, cambiándolo por cerrojos de funciones más concretas (cerrojos de grano fino) EL kernel tiene un pool de threads para ejecutar llamadas al sistema por diferentes hilos Todas las afirmaciones son correctas.
En el contexto del módulo desarrollado para este cuaderno de prácticas, ¿cuál de las siguientes afirmaciones es cierta? Todas las interrupciones hardware tienen asociadas, como mínimo, una interrupción software La función que trata la interrupción software se ejecuta siempre antes que la interrupción hardware La interrupción software sólo puede ir asociada a una interrupción hardware Irq_handler() ser corresponde con el código de la interrupción de hardware y got_char() con el código de la interrupción de software.
Seleccione la afirmación correcta sobre la función keybd_read del driver proporcionado: Devuelve 0 para indicar que no se pueden leer más caracteres Todas son correctas En la semántica POSIX de la función “read" el kernel siempre devuelve los bytes que ha leído satisfactoriamente. Este valor será siempre menor o igual que los bytes que se solicita leer Si se llama a la función solicitando leer más de un byte, sólo será capaz de leer uno .
En el contexto del módulo desarrollado para este cuaderno de prácticas, ¿por qué la variable keybd_n se inicializa a 'OL"? Es el código hexadecimal del valor 'O', para inicializar el contador a 0 'OL' indica el valor R 'O' para una variable de tipo long para inicializar el contadro a O La 'L'indica que la variable es sin signo (siempre será positiva), para inicializar el contador a 0 Ninguna afirmación es correcta.
¿Se puede asociar más de una función de tratamiento a la misma línea de interrupción? (Ej: aplicar dos funciones de tratamiento a una misma interrupción producida por una tecla). Sí, una por cada puerto del dispositivo Sí, hasta el máximo que permite el kernel Sí, hasta un máximo de dos No, cada línea de interrupción sólo puede estar asociada a una función de tratamiento .
¿Por qué no es conveniente realizar el tratamiento completo de la interrupción de teclado dentro del código asociado a la interrupción hardware? Porque es más rápido tratarlo como una interrupción software diferidamente en lugar de ejecutar código de la interrupción hardware, a pesar de que el código de la interrupción hardware puede ser tan complejo como se desee En la interrupción hardware sólo se pueden tratar eventos no interactivos con el usuario En la interrupción hardware sólo se pueden tratar eventos cuyo resultado se comunica directamente al dispositivo (kernel --> driver). El código de la interrupción hardware debe ser lo más liegero posible, tratando eventos complejos como interrupciones software diferidas.
¿Cuál es el código de teclado (keybd_code en el código propuesto) asociado a la tecla 's'? 83 115 31 163.
¿Cuál es el código IRQ del teclado en las arquitecturas Intel? 0 Configurable, puede estar asociado a varios IRQ 1 Configurable pero siempre único .
Seleccione la afirmación correcta sobre la función keybd_write del driver proporcionado Devuelve 0 para indicar que no se pueden escribir mas caracteres En la semántica POSIX de la función 'write' el kernel siempre devuelve los bytes que ha escrito satisfactoriamente. Este valor será siempre menor que los bytes que se solicita escribir. Todas las afirmaciones son ciertas Si se llama a la función solicitando escribir más de un byte, sólo será capaz de escribir uno.
¿Qué opción de diseño se aplicó para eliminar el Big Kernel Lock? Se ha eliminado el cerrojo global del kernel cambiándolo por cerrojos de funciones más concretas (cerrojos de grano fino) El kernel tiene un pool de threads para ejecutar llamadas al sistema por diferentes hilos La mejor solución planteada fue que el cerrojo se liberara automáticamente cuando un thread duerme, para que pueda entrar otro a ejecutar Todas las afirmaciones son correctas.
Denunciar test Consentimiento Condiciones de uso