2. SO3 Architecture

The overall architecture of SO3 follows a conventional operating system organization with a user space and a kernel space. The user space represents all user files and applications; everything is accessible via a standard directory tree through a root filesystem.

The set of directories/sub-directories are generated by a well-known buildroot tool used to generate embedded Linux systems through cross-compilation. It provides a fully configurable (i.e. customizable) well-profiled user environment and can lead to a minimal sized root filesystem.

_images/SO3_Architecture.png

Fig. 2.1 Overview of the SO3 environment with user and kernel space

As depicted on this figure, SO3 is a monolithic OS like Linux where all subsystems and drivers reside in the kernel space. Major subsystems like Inter-Process Communication (IPC), scheduling, filesystem, networking, etc. including device drivers exist and provide basic functionalities. The user space is made of a very simple set of lightweight applications (ls, more, echo, cat, etc.)

2.1. SO3 Kernel Space

The kernel space uses the device tree to have information related to hardware configuration like the RAM memory base and size, device related information, and various system properties.

2.2. SO3 User Space

All user space files are located in usr/ directory. Applications and the libc is in separated directories.

2.3. The MUSL libc user space library

SO3 integrates the MUSL library as libc for its user space application.

Not all functions are available in SO3, but the functions are enabled as soon as there is a necessity to have it. Furthermore, more complex functions such as those used to manage pthreads for example are not activated since only a minimal set of functionalities and features are present.

Please do not hesitate to start a discussion thread or simply ask for adding a new feature in musl as it becomes necessary.