Examen PCTR Junio 2022 - Parte 1
![]() |
![]() |
![]() |
Título del Test:![]() Examen PCTR Junio 2022 - Parte 1 Descripción: Primera parte del examen extraordinario de pctr junio 2022 |




Comentarios |
---|
NO HAY REGISTROS |
Respecto a la sincronización de tareas en ADA utilizando entries o citas: La tarea que invoca el entry continua su ejecución sin bloquearse. La tarea que invoca el entry no puede recibir datos como resultado de la ejecución del mismo. Un entry no es un reflejo del partrón rendezvous. La tarea receptora ejecuta el entry. La sincronización mediante entries no garantiza la exclusión mutua, a no ser que se utilicen barreras o guardas. Señale la respuesta incorrecta con respecto a los conceptos de proceso e hilo. Un hilo también se denomina proceso ligero. El objetivo principal de la programación multihilo es incrementar el rendimiento global de una aplicación, aunque puede ser necesario controlar el acceso a la sección crítica. Los hilos asociados a un mismo proceso comparten la sección de datos pero no así el contador de programa. Dos procesos A y B con relación de parentesco, siendo A el padre de B, comparten la sección de datos y el contador de programa. Pthreads es un interfaz para el manejo y la sincronización de hilos definido en el conjunto de estándares POSIX. El siguiente fragmento de código representa la implementación utilizada en el problema de los filósofos comensales (10 filósofos) donde table es un buzón que inicialmente tiene 1 mensaje y sticks es un array de 10 buzones con 1 mensaje inicialmente en cada buzón. Las primitivas send y receive utilizan una semántica bloqueante ¿Es una solución correcta?. Sí, aunque limita enormemente el paralelismo del sistema. No, pues tiene el problema del interbloqueo. No, pues la primitiva receive debe utilizar una semántica no bloqueante. No, pues sticks debe ser un array de 5 buzones. Es una solución totalmente correcta y eficiente. La solución al problema de la sección crítica... Implica que los programas involucrados no tienen sección restante. Consiste en diseñar algún método para garantizar que los procesos involucrados puedan operar sin generar ningún tipo de inconsistencia. Implica que los programas involucrados no tienen sección de entrada. Implica forzosamente la utilización de un lenguaje de alto nivel en la codificación de programas. Consiste en diseñar código para la sección de salida para los procesos involucrados. Respecto al manejo de memoria compartida en POSIX... Siempre que se recupera un segmento de memoria compartida es necesario establecer su tamaño con ftruncate. El tamaño de un segmento de memoria compartida es constante y se maneja mediante un TAD para valores enteros. Los segmentos de memoria compartida se manejan de manera similar a los archivos. Es necesario un proceso de mapping, mediante la primitiva shm_open, para acceder a un objeto de memoria compartida. Si se manipula una estructura como segmento de memoria compartida, ésta no puede contener un puntero. Si en un contexto de comunicación y sincronización de procesos mediante paso de mensajes necesitamos acceder a una cola de mensaje existente, utilizaremos la primitiva... mq_get. mq_set. mq_link. mq_open. mq_notify. ¿En cuál de los siguientes modelos de planificación puede fallar el test de planificabilidad y, sin embargo, es posible disponer de un sistema planificable?. Ninguna de las otras respuestas es correcta. Modelo de cálculo analítico del tiempo de respuesta. Ejecutivo cíclico. Factor de utilización. Generación del cronograma de un hiperperiodo completo. Un sistema de tiempo real compuesto por cinco tareas está encargado del procesado de la fruta en una planta de producción de mermelada ecológica. Durante la planificación de dichas tareas se ha establecido el protocolo de herencia de prioridad como el mecanismo más adecuado a la hora de compartir recursos, teniendo en cuenta los tiempos de respuestas y los costes. Bajo estas condiciones, indica cuál de las siguientes afirmaciones es cierta_. El tiempo de bloqueo de la tarea con mayor prioridad es igual a cero. El protocolo de herencia de prioridad no disminuye la inversión de prioridades generada al compartir recursos. La interferencia sufrida por la tarea con menor prioridad es igual a cero y coincide con el tiempo de bloqueo sufrido por la tarea más prioritaria. La interferencia sufrida por la tarea con mayor prioridad es igual al tiempo de bloqueo sufrido por la tarea menos prioritaria. La interferencia sufrida por la tarea con menos prioridad es igual a cero. Si se pretende enviar una señal desde el código de un proceso a otro proceso, utilizamos la primitiva... signal_handler. send_kill. send_signal. signal. kill. Para implementar el patrón de señalización mediante semáforos es necesario... Un semáforo general inicializado al número de procesos que intervienen. Un semáforo binario inicializado a 1. Un semáforo general inicializado al número de recursos que se comparten. Un semáforo general inicializado a 0. Un semáforo binario inicializado a 0. Un proceso manager necesita enviar un mensaje a uno de los procesos hijos que ha creado, y para ello utiliza una cola de mensajes. Suponiendo que la cola de mensajes ya ha sido creada usando el descriptor de cola mqHandlerMsg ¿qué línea de código debe usar para enviar el mensaje contenido en la variable my_msg del tipo struct msg_t?. mq_send("/mqHandlerMsg", (const char *)&my_msg, sizeof(struct msg_t), 0);. mq_send(mqHandlerMsg, (const char *)&my_msg, sizeof(struct msg_t), &mqAttr);. mq_send(mqHandlerMsg, (const char *) &my _msg, sizeof(struct msg_t), 0);. mq_send("/mqHandlerMsg", (const char *)&my_msg, sizeof(struct msg_t), NULL);. mq_send(mqHandlerMsg, my_msg, msg_t, 0);. La sección crítica es: La parte de código que hay que ejecutar necesariamente para que no se produzcan condiciones de carrera. La parte de código de un proceso que se ejecuta paralelamente con la de otro. La parte de código de un proceso que se ejecuta paralelamente con la de otro. La parte de código de un proceso que se encarga de modificar variables que comparte con otro proceso. La parte de código que hay que ejecutar antes de acceder a las variables compartidas. En un sistema POSIX, un proceso desea sólo recibir mensajes del buzón con nombre pending que ha sido creado previamente por otro proceso. La sentencia a utilizar sería... mg_open(pending, O_RDWR, &mqAttr) con el atributo de sólo recepción en mAttr. mq_open("/pending", O_RDONLY | O_NONCREAT, S_NOIWUSR | S_IRUSR, NULL). mq_open("/pending", O_RDONLY). mq_open("/pending", O_RDONLY, S_IRUSR, NULL). mq_open((mqd_t)pending, O_RDONLY). En la estructura <select-or-end select> dentro de una tarea en ADA-95, ¿qué tipo de sentencia ha de establecer justo a continuación del select?. Sólo llamadas a funciones o procedimientos. Una sentencia bloqueante. Una sentencia no bloqueante. Cualquier tipo de sentencia ya que no existe realmente ninguna restricción. Un accept, siempre que exista el punto de entrada correspondiente. Dado el siguiente código, ¿qué procesos son los encargados de ejecutar los dos grupos de sentencias?. Tanto el set of sentencesr 1 como el set of sentences 2 lo ejecutan el proceso padre. Ambos grupos de sentencias nunca son ejecutados ni por el proceso padre ni por el proceso hijo. El set of sentences 1 lo ejecuta el proceso padre y el set of sentences 2 el proceso hijo. El set of sentences 1 lo ejecuta el proceso hijo y el set of sentences 2 el proceso padre. Tanto el set of sentences 1 como el set of sentences 2 lo ejecutan el proceso hijo. |