GithubHelp home page GithubHelp logo

wangzhi723 / arceos Goto Github PK

View Code? Open in Web Editor NEW

This project forked from arceos-org/arceos

0.0 0.0 0.0 356 KB

An experimental modular OS written in Rust.

License: Apache License 2.0

C 5.17% Assembly 2.14% Rust 90.50% Makefile 2.20%

arceos's Introduction

ArceOS

CI

An experimental modular operating system (or unikernel) written in Rust.

ArceOS was inspired a lot by Unikraft.

๐Ÿšง Working In Progress.

Features & TODOs

  • Architecture: riscv64, aarch64
  • Platform: QEMU virt riscv64/aarch64
  • Multi-thread
  • Cooperative FIFO scheduler
  • VirtIO net/blk drivers
  • TCP net stack using smoltcp
  • File system
  • Compatible with Linux apps
  • Synchronization/Mutex
  • Interrupt driven device I/O
  • Async I/O
  • Kernel preemption
  • SMP

Example apps

Example applications can be found in the apps/ directory. All applications must at least depend on the following modules, while other modules are optional:

  • axruntime: Bootstraping from the bare-metal environment, and initialization.
  • axhal: Hardware abstraction layer, provides unified APIs for cross-platform.
  • axconfig: Platform constants and kernel parameters, such as physical memory base, kernel load addresses, stack size, etc.
  • axlog: Multi-level log definition and printing.
  • axerror: Error code definition.

The currently supported applications (Rust), as well as their dependent modules and features, are shown in the following table:

App Extra modules Enabled features Description
helloworld A minimal app that just prints a string
exception paging Exception handling test
memtest axalloc alloc, paging Dynamic memory allocation test
multitask axalloc, axtask alloc, paging, multitask, sched_fifo Multi-threading test
httpclient axalloc, axdriver, axnet alloc, paging, net A simple client that sends an HTTP request and then prints the response
echoserver axalloc, axdriver, axnet, axtask alloc, paging, net, multitask A multi-threaded TCP server that reverses messages sent by the client
httpserver axalloc, axdriver, axnet, axtask alloc, paging, net, multitask A multi-threaded HTTP server that serves a static web page

Build & Run

Rust apps

make ARCH=<arch> APP=<app> LOG=<log> NET=[on|off] FS=[on|off] run

Where <arch> should be one of riscv64, aarch64.

<log> should be one of off, error, warn, info, debug, trace.

<app> should be one of the application names. (as shown in the apps/ directory)

C apps

make ARCH=<arch> APP=<app> LOG=<log> NET=[on|off] FS=[on|off] APP_LANG=c run

Design

arceos's People

Contributors

chyyuu avatar coolyjg avatar equation314 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.