Dear

Thanks for your reply!

On Mon, Jun 1, 2009 at 8:46 PM, Udo A. Steinberg <udo@hypervisor.org> wrote:
On Mon, 1 Jun 2009 20:03:49 +0800 Sean (S) wrote:

S> I already go through your diploma thesis. This thesis describes the design
S> issues and implementation detail of the Periodic Mode support for Fiasco.
S> If I don't want to control thread execution with periods, deadlines and
S> etc. , how can I implement the functionality I mentioned?
S>
S> My goal is that
S>
S> In the system, there are several user threads. During a time interval,
S> some particular user threads will not be scheduled even though these
S> threads are in ready state.

In Fiasco all threads in the ready state are eligible for execution. In
fact, the ready state means that the thread is only waiting to be dispatched
by the scheduler. So if you don't want a thread to be scheduled, it must not
be in the ready state.


S> How can I implement it? Does any exist function/API support it?

Before we can give you a definite answer, we need to know why you don't
want a particular thread to be scheduled. Here are some questions:

1) What is the event that makes an otherwise ready thread ineligible to
execute (according to your use case)?


2) What is the event that makes it eligible for scheduling again?

I want to build another scheduling framework in Fiasco. 
I will design a control server (scheduler) here, and it will plan a time schedule for all user threads to determine in which time, which user threads can be scheduled.

For example, there are 7 user threads in the system. I group them into three group.
Group A : user thread 1, 2, 3
Group B : user thread 4, 5
Group C : user thread 6, 7
 
If Group A is eligible in the time interval {0~3 }, Group B is {3~4}, and Group C is {5~8}.

At time 0, the user thread 4, 5, 6, 7 might be in the ready state but the system scheduler can't schedule them to execute. In other word, the user thread 1, 2, 3 are eligible and the user thread 4, 5, 6, 7 are ineligible during time 0 to time 3. So at time 3, the user thread 1, 2, 3, 6, 7 will change to be ineligible and user thread 4, 5 will be eligible.

I also need to consider how to implement a precise time interval and other issues about the control server design. But in first, I want to find some way to implement the behavior of marking the user threads ineligible.




Without answers to these questions we cannot tell you what API you might be
able to use or how you would have to implement such a mechanism yourself.

Cheers,

Sorry for my poor English and lengthy question.
Very thanks for your kindness!
 

       - Udo

_______________________________________________
l4-hackers mailing list
l4-hackers@os.inf.tu-dresden.de
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers