Advanced Operating Systems
This document describes the provided SOS framework. This is provided to make it easier for you to get started with the project. The source code itself should be reasonably well commented, and you should ensure that you understand the provided source code.
Although you are free to change the build system and layout of the project it is discouraged for the following reasons:
SConstruct and the SCons build system
We have provided a fairly comprehensive build system for you, however you will need to edit the SConstruct (found in projects/sos/) throughout your project as you add new libraries and applications. The SConstruct itself is commented, this documentation is meant to supplement those comments.
The SConstruct basically does the following:
Each library needs to be enumerated and added to each build context, note some libraries are actually used multiple times in multiple envirnments. For instance the libs/c library is included in the rootserver_env, the tools_env and the app_env and will be built three times too. To create a library you will need to complete a number of steps:
Executables are setup in a similar way to libraries. However instead of living in the libs directory they live at the top level of the project.
You should note that the
Most of the code you will write will be in the
The implementation has been kept very simple, (you wouldn't want us to
do all the fun bits would you!). The interesting thing here is the
startup procedure, which should be fairly easy to follow in
You may be wondering why we spawn a separate thread to handle most of
the initialisation. The main reason for this is so that we can keep
things simple (no really!). In the
There are of course other ways you could structure your start-up
protocol and operating system so that this is not required. For example,
you may want to have a separate thread for each interrupt handler. Or you
may wish to restrict
Is a simple L4 environment library to make some of the calls to L4 simpler, L4 helper "library". At some stage you will need to modify it to re-implement the sos_usleep function on your clock driver.
So that you don't have to write everything from scratch, we provide you with some libraries to get you going.
Last modified: Thu Jul 27 14:34:44 EST 2006