![BurritOS Logo](assets/logo/logo_full.png) # BurritOS BurritOS (BurritOS Using Rust Really Improves The Operating System) is an educational operating system written in Rust and running on a RISC-V emulator. It aims to be used as an educational platform for learning about operating systems. Based on [NachOS](https://homes.cs.washington.edu/~tom/nachos/) (Copyright (c) 1992-1993 The Regents of the University of California. All rights reserved.) ## Progress overview ![Progress overview](./assets/progress_overview.png) Currently, the BurritOS project simulator contains a RISC-V processing unit supporting all 47 base instructions plus multiplication and 32bit floating point operations. RAM and the interrupt controller are also integrated. Both the memory management unit and the Disk are written but not tested nor integrated yet. On the kernel side, synchronization primitives and scheduling logic are all implemented except for Conditions. ## Build instructions To build in release mode: ``` $ cargo build -r ``` To build in development mode: ``` $ cargo build ``` The generated executable can then be found in the `./target` directory. ## Running BurritOS *In the following examples, BurritOS is started by directly invoking its executable. However, replacing this direct invocation by `cargo run -- ` would garner the same result.* As it stands, BurritOS does not include a virtual console nor a shell for dynamic user interaction. Thus, programs need to be manually loaded into the system memory. To perform this operation: ``` $ ./burritos --executable ``` ## Help BurritOS provides a succinct manual. To display this manual: ``` $ ./burritos --help ``` ## Documentation Documentation for all components of the BurritOS project can be generated using the following command: ``` $ cargo doc ``` The generated web documentation can be found in the `./target/doc` directory. ## Tests BurritOS is unit tested using the cargo provided testing framework. However, some tests, most notably the Machine tests, require access to a few files **which need to be generated first**. To generate test files: ``` $ make all ``` Afterwards, tests can be run with: ``` $ cargo test ``` All make artifacts can be found in the `./target` directory. ## Authors Amaury Brodu, Abdelmajid El Bahri, François Autin, Quentin Legot, Baptiste Meauze, Gabriel Moysan, Rémi Rativel, Samy Solhi