Bird
Raised Fist0
FreeRTOSprogramming~5 mins

Task states (Ready, Running, Blocked, Suspended) in FreeRTOS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the Ready state mean for a FreeRTOS task?
The Ready state means the task is prepared to run but is waiting for the CPU to become available. It is not blocked or suspended.
Click to reveal answer
beginner
Describe the Running state in FreeRTOS.
The Running state means the task is currently executing on the CPU.
Click to reveal answer
beginner
What causes a task to enter the Blocked state?
A task enters the Blocked state when it is waiting for an event, such as a delay to finish or a resource to become available.
Click to reveal answer
intermediate
Explain the Suspended state in FreeRTOS.
A Suspended task is one that has been stopped by the programmer and will not run until explicitly resumed.
Click to reveal answer
intermediate
How does FreeRTOS decide which task moves from Ready to Running?
FreeRTOS uses a scheduler that selects the highest priority task in the Ready state to run next on the CPU.
Click to reveal answer
Which FreeRTOS task state means the task is waiting for a resource or event?
ABlocked
BReady
CRunning
DSuspended
What state is a task in when it is actively using the CPU?
AReady
BBlocked
CRunning
DSuspended
Which state means a task will not run until resumed by the programmer?
AReady
BSuspended
CBlocked
DRunning
What determines which Ready task becomes Running in FreeRTOS?
ATask priority
BTask creation order
CRandom selection
DTask name alphabetical order
If a task is waiting for a timer to expire, what state is it in?
ARunning
BSuspended
CReady
DBlocked
Explain the four main FreeRTOS task states and give a simple example of when a task might be in each state.
Think about what the task is doing or waiting for in each state.
You got /4 concepts.
    How does FreeRTOS decide which task to run next from the Ready state?
    Focus on the role of the scheduler and priorities.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      Which FreeRTOS task state means the task is waiting to be assigned CPU time but is ready to run?

      easy
      A. Suspended
      B. Running
      C. Blocked
      D. Ready

      Solution

      1. Step 1: Understand the meaning of Ready state

        The Ready state means the task is prepared and waiting for CPU time but is not currently running.
      2. Step 2: Compare with other states

        Running means the task is currently executing. Blocked means waiting for an event. Suspended means paused by user.
      3. Final Answer:

        Ready -> Option D
      4. Quick Check:

        Ready = waiting to run [OK]
      Hint: Ready means waiting but able to run soon [OK]
      Common Mistakes:
      • Confusing Ready with Running
      • Thinking Blocked means ready
      • Mixing Suspended with Blocked
      2.

      Which of the following is the correct way to suspend a task in FreeRTOS?

      void suspendTask(TaskHandle_t task) {
          // What function to call?
      }
      easy
      A. vTaskBlock(task);
      B. vTaskSuspend(task);
      C. vTaskReady(task);
      D. vTaskRun(task);

      Solution

      1. Step 1: Recall FreeRTOS API for suspending tasks

        The function to suspend a task is vTaskSuspend(), which pauses the task until resumed.
      2. Step 2: Verify other options

        vTaskBlock() and vTaskReady() do not exist as API calls. vTaskRun() is not a FreeRTOS function.
      3. Final Answer:

        vTaskSuspend(task); -> Option B
      4. Quick Check:

        Suspend task = vTaskSuspend() [OK]
      Hint: Suspend tasks with vTaskSuspend() function [OK]
      Common Mistakes:
      • Using non-existent functions
      • Confusing suspend with block
      • Trying to run tasks manually
      3.

      Consider this FreeRTOS code snippet:

      void vTaskFunction(void *pvParameters) {
          for (;;) {
              if (xSemaphoreTake(xSemaphore, 0) == pdTRUE) {
                  // Critical section
              } else {
                  vTaskDelay(pdMS_TO_TICKS(100));
              }
          }
      }

      What is the state of the task when vTaskDelay() is called?

      medium
      A. Running
      B. Ready
      C. Blocked
      D. Suspended

      Solution

      1. Step 1: Understand vTaskDelay effect

        Calling vTaskDelay causes the task to enter Blocked state, waiting for the delay time to expire.
      2. Step 2: Confirm task state during delay

        While delayed, the task is not Ready or Running; it is Blocked until the timer expires.
      3. Final Answer:

        Blocked -> Option C
      4. Quick Check:

        vTaskDelay = Blocked state [OK]
      Hint: vTaskDelay puts task in Blocked state [OK]
      Common Mistakes:
      • Thinking delay means Ready
      • Confusing Blocked with Suspended
      • Assuming task runs during delay
      4.

      Identify the error in this FreeRTOS task management code:

      vTaskSuspend(NULL);
      vTaskResume(NULL);
      vTaskResume(xTaskHandle);

      What is wrong with this code?

      medium
      A. vTaskResume(NULL) is invalid and causes error
      B. Cannot suspend current task with NULL parameter
      C. vTaskResume requires task handle, NULL is allowed
      D. No errors, code is correct

      Solution

      1. Step 1: Check vTaskSuspend(NULL) usage

        Passing NULL to vTaskSuspend suspends the current task, which is valid.
      2. Step 2: Check vTaskResume(NULL) usage

        Passing NULL to vTaskResume is invalid and causes an error because NULL is not a valid task handle to resume.
      3. Final Answer:

        vTaskResume(NULL) is invalid and causes error -> Option A
      4. Quick Check:

        vTaskResume(NULL) causes error [OK]
      Hint: vTaskResume(NULL) is invalid, must use valid handle [OK]
      Common Mistakes:
      • Assuming NULL resumes current task
      • Confusing suspend and resume parameters
      • Ignoring NULL parameter rules
      5.

      You want to create a task that waits for a button press event without using CPU time unnecessarily. Which task state should the task enter while waiting?

      hard
      A. Blocked
      B. Ready
      C. Running
      D. Suspended

      Solution

      1. Step 1: Understand waiting without CPU use

        To avoid wasting CPU, the task should not be Running or Ready while waiting.
      2. Step 2: Choose appropriate waiting state

        Blocked state is used when a task waits for an event like a button press, so it sleeps until event occurs.
      3. Step 3: Differentiate from Suspended

        Suspended means paused by user, not event-driven waiting.
      4. Final Answer:

        Blocked -> Option A
      5. Quick Check:

        Wait for event = Blocked state [OK]
      Hint: Wait for event = Blocked to save CPU [OK]
      Common Mistakes:
      • Using Suspended instead of Blocked
      • Keeping task Ready and wasting CPU
      • Confusing Running with waiting
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard