Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gmelodie/cruzos
My own OS written in Rust
https://github.com/gmelodie/cruzos
Last synced: 25 days ago
JSON representation
My own OS written in Rust
- Host: GitHub
- URL: https://github.com/gmelodie/cruzos
- Owner: gmelodie
- License: mit
- Created: 2024-04-01T17:12:30.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-05-28T15:55:16.000Z (5 months ago)
- Last Synced: 2024-05-29T07:07:25.344Z (5 months ago)
- Language: Rust
- Size: 103 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# cruzOS
My own OS written in Rust```bash
sudo apt install qemu-kvm
rustup toolchain install nightly
rustup override set nightly
cargo install bootimage
rustup component add llvm-tools-preview
```## Memory allocators
- **Bump Allocator:** grows in the same direction once all allocated blocks are deallocated, reset memory.
- **Linked List Allocator:** freed blocks with at least 16 bytes are put in a linked list. Reutilizes suitable blocks. (obs: if you deallocate 8 bytes, those are lots until all references are deallocated and memory is reset like in bump allocator)## Async
There is a naïve task scheduler at `/src/task/simple_executor.rs`. Tasks can be spawned after executor starts `run`ing. Tasks are not processes. They don't have their own contexes or memory.## Processes
Currently implementing context switching.## TODOs
- VGA printing queue with daemon job. If can't lock vga, add it to queue.
- UEFI over BIOS
- USB
- HDMI or DisplayPort over VGA
- Process scheduling (requirements??)
- context switching
- MLFQ with configurable parameters