ArceOS 框架设计

ArceOS的整体架构如下所示:

ArceOS 是一个开源的、组件化的Unikernel。以组合组件库的方式构建系统。使用Rust开发。

具有一下特点和功能:

  • CPU架构: x86_64, riscv64, aarch64
  • 运行平台: QEMU pc-q35 (x86_64), virt (riscv64/aarch64)
  • 支持多线程: Multi-thread
  • 调度算法: FIFO/RR/CFS scheduler
  • 虚拟IO: VirtIO net/blk/gpu drivers
  • 网络协议: TCP/UDP net stack using smoltcp
  • 同步/互斥: Synchronization/Mutex
  • SMP调度: SMP scheduling with single run queue
  • 文件系统: File system

ArceOS 由apps、crates、modules组成

  • apps: 应用程序。它的运行需要依赖于modules组件库。
  • modules: ArceOS的组件库。
  • crates: 通用的基础库。为modules实现提供支持。

当前ArceOS项目的apps列表如下:

Applications (Rust)

AppExtra modulesEnabled featuresDescription
helloworldA minimal app that just prints a string
exceptionpagingException handling test
memtestaxallocalloc, pagingDynamic memory allocation test
displayaxalloc, axdisplayalloc, paging, displayGraphic/GUI test
yieldaxalloc, axtaskalloc, paging, multitask, sched_fifoMulti-threaded yielding test
parallelaxalloc, axtaskalloc, paging, multitask, sched_fifo, irqParallel computing test (to test synchronization & mutex)
sleepaxalloc, axtaskalloc, paging, multitask, sched_fifo, irqThread sleeping test
priorityaxalloc, axtaskalloc, paging, multitask, sched_cfsThread priority test
shellaxalloc, axdriver, axfsalloc, paging, fsA simple shell that responds to filesystem operations
httpclientaxalloc, axdriver, axnetalloc, paging, netA simple client that sends an HTTP request and then prints the response
echoserveraxalloc, axdriver, axnet, axtaskalloc, paging, net, multitaskA multi-threaded TCP server that reverses messages sent by the client
httpserveraxalloc, axdriver, axnet, axtaskalloc, paging, net, multitaskA multi-threaded HTTP server that serves a static web page
udpserveraxalloc, axdriver, axnetalloc, paging, netA simple echo server using UDP protocol

Applications (C)

AppExtra modulesEnabled featuresDescription
helloworldA minimal C app that just prints a string
memtestaxallocalloc, pagingDynamic memory allocation test in C
sqlite3axalloc, axdriver, axfsalloc, paging, fp_simd, fsPorting of SQLite3