MCPcopy Index your code
hub / github.com/AntoineSebert/dandelion

github.com/AntoineSebert/dandelion @0.3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.3.0 ↗ · + Follow
146 symbols 270 edges 24 files 52 documented · 36%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Dandelion

License: CC BY-NC-SA
4.0

🚀 Dandelion : Microkernel Real-Time Operating System in Rust

Dandelion. Meet your constraints.

Ainsi, toujours poussés vers de nouveaux rivages,

Dans la nuit éternelle emportés sans retour,

Ne pourrons-nous jamais sur l’océan des âges

Jeter l’ancre un seul jour ?

Table of contents

Motivation

This project aims to create a microkernel real-time operating system using the Rust language. It addresses a large area of design techniques and algorithms so as to reach three defined goals :

  • deterministic execution time of the programs (or subparts of them), allowing the processes to be managed accurately
  • correctness of the time when a result is expected, to meet or miss the deadlines, where treatment marks the difference between soft and hard RTOS
  • predictability of the deadline associated with a set of constraints to define an expected state of the system

Main design characteristics

Dandelion is a hard time-sharing RTOS with a three-level scheduler - admitter (long-term) : estimate job completion time and accept it or not - swapper (medium-term) : swaps in and out the processes, depending on their activity - dispatcher (short-term) : decide which ready process to run and to which processor/core to assign

Technical choices

Getting started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

First of all, you need to install the Rust toolchain, available on the official website. Then you need to install an emulator to run the RTOS. We recommand Qemu, but any other emulator able to read iso images is suitable for the job.

Installing

A step by step series of examples that tell you how to get a development env running. Say what the step will be

git clone https://github.com/AntoineSebert/dandelion
cd dandelion

If you want to clone dandelion in a particular folder, use

git clone https://github.com/AntoineSebert/dandelion location
cd location/dandelion

Then you need to build the project and generate an iso image of the RTOS.

cargo build
cargo run parameters
qemu ... dandelion.iso

End with an example of getting some data out of the system or using it for a little demo.

Running the tests

Explain how to run the automated tests for this system.

Deployment

Add additional notes about how to deploy this on a live system.

Build tool

  • cargo - the official Rust build tool

Documentation

The documentation for this repository can be found at https://github.com/AntoineSebert/dandelion/documentation

File hierarchy

--src/
  +--bin/
  |  +--test-basic-boot.rs
  |  +--test-exception-breakpoint.rs
  |  +--test-exception-double-fault-stack-overflow.rs
  |  +--test-firm-deadline-exception.rs
  |  +--test-hard-deadline-exception.rs
  |  +--test-panic.rs
  |  +--test-soft-deadline-exception.rs
  |  +--test-task-remaining-exception.rs
  |  +--test-time-remaining-exception.rs
  +--kernel/
  |  +--ipc/
  |  |  +--mod.rs
  |  +--scheduler/
  |  |  +--mod.rs
  |  |  +--admitter.rs
  |  |  +--dispatcher.rs
  |  |  +--swapper.rs
  |  +--shell/
  |  |  +--mod.rs
  |  +--vmm/
  |  |  +--mod.rs
  |  |  +--gdt.rs
  |  |  +--memory.rs
  |  +--mod.rs
  |  +--acpi.rs
  |  +--interrupt.rs
  |  +--process.rs
  |  +--serial.rs
  |  +--time.rs
  |  +--vga_buffer.rs
  +--lib.rs
  +--main.rs

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

License

This project is licensed under the CC BY-NC-SA License - see the LICENSE.md file for details.

Acknowledgments

  • My supervisor, Petrovski
  • M. Bartlett
  • N. Wiratunga
  • My friends
  • My family

Core symbols most depended-on inside this repo

init
called by 8
src/lib.rs
get_process_priority
called by 8
src/kernel/scheduler/mod.rs
hlt_loop
called by 6
src/lib.rs
get_periodicity
called by 6
src/kernel/process/task.rs
cmp
called by 6
src/kernel/process/task.rs
exit_qemu
called by 5
src/lib.rs
get_process_periodicity
called by 5
src/kernel/scheduler/mod.rs
dt_add_du
called by 4
src/kernel/time.rs

Shape

Function 90
Method 36
Class 12
Enum 8

Languages

Rust100%

Modules by API surface

src/kernel/process/task.rs22 symbols
src/kernel/vga_buffer.rs15 symbols
src/kernel/scheduler/mod.rs15 symbols
src/kernel/process/mod.rs15 symbols
src/kernel/interrupts.rs13 symbols
src/lib.rs8 symbols
src/kernel/vmm/memory.rs8 symbols
src/kernel/time.rs8 symbols
src/kernel/scheduler/dispatcher.rs7 symbols
tests/stack_overflow.rs5 symbols
tests/heap_allocation.rs5 symbols
src/kernel/vmm/allocator.rs5 symbols

For agents

$ claude mcp add dandelion \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact