[TOS] Operating Systems

Joel Sherrill joel.sherrill at gmail.com
Thu Mar 7 18:26:21 UTC 2013


On Thu, Mar 7, 2013 at 10:16 AM, Matt Jadud <matt at jadud.com> wrote:

> Hi all,
>
> We've kicked this around before, but I don't think we went into depth. I'm
> thinking about an operating systems course next fall, and wonder what kind
> of ideas might be floating around in all y'alls heads.
>
> Context/Background
> ===============
>
> I'm teaching Computer Organization this term with "Elements of Computing
> Systems." I think it is a marvelous text, and I love constructive/hands-on
> approaches to teaching computing.
>
> When I studied Operating Systems, we used NachOS.
>
> http://homes.cs.washington.edu/~tom/nachos/
>

RTEMS (http://www.rtems.org) has been used in some OS classes and ECE
classes. University of Saskatchewan has used it for a number of years in
at least this class

http://www.engr.usask.ca/classes/EP/414/

I could ask for other places and get updated info from the instructor. I
know
that the EP414 course is at least on its second or third instructor.

I would have to poke at some people to see how it is used at their
university.
Sometimes it is research, student projects, etc. I don't really pry. :)


>
>
> Next Semester
> ===============
>
> I'm teaching Operating Systems in the fall.
>
> I could go the NachOS route.
>
> It would be very cool to do something with FreeRTOS, perhaps even with
> real hardware (a lab of R-Pis, the BeagleBone, or perhaps an AllWinner
> A10-based board?). Or, even, to contribute to/write/rewrite components and
> explore performance/correctness/etc. as a result of what we do. (For
> example, what if we remove the (likely very savvy) scheduler from FreeRTOS
> and replace it with a simple round-robin scheduler?)
>
> http://www.freertos.org
>

RTEMS actually has a pluggable scheduler framework which exposes this
nicely. It was
initially implemented as a GSOC 2010 project and a follow up project in
2011 added
EDF and CBS schedulers. I added our SMP scheduler. We actually have an Open
Project for more work in this area:

Doxygen for Scheduler Framework and Schedulers:
http://www.rtems.org/onlinedocs/doxygen/cpukit/html/group__ScoreScheduler.html

Open Project for Scheduler:
http://www.rtems.org/wiki/index.php/SuperCore_Scheduler

We also have a Scheduler Simulator which uses some of the OS source combined
with a simple scripting language and runs natively on Linux. This
eliminates the
complexity of writing odd test cases and gets you off hardware. You can
easily
and repeatedly run scenarios on a new algorithm with the focus on the
decision
logic of the scheduling algorithm.

It really helps to develop and debug algorithms and can be used to test the
same
scheduling algorithm on an SMP system with any number of cores. The script
commands
are discrete events like clock ticks, blocking, readying creating a task,
changing priority, etc.
They correspond to a handful or threading primitives which impact thread
state
and the scheduler. The focus is on the decisions of the scheduling
algorithm.

Disclaimer; The Scheduler Simulator may need a refresh to be in sync with
the source.
It references specific files in the RTEMS source in its Makefiles.

>
>
> Question/Ask
> ===============
>
> I think we have a colleague on the list from the FreeRTOS project. If I
> want my students to have a constructive/hands-on exposure to operating
> systems, could we sketch out (in this space or elsewhere) what a course
> built around FreeRTOS might look like? (Ideas follow... but, it's
> brainstormy at this point.)
>
> That's certainly not me. :)


> For example, when one goes the NachOS route, students write an NFS
> component, then a scheduler, then a filesystem, etc. I'm not suggesting
> that we *have* to do those kinds of things, but they're what are *in my
> head*. And, I don't have personal experience (at this moment) with
> FreeRTOS... so, I have reading to do. And it's hard for me to imagine what
> I might do. But, textbook choices are coming up, and I have to decide if
> I'll use a text, or just use articles from the ACM/IEEE, etc.
>
>
Off the top of my head, we have pluggable frameworks for filesystems, CPU
schedulers, malloc debug
and statistics, and (I think) thanks to GSOC disk caching algorithms.

My personal view on real-time embedded systems is that each application is
unique and really should be able
to select the best algorithms for managing the various resources.  One size
definitely doesn't fit all but in reality,
one size fits most. :)

We have rate monotonic scheduling support as well as priority ceiling and
inheritance.

If we are missing any resources you need to teach with, I will go out on a
limb and say our
community will do our best to help provide it. I have about 1300 slides
including internal
architecture slides I use when I teach a week long RTEMS class.

I would even entertain the notion of webcasting to your class or showing up
at the university
in person if timing work out. I am in Huntsville Alabama and Google says I
am only about 5
(boring) hours from Berea.

--joel sherrill
RTEMS


> So, I thought I'd throw this half-baked question out to the hive mind, and
> see what kinds of ideas come back. My primary concern is time: that is, the
> from-scratch course design for next fall will take a lot of time, whereas a
> NachOS approach is well traveled, and I'll find a lot of resources to
> support me. But, it might be that I can follow a NachOS-like roadmap, but
> use a smaller codebase that is actually used in the world, and do something
> interesting with it that is of high value to the students.
>
> Thoughts?
>
> Many thanks,
> Matt
>
> _______________________________________________
> tos mailing list
> tos at teachingopensource.org
> http://lists.teachingopensource.org/mailman/listinfo/tos
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.teachingopensource.org/pipermail/tos/attachments/20130307/1baf793f/attachment.html>


More information about the tos mailing list