All Projects → chyyuu → Os_kernel_lab

chyyuu / Os_kernel_lab

Licence: gpl-2.0
OS kernel labs based on Rust/C Lang & RISC-V 64/X86-32

Programming Languages

rust
11053 projects
Makefile
30231 projects
assembly
5116 projects

Projects that are alternatives of or similar to Os kernel lab

nightingale
A small operating system where I experiment and learn osdev.
Stars: ✭ 86 (-97.42%)
Mutual labels:  kernel, os
Xbook2
xbook2是一个基于x86处理器的32位操作系统,实现了大量的基础功能,可以拿来学习操作系统知识。
Stars: ✭ 273 (-91.81%)
Mutual labels:  kernel, os
MandelbrotOS
A community driven OS by the youth
Stars: ✭ 172 (-94.84%)
Mutual labels:  kernel, os
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-99.52%)
Mutual labels:  kernel, os
oneiric
A small kernel + OS based on how dreams work
Stars: ✭ 11 (-99.67%)
Mutual labels:  kernel, os
Sigma
Abandoned overcomplicated Microkernel using modern x86_64 features
Stars: ✭ 36 (-98.92%)
Mutual labels:  kernel, os
fpos
Free Pascal Operating System (FPOS) is a operating system consists of a minimal kernel built on FreePascal. It contains a Scheme implementation of a hard drive (ATA) driver, keyboard (PS2), serial (8250 UART), FAT32 filesystem and a small real time clock manager. The project was built to experiment with developement of operating system using a h…
Stars: ✭ 36 (-98.92%)
Mutual labels:  kernel, os
SimpleOS
Operating System Coded in Assembly and C
Stars: ✭ 72 (-97.84%)
Mutual labels:  kernel, os
ens
Supports de cours
Stars: ✭ 13 (-99.61%)
Mutual labels:  kernel, os
ByteOS
A simple hobby operating system for the x86-64 architecture, written in C.
Stars: ✭ 47 (-98.59%)
Mutual labels:  kernel, os
Tock
A secure embedded operating system for microcontrollers
Stars: ✭ 3,258 (-2.22%)
Mutual labels:  risc-v, kernel
Lemonos
The Lemon Operating System https://lemonos.org
Stars: ✭ 260 (-92.2%)
Mutual labels:  kernel, os
TravorOS
A simple OS running on Intel x86 architecture | No longer updating
Stars: ✭ 24 (-99.28%)
Mutual labels:  kernel, os
novusk
A kernel written in Rust
Stars: ✭ 61 (-98.17%)
Mutual labels:  kernel, os
OpenHarmony
华为鸿蒙分布式操作系统(Huawei OpenHarmony)开发技术交流,鸿蒙技术资料,手册,指南,共建国产操作系统万物互联新生态。
Stars: ✭ 373 (-88.81%)
Mutual labels:  kernel, os
GENADEV OS
An AArch64 hobbyist OS for the Raspberry Pi 3 B+
Stars: ✭ 14 (-99.58%)
Mutual labels:  kernel, os
os
x86-64 assembly µkernel
Stars: ✭ 15 (-99.55%)
Mutual labels:  kernel, os
poplar
Microkernel and userspace written in Rust exploring modern ideas
Stars: ✭ 217 (-93.49%)
Mutual labels:  kernel, os
RocketOS
RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational purposes primarily, but it still is a serious project. It is currently in its infancy.
Stars: ✭ 23 (-99.31%)
Mutual labels:  kernel, os
LudOS
A toy monolithic kernel written in C++
Stars: ✭ 38 (-98.86%)
Mutual labels:  kernel, os

rCore-Tutorial-v3

rCore-Tutorial version 3.5. See the Documentation in Chinese.

news

  • 2021.11.20: Now we are updating our labs. Please checkout chX-dev Branches for our current new labs. (Notice: please see the [Dependency] section in the end of this doc)

Overview

This project aims to show how to write an Unix-like OS running on RISC-V platforms from scratch in Rust for beginners without any background knowledge about computer architectures, assembly languages or operating systems.

Features

  • Platform supported: qemu-system-riscv64 simulator or dev boards based on Kendryte K210 SoC such as Maix Dock
  • OS
    • concurrency of multiple processes
    • preemptive scheduling(Round-Robin algorithm)
    • dynamic memory management in kernel
    • virtual memory
    • a simple file system with a block cache
    • an interactive shell in the userspace
  • only 4K+ LoC
  • A detailed documentation in Chinese in spite of the lack of comments in the code(English version is not available at present)

Run our project

TODO:

Working in progress

Now we are still updating our project, you can find latest changes on branches chX-dev such as ch1-dev. We are intended to publish first release 3.5.0 after completing most of the tasks mentioned below.

Overall progress: ch7

Completed

  • automatically clean up and rebuild before running our project on a different platform
  • fix power series application in early chapters, now you can find modulus in the output
  • use UPSafeCell instead of RefCell or spin::Mutex in order to access static data structures and adjust its API so that it cannot be borrowed twice at a time(mention & .exclusive_access().task[0] in run_first_task)
  • move TaskContext into TaskControlBlock instead of restoring it in place on kernel stack(since ch3), eliminating annoying task_cx_ptr2
  • replace llvm_asm! with asm!
  • expand the fs image size generated by rcore-fs-fuse to 128MiB
  • add a new test named huge_write which evaluates the fs performance(qemu~500KiB/s k210~50KiB/s)
  • flush all block cache to disk after a fs transaction which involves write operation
  • replace spin::Mutex with UPSafeCell before SMP chapter
  • add codes for a new chapter about synchronization & mutual exclusion(uniprocessor only)

Todo(High priority)

  • support Allwinner's RISC-V D1 chip
  • bug fix: we should call find_pte rather than find_pte_create in PageTable::unmap
  • bug fix: check validity of level-3 pte in find_pte instead of checking it outside this function
  • use old fs image optionally, do not always rebuild the image
  • add new system calls: getdents64/fstat
  • shell functionality improvement(to be continued...)
  • give every non-zero process exit code an unique and clear error type
  • effective error handling of mm module

Todo(Low priority)

  • rewrite practice doc and remove some inproper questions
  • provide smooth debug experience at a Rust source code level
  • format the code using official tools

Crates

We will add them later.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].