>>>>> "Manoj" == Manoj Apte <[EMAIL PROTECTED]> writes:

 >> The system I've settled on as most desirable -- which is what I'm
 >> using at the moment -- is a single priority design, with all tasks
 >> running to completion (or explicit reschedule), and no interrupts,
 >> just I/O polling.
 >> 

 Manoj> Ok, but then you are completely bypassing the OS. your
 Manoj> application itself manages the tasks. That would definitely
 Manoj> make it highly non-portable. 

No, it isn't quite that extreme.

The high speed I/O processing does bypass the OS (or rather, it looks
to the OS like a task, with the I/O polling and packet processing done 
in that context).  All the other background tasks are indeed plain old 
OS tasks.

What we're doing is ignoring most of the OS scheduling features
(priorities, pre-emption) as extraneous and harmful.  But scheduling
to a single priority with run-to-completion is certainly a capability
that exists in many real-time kernels.

 Manoj> Instead, an RTOS could be
 Manoj> designed to provide QoS in terms of time, where each task
 Manoj> requests a QoS in terms of period, compute time and deadline.
 Manoj> That would certainly make it efforless to port an application
 Manoj> to the ever changing hardware platforms.

Hardware platforms don't matter if you can retain the same OS.  If you 
do want to be portable across kernels, yes, then you have to think a
bit more.  Again, a minimalist approach to scheduling makes that
easier, not harder.

I agree that an RTOS could provide the more advanced features you
mention.  But there's also another benefit of run-to-completion design 
that is orthogonal to what we've talked about so far, namely that it
eliminates entirely any need to worry about shared data structures.
If you have a scheduler that is capable of pre-empting a task at
unspecified points, you have to put in either explicit critical
sections, or explicit shared data semaphores, or stuff like that.
Getting every one of them in place is VERY hard and such systems tend
to be flaky because the job is rarely completely done.

        paul
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/

Reply via email to