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 ?
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
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
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.
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.
First you need to clone the repository:
git clone https://github.com/AntoineSebert/dandelion
cd dandelion
Then you need to build the project and generate an iso image of the RTOS:
cargo update
cargo build
Once all previous steps have been completed successfully, simply run the project:
cargo run
cargo test
This project is licensed under the CC BY-NC-SA License - see the LICENSE.md file for details.