Cuestiones
ayuda
option
Mi Daypo

TEST BORRADO, QUIZÁS LE INTERESE1234123

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

Descripción:
Cine gordo

Autor:
Alberto
(Otros tests del mismo autor)

Fecha de Creación:
06/11/2023

Categoría:
Cine y TV

Número preguntas: 95
Comparte el test:
Facebook
Twitter
Whatsapp
Comparte el test:
Facebook
Twitter
Whatsapp
Últimos Comentarios
No hay ningún comentario sobre este test.
Temario:
¿Cómo agrega el directorio /opt/bin/a la variable de entorno PATH y se asegura de que se busque en último lugar? export PATH=/opt/bin/ export PATH=/opt/bin/:$PATH export PATH=$PATH:/opt/bin/.
Suponga que la variable de entorno PATH tiene el siguiente contenido /usr/bin:/usr/local/bin. Hay un programa en cada directorio, es decir, /usr/bin/program y /usr/local/bin/program. ¿Cuál se ejecutará si se ejecuta programen el shell? El shell le preguntará cuál ejecutar. /usr/local/bin/program /usr/bin/program.
¿Cómo puedo enumerar todos los comandos disponibles si no sé el nombre exacto del comando, por ejemplo? presione la tecla enter presione la tecla de tabulación usa la opción --help leer las paginas man.
¿Qué tiene que agregar al encabezado de un script para convertirlo en un script bash ejecutable ? /bin/bash #!/bin/bash #BASH.
¿Cual de estos elementos no aparece en el prompt de consola? nombre de usuario hora y fecha nombre de host directorio de trabajo.
¿Qué comando se puede utilizar para añadir texto un archivo? comando >>> fichero comando > fichero comando >> fichero.
¿Qué sucede si las teclas de control y c (Ctrl + C) se presionan simultáneamente en la línea de comando? un script comienza a ejecutarse en el shell el comando actual se cancela el texto resaltado se copia al portapapeles.
¿Cómo es posible definir alias? alias 'command'=name alias name='command' 'command'=alias name.
¿Cuál es la convención de nomenclatura para las variables de entorno? No existe una convención de nomenclatura, es decir, VarTest2 Utilice letras minúsculas, es decir, vartest2 Utilice letras mayúsculas, es decir, VARTEST2.
¿Qué hace ln -s /tmp ? Crea un enlace simbólico del directorio actual en /tmp Imprime una lista de archivos ubicados en /tmp y Crea un enlace simbólico de /tmp en el directorio actual llamado ./tmp.
La funcion Retorna el valor de x[j]. Retorna el valor de x[i]. Retorna el valor del mayor elemento del array x Retorna la posición del mayor elemento del array x.
Suponiendo que el programa ejecutable que se obtiene al compilar programa se llama PROG. al dar la orden PROG 5 examen imprime c=1 al dar la orden PROG examen 5 imprime c=5 al dar la orden PROG examen 5 imprime c=0 al dar la orden PROG examen 5 imprime c=2 .
AUAN 20 SARA 20 AARA 21 AUAN 19.
Indicar que sentencias hay que sustituir por el comentario en el para que se impriman todos los datos del array a. printf("Nombre: %s, Nota: %.2f\n", a[i].nombre, a[i].nota); Ninguna de las anteriores printf("Nombre: %s, Nota: %.2f\n", a[i]->nombre, a[i]->nota); printf("Nombre: %s, Nota: %.2f\n", *a[i]->nombre, *a[i]->nota);.
Indicar qué sentencias hay que sustituir por el comentario para que, al ejecutar el programa imprima el valor de x. printf ("%d",*p); printf ("%d",&p); printf ("%d",&x); printf ("%d",(int *)p);.
Queremos que al compilar el programa prog.cse obtenga un fichero ejecutable prog.exe con posibilidad de argumentos en la línea de órdenes, de modo que al ejecutar la orden $ ./prog.exe 1 1 el programa imprima iguales. Indicar qué sentencia NO HARÍA lo que el enunciado indica cuando se sustituye por el comentario en el programa prog.c if (argv[1]==argv[2]) printf(“iguales"); if ( !strcmp(argv[1], argv[2] ) ) printf (“iguales”); if (*argv[1]==*argv[2]) printf (“iguales”); if (argv[1][0]==argv[2][0]) printf (“iguales”);.
Con la siguiente declaración, ¿cómo podemos saber el número de elementos del array? int array[15]={0}; sizeof(array); sizeof(array)/sizeof(int); strlen(array); sizeof(array)*sizeof(int); .
Indicar qué sentencias hay que sustituir por el comentario para que, al ejecutar el siguiente programa, se tome por teclado el valor de x. Ninguna de las anteriores scanf ("%f",&x); scanf ("%d",&p); scanf ("%d",&x );.
Encuentra el error, si lo hay, en el código No hay ningún error &numero, en el scanf() int * numero; en la declaración de tipo de la variable numero. *numero, en el scanf().
Dadas estas declaraciones: int a[5]={10,20,30,40,50}; int *p, i; *p=a, i=2; ¿Cuáles de las opciones siguientes es correcta? La orden printf(" %d", *(p+i+1)); imprime 22 La orden printf(" %d", *(a+1)); imprime 10 La orden printf("%d",*p[i]); imprime 30 La orden printf("%d",*(p+i)); imprime 30.
Según la ley de Amdahls, si un algoritmo tiene el 50% del código secuencial, el máximo speed-up que se puede alcanzar es 10 2 10%.
Se dice que un problema es embarazosamente (ideal) paralelo cuando Se puede descomponer en tareas independientes que no necesitan coordinarse. cuando no es escalable Cuando alcanza el speed-up lineal.
La lista top500 Ninguna de las otras opciones Lista los computadores actuales que son más eficientes energeticamente. Muestra los supercomputadores actuales que ofrecen mayor número de operaciones en coma flotante por segundo.
Una granularidad computacional es fina cuando Ninguna de las otras opciones es correcta. Se realiza poco trabajo computacional entre eventos de comunicacion Se realiza mucho trabajo computacional entre eventos de comunicación.
Al realizar un algoritmo paralelo que necesita comunicaciones, se prefiere que las comunicaciones sean sincronas siempre que sean posibles las comunicaciones sean asincronas siempre que sean posibles las comunicaciones afectan poco a la eficiencia de los algoritmos paralelos, lo importante es la computación que realizan.
En una distribución de datos 2D del tipo "BLOCK,*" A cada tarea le corresponde un número de columnas consecutivas A cada tarea le puede tocar elementos no contiguos del array 2D. A cada tarea le tocan un número de filas consecutivas.
Según la ley de Amhdals el máximo speed-up que se puede alcanzar, si el 10% del código del algoritmo es secuencial es: 2 50% 10.
¿cual no es un tipo de sincronización? Semaforo/cerrojo Uso de variables independientes en cada hebra/proceso Barrera.
Cuando se realiza comunicaciones de datos es mejor tener alta latencia y gran ancho de banda alta latencia y bajo ancho de banda baja latencia y gran ancho de banda.
Cuando un proceso/tarea accede a un dato, es mejor que esté en L2 que en L1 es mejor que esté en L1 que en L2 es mejor que esté en L3 que en L1.
Cuando vamos a trabajar con números enteros, por defecto utilizamos: el tipo float. el tipo int. el tipo double.
¿Cómo se imprimiría por pantalla la siguiente constante #define MYNUM 8? printf (“Número %c”, MYNUM); printf (“Número %d”, MYNUM); printf (“Número ”, int(MYNUM));.
¿En cuál de las siguientes opciones se está inicializando correctamente una constante? const double myvar= 24.2; const double(myvar):24; void const myvar=24;.
Cuando se define double mivector[20]; ¿qué es lo que estamos haciendo? Declarando un vector unidimensional de tipo double y de longitud 20. Declarando un vector e inicializarlo con los valores del 1 al 20 Declarando un vector de 20 dimensiones de forma dinámica.
La declaración de un array de enteros de dos dimensiones puede codificarse: int array2D[2][2] ={{1,2},{3,4}}; int array2D[][2] ={{1,2},{3,4}}; Ambas opciones son correctas.
Los argumentos de las funciones en C se pasan por: La directiva #define Funciones de tipo global. Valor.
Una forma de declarar un array utilizando memoria contigua sería: int *array = malloc (sizeof (int)*2); ambas opciones son correctas. int *array = calloc ((size_t)2, sizeof (int));.
La función malloc() permite: inicializar arrays estáticos que hemos definido previamente y que queremos que apunten a null. pedir un bloque de memoria contiguo cuando estamos declarando arrays/matrices de forma dinámica. liberar un bloque de memoria que hemos pedido previamente y que no queremos volver a utilizar.
Para copiar el contenido de un array en otro en C: se debe hacer a mano o con funciones como memcpy(destino, origen,num_bytes) utilizamos el operador “=”. Ambas opciones son correctas.
Una forma de definir constantes en nuestros programas C es: #define TIPODEDATO NOMBRE = VALOR #include NOMBRE VALOR #define NOMBRE VALOR.
El programa, ¿qué imprime por pantalla? a=30, b=20 a=31, b=21 a=30, b=50 a=31, b=51.
Si el resultado de compilar y enlazar el programa es el ejecutable prog, ¿qué imprimirá el siguiente comando? $ ./prog lunes martes lunes prog martes lunes lunes lunes lunes lunes martes lunes prog lunes.
Con la siguiente declaración: int x[ ]={3,2,8,7,5}, *p; *p=x; ¿Cuál de las respuesta es INCORRECTA? La instrucción printf("%d", *p++); imprime 3 La instrucción printf("%d", *(x+3)); imprime 7 La instrucción printf("%d", *x+3); imprime 6 La instrucción printf("%d", (*x)++); imprime 3.
¿Qué imprime el programa, si al ejecutarlo se introducen los valores 3 y 4 para las variables a y b? 3.0,4.0 3.0,-1.0 7.0,-1.0 7.0,4.0.
¿Qué imprime programa ? 11 10 20 11 11 20 11 10 21 11 11 21.
Suponiendo que se ha dado la orden de compilación gcc prog.c, indicar qué imprime el programa cuando se ejecuta la orden: ./a.out lunes_ martes_ miercoles_ a. outlunes_martes_miercoles_miercoles_ martes_miercoles lunes_martes_miercoles lunes_martes_miercoles_miercoles.
El hecho de que C sea un lenguaje de tipado estático, significa que en nuestros programas debemos: Convertir cada variable al tipo específico “int” antes de poder operar con punteros. Definir de un tipo cada variable antes de poder utilizarla. Realizar la asignación de tipos en tiempo de ejecución.
Los comentarios en C se indican con: // cuando es una sola línea la que queremos comentar /* y terminando con */ cuando queremos comentar varias líneas ambas opciones son correctas.
En un array en C, por ejemplo, double array[5]; ¿Cómo se accede al último elemento del array? array[5]; array[]; array[4];.
En una zona delimitada por “{}”, las variables definidas ahí quedan limitadas a esa región. las variables son de tipo global y pueden ser llamadas desde otras subrutinas. Ninguna de las opciones es correcta.
¿Es posible definir varias variables del mismo tipo en la misma línea? Sí, si las separamos por comas. Sí, pero sólo cuando sean constantes. No.
¿Sería esta una función válida: int Restar (int, int);? No, ya que no se sabe cual es el tipo del resultado de la operación No, ya que una función no puede recibir argumentos sin punteros. Sí, es una función que resta dos enteros.
¿Qué es la función main? Es la entrada del programa y por donde empieza la ejecución. Es una función que se ejecuta al final del programa y contiene la directiva return. Es una función que debemos incluir cuando vayamos a leer argumentos del programa por consola.
La principal diferencia entre las funciones malloc() y calloc() es que: malloc() nos propociona el bloque como esté, sin inicializar; mientras que calloc() lo inicializa a 0. calloc() nos propociona el bloque como esté, sin inicializar; mientras que malloc() lo inicializa a 0 con malloc() no se recomienda el uso de la función free().
Si quiero acceder a todos los elementos del array puedo: Crear una estructura while que vaya pasando por todos los elementos del array. Crear un bucle for que vaya pasando por todos los elementos del array. Ambas opciones son correctas.
¿Qué arquitectura es la más rara actualmente? MIMD MISD SISD.
¿Cual es la diferencia entre concurrencia y paralelismo? Las tareas concurrentes se ejecutan en el mimo elemento de procesamiento y las paralelas en distintos. Las tareas paraleas se ejecutan en el mismo elemento de procesamiento y las concurrentes en distintos. Ninguna de las otras respuestas.
Los programas desarrollados en MPI pueden correr Ambas respuestas son correctas En arquitecturas de memoria distribuida En arquitecturas de memoria compartida.
Un algoritmo paralelo está muy desbalanceado Cuando sus tareas/procesos realizan una cantidad de computación muy diferente Cuando sus tareas/procesos realizan casi la misma cantidad de computación Cuando las tareas/procesos del algoritmo realizan una cantidad de comunicaciones muy diferente.
¿Que es el estándar POSIX? Una propuesta para un nuevo sistema operativo que suceda a UNIX. Un estándar que describe interfaces que todas las variantes complicadas de UNIX necesitan implementar. Una distribución UNIX que tuvo que cambiar de nombre debido a reclamaciones legales.
¿Cuál es la sintaxis correcta para abrir una conexión ssh? ssh [options] <username>@<hostname> ssh <username>:<hostname> [options] ssh [options] <username> <hostname>.
¿Cómo se llama al administrador de nivel superior (o superusuario) en Linux? root Dios gurú.
¿Cuál puede ser un comodín adecuado para una lista de los archivos: test_01, test_02, test_03 y prod_02 pero NO: test_04 y debug_02 [t,p]???_0[1-3] *_* [t,p]*_* *_0[1-3].
¿Qué es una distribución? Una colección preconfigurada de kernel de Linux y aplicaciones que lo acompañan. Un servidor de archivos público que aloja el kernel de Linux y algunas aplicaciones del sistema. Una instalación completa del sistema operativo con todas las herramientas y aplicaciones de apoyo. Ninguna de las anteriores.
Si se ejecuta el comando cd sin argumentos en el directorio /var/log/, ¿qué espera que suceda? Va al directorio de inicio del usuario Va a la raíz del sistema de archivos Nada, se queda /var/log/.
Dado el array dinámico a de 5 elementos de tipo int, queremos ampliar a 10 su número de elementos, sin perder la información que ya existía almacenada en el array original y rellenando a 0 los nuevos elementos. Suponer que no existirán problemas de falta de memoria. ¿Cuál de las secuencias de instrucciones NO hace lo especificado en el enunciado? a = (int *)realloc(a, 10*sizeof(int)); for (i=5; i<10; i++) a[i]=0; b = (int *)malloc(10*sizeof(int)); for (i=0; i<5; i++) b[i]=a[i]; for (i=5; i<10; i++) b[i]=0; free(a); a=b; b = (int *)calloc(10, sizeof(int)); for (i=0; i<5; i++) b[i]=a[i]; free(a); a=b; b = (int *)malloc(10*sizeof(int)); for (i=0; i<5; i++) b[i]=a[i]; for (i=5; i<10; i++) b[i]=0; free(a); b=a;.
Con las siguientes declaraciones, indique cual de las instrucciones es INCORRECTA: struct ficha{ char nom[40]; int edad; }; struct ficha *pun=NULL; pun=(struct ficha *)malloc(sizeof(struct ficha *)); pun=(struct ficha *)malloc(4*sizeof(struct ficha)); pun=(struct ficha *)realloc(pun,5*sizeof(struct ficha)); pun=(struct ficha *)calloc(3,sizeof(struct ficha));.
Muchos de los procesadores actuales se pueden categorizar como SIMD Si, porque tienen operaciones como las MMX, SSE o AVX que se realizan en registos especializados hardware. No, solo las GPUs se consideran procesadores vectorizados. Ninguna de las otras opciones.
¿Que hace la clausula nowait? Quita la barrera de sincronización en la siguiente construcción OpenMP. Quita la barrera de sincronización en la construcción OpenMP actual. Salta la siguiente construcción OpenMP. Prioriza la siguiente construcción OpenMP.
Cuando de compila un programa OpenMP con gcc, ¿Qué flag debe incluirse? -fopenmp ./openmp #pragma omp parallel.
En una clausula schedule(guided,chunk) El tamaño del chunk se reduce de manera exponencial conforme se asignan porciones a las hebras. El chunk determina la porción más pequeña posible. Las iteraciones de dividen en porciones de tamaño chunk. Cuando una hebra termina su porción, obtiene la siguiente porción sin computar. El chunk por defecto es 1. Hace que las iteraciones del bucle se dividan en porciones entre las hebras con un número de iteraciones especificado en chunk. Las porciones se asignan estáticamente a las hebras siguiendo una estrategia round-robin. Por defecto el chunk es el resultado de dividir el número de iteraciones a paralelizar entre el número de hebras.
¿Cual es la condición de carrera en el siguiente código? sum = 0; #pragma omp parallel for for (int i=1; i<N; i++){ sum = sum + b[i]; } /* end of omp parallel for */ Que la variable b es compartida. La variable sum es por defecto compartida. No hay condición de carrera.
Todas las variables en la clausula shared de una construcción OpenMP son compartidas por todas las hebras (menos los contadores de los bucles) Falso No, los contadores de los bucles hay que declararlos como private. Verdadero.
La clausula schedule(static,chunk) El tamaño del chunk se reduce de manera exponencial conforme se asignan porciones a las hebras. El chunk determina la porción más pequeña. Hace que las iteraciones del bucle se dividan en porciones entre las hebras con un número de iteraciones especificado en chunk. Las porciones se asignan estáticamente a las hebras siguiendo una estrategia round-robin. Por defecto el chunk es el resultado de dividir el número de iteraciones a paralelizar entre el número de hebras. Las iteraciones de dividen en porciones de tamaño chunk. Cuando una hebra termina su porción, obtiene la siguiente porción sin computar. El chunk por defecto es 1.
¿Qué hay que realizar en el siguiente código para que sea correcto? #pragma omp parallel for shared(a,b) for (int i=1; i<N; i++){ x = sqrt(b[i]) -1; a[i] = x*x + 2*x + 1; } /* end of omp parallel for */ Nada, el código es correcto Poner la clausula private(x) en la directiva OpenMP Poner la clausula private(a,b) en la directiva OpenMP.
¿Cual de los siguientes errores de programación paralela es imposible en la directiva OpenMP dada? Interbloqueo en #pragma omp parallel Condiciones de carrera en #pragma omp parallel Conflicto de datos en #pragma omp critical Dependencia de datos en #pragma omp for.
¿Cual de las siguientes afirmaciones sobre OpenMP es incorrecta? OpenMP se ha diseñado para sistemas paralelos de memoria distribuida y garantiza el uso eficiente de la memoria. OpenMP es una API que permite paralelismo multi-hebra explícito. Los componentes principales de OpenMP son directivas, librerias run-time y variables de entorno. OpenMP soporta arquitecturas UMA y NUMA.
¿Que significa el false sharing? Que las variables definidas en la clausula share() se inicializan por defecto a false. Que varias hebras están acediento a la misma línea de caché y la línea completa tiene que actualizarse en las caches privadas de las hebras cuando una hebra escribe un dato que se encuentra en esa línea de cache , lo que consume mucho tiempo. Que las hebras comparten variables, pero en realidad tienen una copia local privada de las mismas.
Un string es Una función que sirve para pasar de tipo entero a tipo carácter. ninguna de las opciones es correcta. Un array de char que termina con el carácter ‘\0’.
Tras compilar, ¿cómo se ejecuta un programa en C? nombredelprograma execute nombredelprograma ./nombredelprograma.
Puedo controlar que el número de parámetros por consola es el que deseo, utilizando: while (argv < unciertovalor) if (argc < unciertovalor) if (argv < unciertovalor).
¿Cuál es el resultado esperado de los siguientes comandos: VARTEST="bla"; export VARTEST="BLA" ; VARTEST="blub"; env | grep VARTEST VARTEST="bla" VARTEST="blub" VARTEST="".
¿Cómo se establecen los permisos de un proceso? Por herencia de los permisos del propietario. Manualmente por usuario Explícitamente al inicio por parámetros.
¿Cuántos sistemas HPC del Top500 utilizaron alguna forma de Linux en junio de 2020? 80% 90% 100%.
¿Qué significa GNU? GNU no es Unix Geek necesitaba Unix Unix general Ninguna de las anteriore.
Una hebra Al copiar los recursos del proceso padre, su tiempo de creación es igual que el de crear un proceso. Duplica solo los recursos necesarios del proceso padre para poder ser manejada de forma independiente. Es una copia exacta del proceso padre.
¿Cuál de las siguientes API se puede utilizar para la sincronización entre hebras? pthread_self pthread_exit pthread_join.
La hebra que llega a un pthread_mutex_lock() Si el mutex está bloqueado, sigue la ejecución por la instrucción siguiente pthread_mutex_unlock() Ninguna de las anteriores Solo continua si el mutex no está bloqueado.
Si el main y las NThreads que se han creado tienen que esperar en un barrier, el comando para inicializar el barrier sería pthread_barrier_init(&barrier, NULL, NThreads-1); pthread_barrier_init(&barrier, NULL, NThreads+1) pthread_barrier_init(&barrier, NULL, NThreads);.
#include <stdio.h> #include <pthread.h> #define NUM_THREADS 4 pthread_once_t once_control = PTHREAD_ONCE_INIT; //----------------------------------------------------------------------------- void inicializacion(){ printf("Tarea a ejecutar\n"); } //----------------------------------------------------------------------------- void* cuerpo(void* arg){ pthread_once(&once_control, inicializacion); printf("Función normal\n"); return 0; } //----------------------------------------------------------------------------- int main(int argc, char* argv[]) { pthread_t thread[NUM_THREADS]; for (int i = 0; i<NUM_THREADS; i++) pthread_create(&thread[i], NULL, cuerpo, NULL); for (int i = 0; i<NUM_THREADS; i++) pthread_join(thread[i], NULL); return 0; } "Tarea a ejecutar" se imprime solo una vez. Ninguna de las anteriores "Tarea a ejecutar" se imprime NUM_THREADS veces.
Cuál es el flag que se pasa al compilar un programa PThread usando gcc? -pthread -lpthread -gccpthread.
Cuando se usa pthread_cond_wait() NS7NC Antes hay que bloquear el mutex asociado. No se requieren mutex adicionales. Ninguna de las anteriores.
Si el main está esperando en una variable de condición en un bucle y dos hebras hacen un signal antes del siguiente wait El main saldrá solo de un wait aunqnue se hayan realizado dos signal. El main se bloquea hasta que todas has hebras hayan hecho un signal. El main saldrá de dos wait, uno en cada iteración del bucle, porque se han hecho dos signals.
#include <stdio.h> #include <stdlib.h> #include <pthread.h> typedef struct th_params { pthread_mutex_t * pmutex1; int * pcounter; }Type_Th_Params; //---------------------------------- void *functionC(void * param) { Type_Th_Params * MyParams; MyParams=(Type_Th_Params *) param; pthread_mutex_lock( MyParams->pmutex1 ); (*MyParams->pcounter)++; printf("Counter value: %d\n", *MyParams->pcounter); pthread_mutex_unlock( MyParams->pmutex1 ); } //----------------------------------- int main() { pthread_t thread1, thread2; pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER; int counter=0; Type_Th_Params Th_Params; Th_Params.pcounter=&counter; Th_Params.pmutex1=&mutex1; pthread_create( &thread1, NULL, functionC, (void *)&Th_Params ); pthread_create( &thread2, NULL, functionC, (void *)&Th_Params ); pthread_join( thread1, NULL); pthread_join( thread2, NULL); exit(0); } Error ya que ambas hebras comparten la misma estructura de datos. Counter value: 1 Counter value: 1 Counter value: 1 Counter value: 2.
Las hebras Se ejecutan en un entorno de memoria distribuida y se comunican accediendo a esa memoria. Se ejecutan en un entorno de memoria distribuida y se comunican mediante paso de mensajes. Se ejecutan en un entorno de memoria compartida y se comunican mediante el acceso a esa memoria.
Denunciar test Consentimiento Condiciones de uso