Skip to content
/ roOs Public

roOs | Small Basic Kernel for educational development

License

Notifications You must be signed in to change notification settings

Oxmose/roOs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

roOs - Kernel

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

Build status

Status Main Dev
CI roOs CI Plan roOs CI Plan
Codacy Codacy Badge Codacy Badge

Supported Architectures

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

Supported General Features

File Device Tree

  • FDT is used to setup the system and discover drivers
  • FDT handles used for drivers inter-operability
  • Configuration (stdin, stdout, interrupts, etc.) in FDT

Driver Management

  • Easy-to-use driver system
  • Driver attach mechanism with FDT auto-discovery

Memory Management

  • Higher-half kernel
  • Virtual and Physical memory allocator
  • Kernel Heap allocator

Interrupt and Exception Management

  • Custom Interrupts
  • Custom Exceptions

Synchronization

  • 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

Communication

  • Signals, not really POSIX signals but still signals
  • Inter-processor interrupts

Scheduler

  • Priority based scheduler (Round Robin for all the threads having the same priority)
  • Kernel threads
  • Updateable priorities
  • Sleep capable

Libraries

  • Embedded LibC
  • Structures Libraries (Vector, HashTable, Queues, etc.)

Virtual File System

  • Character-based driver support

Roadmap

You can see the planned tasks / features in the project's kanban on GitHub: https://github.com/users/Oxmose/projects/2

Testing

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.

Build and Run

To build roOs, choose the architecture you want and execute. Architecture list to use in the TARGET flag:

  • x86_i386
  • x86_64

Compilation

make target=[TARGET] TESTS=[TRUE/FALSE] DEBUG=[TRUE/FALSE] TRACE=[TRUE/FALSE]

Execution

make target=[TARGET] run

Tests, Trace and Debug

  • 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

About

roOs | Small Basic Kernel for educational development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published