Why is performing complex processing directly inside an ISR discouraged in FreeRTOS?
It increases interrupt latency
What is the principle of priority-based preemptive scheduling in FreeRTOS?
The highest-priority ready task runs
When multiple tasks are always ready to run, how do priorities affect execution?
Higher-priority tasks run first
How does preemption improve system responsiveness compared to a super-loop?
Urgent tasks can interrupt others
What is starvation in an RTOS?
A task never gets CPU time
What is the role of the RTOS tick in scheduling?
It drives timing and context switches
What best describes a FreeRTOS queue?
A FIFO buffer for communication
What happens when a high-priority task tries to read from an empty queue?
The task enters the blocked state
What is the immediate scheduler behavior when a low-priority task sends data that unblocks a high-priority task?
The higher-priority task executes
What is the purpose of the xTicksToWait parameter in queue operations?
It defines how long a task may block
Why is a multiple-producer, single-consumer design commonly used in real-time systems?
It centralizes resource access
How can two FreeRTOS tasks communicate using a queue?
One task sends data to the queue and another task receives it
How can a hardware interrupt service routine (ISR) notify a FreeRTOS task that an event has
occurred using a queue?
By calling xQueueSendFromISR()
Which of the following statements most correctly justifies why only dynamic task creation is explicitly tested?
A. xTaskCreateStatic() can never fail because memory is allocated at compile time,
whereas xTaskCreate() can fail only if the heap is fragmented.
B. xTaskCreate() introduces runtime uncertainty due to dynamic memory allocation, while
xTaskCreateStatic() eliminates this uncertainty by externalizing memory management to
the application.
C. xTaskCreateStatic() is evaluated at link time and never returns an invalid handle, unlike
xTaskCreate(), which depends on the scheduler state.
D. xTaskCreate() must be checked because it creates a task before the scheduler is
started, whereas xTaskCreateStatic() creates the task after vTaskStartScheduler().
B. xTaskCreate() introduces runtime uncertainty due to dynamic memory allocation, while xTaskCreateStatic() eliminates this uncertainty by externalizing memory management to
the application