FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [April 2017 Threads] V9.0.0 round robin bahaviour simulation on windows 10, dual core PCPosted by bobbyfengb1124 on April 8, 2017 Hi,
I am doing a round robin simulation on my dual core PC running Windows 10.
So I am using the windows port.
I am trying to create a task1, then in task1, I create a short task task2 with same priority, then I call taskyield() to give up the processor.
based on my understanding of the sheduling behaviour, task2 should always run after I call taskyield(), when task2 is completed, task1 will be schedule, if it is in a single processor environment.
However, what I experience is that sometimes task2 will be scheduled after taskyield() is called in task1, sometimes task1 will be running again after taskyield() is called.
May I check with you if the simulation version will utilized the dual processors when schedule the tasks with same priority?
Thanks & Regards
Feng Bo
V9.0.0 round robin bahaviour simulation on windows 10, dual core PCPosted by richard_damon on April 8, 2017 I would prsume that the Windows simulator will run single (Windows) threaded (and thus single core) as that is the mode that most looks like the processors it runs on natively. What can happen if you have Preemption enable is that if the (simulated) timer tic occurs just after the call to taskyield(), then the taskyield call would switch to task2, and the time tick then switchs control back to task1.
V9.0.0 round robin bahaviour simulation on windows 10, dual core PCPosted by rtel on April 8, 2017 Correct assumption - only a single core is used.
From the OP:
>when task2 is completed
What do you mean by completing a task? Does the task delete itself?
V9.0.0 round robin bahaviour simulation on windows 10, dual core PCPosted by bobbyfengb1124 on April 9, 2017 Yes, task 2 will delete itself.
V9.0.0 round robin bahaviour simulation on windows 10, dual core PCPosted by bobbyfengb1124 on April 9, 2017 Thank you Richard, but I think what you are refering to is the TIMESLICING option, right?
When I disable TIMESLICING option, when task1 call taskyield(), it will always come back to schedule task1 again.
V9.0.0 round robin bahaviour simulation on windows 10, dual core PCPosted by bobbyfengb1124 on April 9, 2017
V9.0.0 round robin bahaviour simulation on windows 10, dual core PCPosted by richard_damon on April 10, 2017 Yes, I was thinking of Time Slicing (which requries Preemption)
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|