- roOs is a kernel created for training and educational purposes. It is the result of multiple hours of work to better understand the underlying concepts related to operating systems.
- The kernel is designed around real-time operating systems concepts and will not be intended to perform as a general-purpose operating system.
Status | Main | Dev |
---|---|---|
CI | ||
Codacy |
i386 | x64 |
---|---|
Status Work in Progress |
Status Work in Progress |
Supported Processing Multicore, Singlecore |
Supported Processing Multicore, Singlecore |
Supported Drivers PIC IO-APIC Local APIC ACPI Serial Ports RTC PIT Local APIC Timers TSC VGA Text 80x25 Generic PS/2 Keyboard |
Supported Drivers PIC IO-APIC Local APIC ACPI Serial Ports RTC PIT Local APIC Timers TSC VGA Text 80x25 Generic PS/2 Keyboard |
- FDT is used to setup the system and discover drivers
- FDT handles used for drivers inter-operability
- Configuration (stdin, stdout, interrupts, etc.) in FDT
- Easy-to-use driver system
- Driver attach mechanism with FDT auto-discovery
- Higher-half kernel
- Virtual and Physical memory allocator
- Kernel Heap allocator
- Custom Interrupts
- Custom Exceptions
- Futex based synchronization
- Mutex: Non recursive/Recursive - Priority inheritance capable - FIFO and Priority-based queuing disciplines.
- Semaphore: FIFO and Priority-based queuing disciplines - Counting and Binary semaphores.
- Spinlocks
- Kernel critical section by disabling interrupts
- Signals, not really POSIX signals but still signals
- Inter-processor interrupts
- Priority based scheduler (Round Robin for all the threads having the same priority)
- Kernel threads
- Updateable priorities
- Sleep capable
- Embedded LibC
- Structures Libraries (Vector, HashTable, Queues, etc.)
- Character-based driver support
You can see the planned tasks / features in the project's kanban on GitHub: https://github.com/users/Oxmose/projects/2
roOs has a test suite allowing extensible testing. Using internal memory test buffers, the testing framework allows validating the system's correct behavior. Tests can be added as new features are developed.
To build roOs, choose the architecture you want and execute. Architecture list to use in the TARGET flag:
- x86_i386
- x86_64
make target=[TARGET] TESTS=[TRUE/FALSE] DEBUG=[TRUE/FALSE] TRACE=[TRUE/FALSE]
make target=[TARGET] run
- TESTS flag set to TRUE to enable internal testing
- DEBUG flag set to TRUE to enable debuging support (-O0 -g3)
- TRACE flag set to TRUE to enable kernel tracing