FreeRTOS - Task SchedulingWhy might time-slicing not occur between two equal priority tasks even if configUSE_TIME_SLICING is enabled?AOne task never yields or blocks, monopolizing CPUBTasks have different stack sizesCconfigUSE_PREEMPTION is set to 0DThe idle task has higher priorityCheck Answer
Step-by-Step SolutionSolution:Step 1: Understand conditions for time-slicingTime-slicing requires configUSE_PREEMPTION to be set to 1.Step 2: Identify why time-slicing might not happenIf configUSE_PREEMPTION is set to 0, time-slicing is ignored even if configUSE_TIME_SLICING is 1.Final Answer:configUSE_PREEMPTION is set to 0 -> Option CQuick Check:Time-slicing requires preemption = B [OK]Quick Trick: configUSE_PREEMPTION must be 1 for time-slicing to work [OK]Common Mistakes:Confusing preemption with time-slicingThinking stack size affects schedulingAssuming idle task priority is higher
Master "Task Scheduling" in FreeRTOS9 interactive learning modes - each teaches the same concept differentlyLearnWhyDeepVisualTryChallengeProjectRecallTime
More FreeRTOS Quizzes RTOS Fundamentals - Task states (Ready, Running, Blocked, Suspended) - Quiz 6medium RTOS Fundamentals - Why RTOS over bare-metal - Quiz 3easy Task Creation and Management - Task priority assignment - Quiz 13medium Task Creation and Management - Task handle usage - Quiz 7medium Task Creation and Management - Multiple tasks running concurrently - Quiz 4medium Task Creation and Management - Stack size allocation - Quiz 5medium Task Priorities - uxTaskPriorityGet() for reading priority - Quiz 2easy Task Priorities - uxTaskPriorityGet() for reading priority - Quiz 1easy Task Priorities - Choosing priorities for real applications - Quiz 10hard Task Scheduling - Priority-based scheduling - Quiz 13medium