Skip to content

Latest commit

 

History

History
191 lines (108 loc) · 4.87 KB

README_en.md

File metadata and controls

191 lines (108 loc) · 4.87 KB

github ci last-commit languages MIT License LICENSE 996.icu

English | 中文

SimpleKernel

Key Words

  • kernel
  • x86, x86_64, riscv64
  • C, C++, AT&T ASM
  • cmake
  • multiboot2, opensbi

Abstract

SimpleKernel, a simple kernel for learning. Contains the basic functionality of an operating system

Kernels with different levels of completion are available, and you can start from where you like.

Each branch:

  1. boot: system startup, from the bootloader to the kernel entry
  2. printf: basic character output for debud
  3. parse_boot_info: reliminary parsing of the information passed by the bootloader
  4. pmm: physical memory management
  5. vmm: virtual memory management
  6. heap: heap management
  7. lib: part of c++ std/stl
  8. intr: interrupt management
  9. task: TODO
  10. filesystem: TODO
  11. device management: TODO
  12. syscall: TODO
  13. user mode: TODO

Environment

  • Common tools

    Cross compiler x86_64-elf-gcc, riscv64-unknown-elf-gcc, arm-none-eabi-gcc

    Debug x86_64-elf-gdb, riscv64-unknown-elf-gdb, arm-none-eabi-gdb

    Build cmake

    Simulator bochs, qemu

  • For x86

    Bootloader grub

    ISO xorriso

  • For riscv64

    Bootloader opensbi

  • For arm

    TODO

RUN

git clone https://github.com/Simple-XX/SimpleKernel.git
cd SimpleKernel/
bash ./run.sh

Screenshot

Directory Structure

The whole project according to the functional modules delimited molecular directory, each subdirectory and then divided header file and source file directory, so that the architecture is clear and easy to understand.

Directory Design

  • Principle

    The naming of the directory should accurately describe the basic function of the module, it is recommended to use lowercase letters and do not contain underline, dot and other special symbols;

    Directories must be placed under the parent directory that they contain, and they need to be explicitly coupled to other directories.

Dependencies

  • Principle

    New components are often dependent on existing components of the system, and the components that are directly dependent must be specified with minimal coupling.

Header File

Naming

  • Principle

    Header file naming should accurately describe the contents of the module contained in the file to achieve the purpose of easy to understand.

CMake

Test

CI

Each push will be tested using Github Action.

Code Style

  • git commit:

    [tools/Git Commit 规范.pdf](./tools/Git Commit 规范.pdf)

  • code style

    Specified by .clang-format

TODO

  • concurrent
  • File system
  • drive

CONTRIBUTORS

MRNIU

cy295957410

rakino

xiaoerlaigeid

digmouse233

KehRoche

CONTRIBUTING

Free to PR!

Thanks

osdev

GRUB 在 Mac 上的安装

multiboot

《程序员的自我修养--链接、装载与库》(俞甲子 石凡 潘爱民)

JamesM's kernel development tutorials

xOS

hurlex

howerj/os

cfenollosa/os-tutorial

omarrx024/xos

PurpleBooth/project-title

0xAX weblong

How-to-Make-a-Computer-Operating-System

coding-style

DNKernel

c-algorithms

Linux内核中的中断栈与内核栈的补充说明

Linux进程管理 (1)进程的诞生

SynestiaOS

Donors

CopyRight

MIT LICENCE