Sistemas
![]() |
![]() |
![]() |
Título del Test:![]() Sistemas Descripción: A por todas! |




Comentarios |
---|
NO HAY REGISTROS |
Asuma que un thread (con los permisos necesarios) ejecuta el siguiente código, e indique qué es lo que ocurrirá: struct sched param sp; sp.sched priority = 3 sched setscheduler (getpid (), SCHED RR , &sp ); sched setscheduler (getpid (), SCHED RR , &sp );. El thread cambiará la política de planificación del proceso que lo ha creado a roud-robin con prioridad estática 3. El thread cambiará su política de planificación y la del proceso que lo ha creado a roud-robin con prioridad estática 3. El thread cambiará su política de planificación a roud-robin con prioridad estática 3. Los threads no pueden cambiar su política de planificación. Indique el resultado o resultados posibles en la ejecuci´on del siguiente c´odigo: x=0; if fork()!=0) { if fork()!=0 { printf(" %d",x); exit(0); } x=x+2; printf(" %d",x); } printf(" %d",x);. 0022. 2200. 0020. El mapeo entre páginas lógicas y físicas asegura que: Direcciones lógicas iguales correspondan a direcciones físicas iguales. Direcciones físicas distintas correspondan a direcciones lógicas distintas. Direcciones lógicas iguales correspondan a direcciones físicas distintas. Indique las opciones correctas: El Instruction Set Architecture proporcionado por la máquina virtual puede ser distinto al de la máquina real. El Instruction Set Architecture proporcionado por la máquina virtual debe ser un subconjunto del de la máquina real. El Instruction Set Architecture de la máquina real debe ser un subconjunto del proporcionado por la máquina virtual. En un sistema Linux con una única CPU, si tenemos 2 procesos RR, uno con prioridad 2 y otro con prioridad 6: El proceso con prioridad 2 se ejecutará sólo cuando el de prioridad 6 haya finalizado. El proceso con prioridad 2 se ejecutará concurrentemente con el de prioridad 6, aunque se le asignará menos tiempo de CPU que al proceso de prioridad 6. Ambos se ejecutarán concurrentemente y con el mismo porcentaje de tiempos de CPU. El segmento de stack: Almacena la imagen binaria del código del proceso. Almacena las variables locales. Almacena las variables dinámicas. El resultado debido a una condición de carrera puede depender de: El orden de intercalación de operaciones. El funcionamiento de las memorias caché. La forma en que se produce la compilación. Indique la opción u opciones correctas: Uno de los objetivos de la política de planificación CFS es tratar de garantizar, a todos los procesos CFS, un determinado tiempo de respuesta máximo. Utilizando la política de planificación CFS no siempre es posible garantizar, a todos los procesos CFS, un determinado tiempo de respuesta máximo. Utilizando la política de planificación CFS los procesos pueden tener distinta prioridad estática. El dispatcher de un sistema operativo se encarga de: Realizar los cambios de contexto. Decidir qué proceso se ejecutará en cada momento. Tratar las interrupciones de hardware y/o software. Realizar los cambios de modo del proceso. Marque las opciones verdaderas: Round-robin es un planificador en tiempo real. Sólo los procesos periódicos se pueden planificar en tiempo real. Utilizando el planificador rate monotonic es posible conocer, a priori, si una serie de procesos es planificable o no en tiempo real. Indique el resultado o resultados posibles en la ejecuci´on del siguiente código: x=0; if (fork()!=0) { if (fork()!=0) printf(" %d",x); x=x+2; printf(" %d",x); exit(0); } printf(" %d",x);. 0202. 2200. 0022. 2002. Cuando se activa un módulo en el kernel de Linux: Es necesario ser superusuario para poder hacerlo. Los efectos del módulo afectarán sólo a las aplicaciones que estén activas. Los efectos del módulo afectarán sólo a las aplicaciones que se activen posteriormente. Los efectos del módulo afectarán tanto a las aplicaciones activas, como a las que se activen posteriormente. Indique la opción u opciones correctas: Un proceso podrá cambiar su afinidad, aunque no tenga permisos de root. Un proceso podrá cambiar su afinidad y la de sus hijos, aunque no tenga permisos de root. Un proceso podrá cambiar su afinidad, la de sus hijos y la de sus hermanos, aunque no tenga permisos de root. Un proceso con permisos de root podrá cambiar la afinidad de todos los procesos del sistema. Indique la opción u opciones correctas: Si una tarea crea otra mediante la instrucción fork() entonces las 2 tareas no comparten ningún segmento. Si una tarea crea otra mediante la instrucción fork() entonces las 2 tareas comparten el segmento de Stack. Si una tarea crea otra mediante la instrucción pthread create() entonces las 2 tareas comparten los segmentos Text, Data, BSS, y Heap. Si una tarea crea otra mediante la instrucción pthread create() entonces las 2 tareas comparten el segmento de Stack. Cuando se utiliza la opción -fsanitize=thread durante la compilación de un programa con threads: Si hay una posible condición de carrera, el programa dará un warning antes de ejecutarse y continuará. Si hay una posible condición de carrera, el programa dará un warning antes de ejecutarse y finalizará. Durante la ejecución, el programa comprobará cualquier condición de carrera, en cuyo caso dará un warning y continuará. Durante la ejecución, el programa comprobará cualquier condición de carrera, en cuyo caso dará un warning y finalizará. Asuma que un thread (sin los permisos de root) ejecuta el siguiente código, e indique qué es lo que ocurrirá: struct sched param sp; sp.sched priority = 2 sched setscheduler (getpid (), SCHED RR , &sp );. El thread no cambiará nada. El thread cambiará su política de planificación a round-robin con prioridad estática 2. El thread cambiará la política de planificación del proceso que lo ha creado a round-robin con prioridad estática 2. Los threads no pueden cambiar su política de planificación. Indique la opción u opciones correctas: Los threads creados por un proceso deben ejecutarse en las mismas CPUs que dicho proceso. Si un proceso que ha creado varios threads termina, dichos threads también terminarán. El PCB de un thread es el mismo que el del proceso que lo ha creado. Cuando actúa el garbage collector de un proceso, éste lo hace en: El segmento de stack. El segmento de heap. El segmento de datos. Todos los segmentos en los que se utilizan variables. ¿Es posible transmitir datos de distinto tipo (e.g., enteros y caracteres) entre dos procesos utilizando una única tubería?. Sí, siempre. No, nunca. Sólo si los tipos de datos son compatibles entre sí. Sólo si los tipos de datos son compatibles entre sí y, además, no se transmiten punteros. El objetivo de la política de planificación CFS es: Permitir que existan prioridades en la ejecución de los procesos. Tratar de garantizar un determinado tiempo de respuesta máximo para todos los procesos. Tratar de garantizar que todos los procesos finalizen lo antes posible. Indique el resultado o resultados posibles en la ejecución del siguiente código: x=0; if (fork()!=0) { if (fork()!=0) { x=x+1; exit(); } else x=x+2; } printf(" %d",x);. 01. 02. 012. 023. Cuando se carga un módulo en Linux: Se ejecuta como cualquier otro proceso de usuario en Linux, simplemente lo ejecuta el usuario root. Se ejecuta como un proceso del kernel. Parte se ejecuta como proceso de usuario, y parte como proceso del kernel. Cuando se planifica un thread: Su planificador tiene que ser el mismo que el del proceso que lo ha creado. Su prioridad estática tiene que ser menor o igual que la del proceso que lo ha creado. Si su planificador es CFS, su prioridad dinámica debe ser menor o igual que la del proceso que lo ha creado. Ninguna de las anteriores es cierta. Marque las respuestas verdaderas: El direccionamiento virtual consiste en realizar una translación de las direcciones lógicas a direcciones físicas. Utilizando direccionamiento virtual, la translación de direcciones la realiza una única MMU para todas las CPUs. Utilizando direccionamiento virtual, la translación de direcciones la realiza una MMU por CPU. Marque las respuestas verdaderas: Si un proceso crea una tubería y después éste finaliza, la tubería desaparecerá. Dos procesos hermanos pueden comunicarse utilizando tuberías. Un proceso padre y un proceso hijo pueden pueden comunicarse utilizando tuberías. Si 2 threads acceden a varias variables locales únicamente dentro de una zona crítica creada con un determinado cerrojo: Dichas variables no se podrán acceder al mismo tiempo. Dichas variables sí se podrán acceder al mismo tiempo. Sólo las variables distintas se podrán acceder al mismo tiempo. En un sistema con varios threads (creados por el mismo proceso): El código que cada uno de ellos ejecutará se encuentra en su segmento de stack. El código que cada uno de ellos ejecutará se encuentra en el segmento de texto del proceso padre. Todos los threads utilizan el mismo segmento de heap que el proceso padre. Marque las opciones verdaderas: El segmento heap permite utilizar variables globales. El garbage colector actúa sobre los segmentos heap y stack. En el segmento de texto se almacena la imagen binaria de los procesos. El dispatcher de un sistema operativo se encarga de: Realizar los cambios de contexto de procesos y threads. Realizar los cambios de contexto de los procesos, pero no de los threads. Decidir qué proceso se ejecutará en cada momento. Tratar las interrupciones de hardware y/o software. En un sistema en el que hay un proceso padre que crea varios procesos hijos y varios threads: Si el padre termina, también lo harán todos los procesos hijos y todos los threads. Si el padre termina, también lo harán todos los procesos hijos, pero no los threads. Si el padre termina, también lo harán todos los threads, pero no los procesos hijos. El proceso padre no puede acabar hasta que lo hagan todos los procesos hijos. El proceso padre no puede acabar hasta que lo hagan todos los procesos hijos. |