brickOS
The Four Projects
  1. Investigate the way the scheduling algorithm is currently implemented.  Then change it so that low priority processes cannot be starved out by higher priority processes.
    <PowerPoint>
     <kernel>  <documentation>
  2. Investigate the way the scheduling algorithm is currently implemented.  Then change it so that Linux-like scheduling is implemented, with goodness, quanta, etc...
    <PowerPoint>
      <kernel>  <documentation>
  3. Memory is currently allocated in a first fit manner.  Add a system call mm_algorithm_used() which will let a program select the memory allocation algorithm from among best fit, worst fit, next fit and first fit.
    <PowerPoint>  <kernel>  <documentation>
  4. Implement a method whereby the programmer can designate some sensor to be real-time.  Then when this sensor has data, a process waiting on that data will be immediately awoken and scheduled.
    <PowerPoint>  <kernel>  <documentation>  <MOVIE!>
Project Requirements
  • Each project has to be thoroughly documented.  The code itself must clearly indicate where changes have been made (with old code commented out and new code inserted).  Use a //---begin-change header and //---end-change footer so that a script can read all your code out of the files you have changed. 
  • You should also create a separate document describing how things worked before you got there, and how things work after you made your changes.
  • Be clear on the big picture as well as any interesting details when describing your work.
  • (This may be the most non-trivial requirement.)  Write a program that will demonstrate that the change you made had some effect.  For example, if you did the first project suggested to the left, you should write a program with a process that gets starved in original brickOS, but not in your version, and somehow communicates this to the user. 
Links:

First Lego League
Competitions for middle school students --- check out what these kids are required to do!

BrickOS
This is the official site for development and releases of the BrickOS operating system.

Hardware and Kernel Overview
Contains information about a slightly old implementation of legOS

Kernel and Programming Documentation
Great source for all the kernel files and the API, in C and C++