First of all, thanks to all for the helpful replies.
I have simplified my example, because I was only interested in understanding if 
there was particular behavior performed by the new scheduler after a 
sched_yield() call. 
Anyway, I try to explain better my requirements. I have to implement a task 
which splits its job into two different blocks: the first concerns operations 
which must be performed within a limited time interval, so a very fast response 
is required; the second one concerns operations which can be a little delayed 
without problems. For some other reasons, the two blocks cannot be implemented 
in two different tasks. Therefore, because of the presence of the real-time 
block, an high real-time priority must be assigned to the whole task. On the 
other hand, if it uses the resources for a long time interval, it should 
sched_yield on behalf of other tasks (of course only after the real-time block 
operations have been completed).  

Giovanni
    
---------- Initial Header -----------

>From      : [EMAIL PROTECTED]
To          : "Giovanni Tusa" [EMAIL PROTECTED]
Cc          : linux-kernel@vger.kernel.org
Date      : Sun, 27 Feb 2005 12:02:13 -0500
Subject : Re: sched_yield behavior

> On Sun, 2005-02-27 at 11:58 +0100, Giovanni Tusa wrote:
> > Hi all,
> > I have a question about the sched_yield behavior of Linux O(1) scheduler,
> > for RT tasks.
> > By reading some documentation, I found that " ....real-time tasks are a
> > special case, because
> > when they want to explicitly yield the processor to other waiting processes,
> > they are merely
> > moved to the end of their priority list (and not inserted into the expired
> > array, like conventional
> > processes)."
> > I have to implement an RT task with the highest priority in the system (it
> > is also the only task within the
> > priority list for such priority level). Moreover, it has to be a SCHED_FIFO
> > task,  so that it can preempt
> > SCHED_RR ones, because of its strong real-time requirements. However,
> > sometimes it should relinquish the
> > CPU, to give to other tasks a chance to run.
> > Now, what happen if it gives up the CPU by means of the sched_yield() system
> > call?
> > If  I am not wrong, the scheduler will choose it again (it will be still the
> > higher priority task, and the only of its priority list).
> > I have to add an explicit sleep to effectively relinquish the CPU for some
> > time, or the scheduler can deal with such a
> > situation in another way?
> 
> What exactly are you trying to do?  I don't understand how the task
> could have "strong real-time requirements" if it's CPU bound.  What is
> the exact nature of the real time constraint?
> 
> Lee
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 



____________________________________________________________
6X velocizzare la tua navigazione a 56k? 6X Web Accelerator di Libero!
Scaricalo su INTERNET GRATIS 6X http://www.libero.it


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to