Re: Adding a new scheduling algorithm to Fiasco.OC
Adam Lackorzynski <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, On Thu Jul 03, 2014 at 12:09:06 +0200, Valentin Hauner wrote: > In a previous mail, you stated that a thread has a Sched_context object > embedded that stores scheduling-related information. However, I cannot > find a 1:1 relation from a Thread to a Sched_context object. > I've found various calls of the sched_context() method in 'thread.cpp', > which is defined in 'context.cpp'. Furthermore, there are several calls > of the current() method in 'thread.cpp' (returning the current context), > which is defined in 'context_base.cpp'. > > So my main question is: What is the exact relation of a Thread object to > all these classes? A Thread is derived from Context which in turn is derived from Context_base. So a Thread contains a Context and from a Thread everything in Context can be accessed (except 'private' things of course). A Sched_context is embedded in the Context class (_sched_context). > I assume that a Context object is cpu-specific, i.e. each Context object > points to its home cpu. Is that right? This would make sense since there A context 'lives' on a CPU but it can also change its CPU. The CPU info is stored in the Context so that the code knows on which CPU it is currently running. > is a home_cpu attribute and a schedule() method in that class that > handles the scheduling on a certain cpu. > > But what's the matter with Sched_context? > It seems to me that there is no 1:1 relation from a Thread to a > Sched_context since the sched_context() method called in 'thread.cpp' is > defined in 'context.cpp'. So is a Sched_context cpu-specific, too? This > would not make sense to me as a Sched_context object stores > thread-specific information such as the priority and the remaining > quantum of a thread. Generally, scheduling configuration is CPU specific. However, in this case, the Sched_context is specific to the Context/Thread, i.e. in this case a Context and Thread is the same thing and each Thread has its Sched_context. Adam -- Adam [email protected] Lackorzynski http://os.inf.tu-dresden.de/~adam/