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.
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.