diff --git a/src/development/README.md b/src/development/README.md index 6dc3e2b..77e6614 100644 --- a/src/development/README.md +++ b/src/development/README.md @@ -34,7 +34,7 @@ The source for this site, and our [website](https://mercury.the-system.eu.org) i All `crates`/`libraries` are in a `no-std` environment. This means we only have access to the [libcore](https://doc.rust-lang.org/core/) functionality. However, we will be using the `alloc` crate to access the heap, and`collections` to have access to data structures like `Vec`. -We should, however, have basic support for [async](https://ferrous-systems.com/blog/stable-async-on-embedded/). +We should, however, have basic support for [async](https://ferrous-systems.com/blog/stable-async-on-embedded/) and [threading]() in `core::`. ## Learning Before jumping in, I highly recommend learning some stuff abotu **Rust** and embedded development with it. @@ -45,6 +45,7 @@ A thorough series of steps might be: 4. Take a quick look through the [Embedded Rust Book](https://docs.rust-embedded.org/book/intro/index.html) 5. Read the [RISC-V Guide](https://github.com/mikeroyal/RISC-V-Guide)/[RISC-V Bytes](https://danielmangum.com/categories/risc-v-bytes/) to learn more about the **RISC-V** architecture 6. Read the OSDev Wiki entries on [Microkernels](https://wiki.osdev.org/Microkernel) and [Message Passing](https://wiki.osdev.org/Message_Passing) +7. Read the [Async Book](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html) Additionally you might want to learn about **Vulkan** if you're going to be hacking on the [GUI](/development/design/gui.md): 1. Go through the [Vulkan Tutorial (Rust)](https://kylemayes.github.io/vulkanalia/introduction.html) to learn some of the basics diff --git a/src/development/design/kernel.md b/src/development/design/kernel.md index a3f891a..9817d06 100644 --- a/src/development/design/kernel.md +++ b/src/development/design/kernel.md @@ -10,6 +10,15 @@ Afterwards, we can put focus towards building out various features. Support for multiple targets will be done via `Cargo.toml` targets, cross-compilation, and [conditional compilation](https://doc.rust-lang.org/reference/conditional-compilation.html). +## Concurrency +For performance, we will be using various concurrency programming techniques. + +For **IO** intensive operations, `async` will be used. +This will include the [filesystem](/development/design/filesystem.md), [actors](/development/design/actor.md), and [GUI](/development/design/gui.md). + +**CPU**-bound operations are better suited to individual `threads`, however. +This might include operations like *hashing*, *encryption*, and *indexing*. + ## Boot Process *To be implemented*