OSLib Logo

SourceForge Logo
Project Overview
   The libraries
   The eXtender
Mailing List
Related Links

OSLib Overview

What is OSLib?

OSLib is a collection of low level functions aimed to help programmers in developing system software, ranging from small programs for embedded systems to complex Operating System kernels. Using OSLib, the system programmer can focus on the software itself, without caring about the interaction with the hardware. In this sense, OSLib is similar to the Flux OS Toolkit.

From another point of view, OSLib provides an ``easy'' access to the hardware, without introducing any useless abstraction, and can be seen as a generic support layer for any operating system service. In this sense, it is similar to the MIT ExoKernel .

Note that OSLib does not force to use any particular OS structure, but can support any conventional or innovative structure, such as the monolithic one, the microkernel-based one, or the vertical structured one.

Why OSLib?

Why developing and using OSLib instead of using the Flux OSKIT or the ExoKernel?

Well, our design goal is simplicity, so we are interested in a small set of easy to use functions. The Flux OSKIT provides a lot of functionalities (including the access to hardware devices such as hard disks, video cards, and so on), but it is not small (the current distribution is a gziped tar file of about 10Mbytes) nor simple (it uses a complex programming interface like COM). OSLib, instead, is small (the full distribution is a gziped tar file of about 3-400KBytes) and simple (the programming interface is composed of about 20 functions, plus the standard C and math libraries).

The ExoKernel is also a large and complex project; moreover, it enforces a fixed system structure (the vertical structure, that tend to push all the OS functionalities in the application code), while OSLib supports any system structure.

How does OSLib look like?

OSLib is a collection of functions providing a standard C interface, grouped in 4 distinct libraries: Depending on its requirements, an application can link only the code that it really needs (for example, a simple monoprogrammed application that does not need to use interrupts and timers and does not need the standard libraries can link only xlib) reducing the object size.