ManticoreOS: A research operating system to explore parakernels
source link: https://www.tuicool.com/articles/hit/j2mYRz6
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Manticore Operating System
A research operating system to explore parakernels .
Table of Contents
Introduction
Manticore is a research operating system, written in Rust, with the aim of exploring the parakernel OS architecture.
The OS is increasingly a bottleneck for server applications that want to take maximum advantage of the hardware. Many traditional kernel interfaces (such as in POSIX) were designed when I/O was significantly slower than the CPU. However, today I/O is getting faster, but single-threaded CPU performance has stagnated. For example, a 40 GbE NIC can receive a cache-line sized packet faster than the CPU can access its last-level cache (LLC), which makes it tricky for an OS to keep up with packets arriving from the network. Similarly, non-volatile memory (NVM) access speed is getting closer to DRAM speeds, which challenges OS abstractions for storage.
To address this OS bottleneck, server applications are increasingly adopting kernel-bypass techniques. For example, the Seastar framework is an OS implemented in userspace, which implements its own CPU and I/O scheduler, and bypasses the Linux kernel as much as it can. Parakernel is an OS architecture that eliminates many OS abstractions (similar to exokernels ) and partitions hardware resources (similar to multikernels ) to facilitate high-performance server application with increased application-level parallelism and predictable tail latency.
Features
- Process scheduling (no kernel threads)
- Hardware resource partitioning
- Virtual memory (no demand paging)
- Kernel-bypass by default
- Non-blocking OS system calls
- ELF executable support
Getting Started
Building from Sources
First, install the toolchain, which includes
rustup
, Rust, and other dependencies:
./scripts/install-toolchain
Now that you have the toolchain installed, you can build Manticore with:
make
The build system generates a kernel.iso
image, which you can launch under QEMU with:
$ ./scripts/run kernel.iso
For more information, see Manticore Hacker's Guide .
Running Example Applications
Once kernel.elf
is built, you can build an user space echo server with:
$ make -C usr/echod
and launch it under QEMU with:
$ ./scripts/run usr/echod/echod.iso
Supported Hardware
-
Legacy-free PC with a 64-bit x86 processor
- xAPIC2 interrupt controller
- MSI-X interrupt delivery
- PCIe 3.0 bus
- VirtIO network device
Code Structure
Manticore's code is structured into different directories as follows:
-
arch
: machine architecture specific code -
drivers
: device drivers -
kernel
: kernel services (e.g., process scheduling and system calls) -
lib
: support libraries -
mm
: memory management (e.g., virtual memory manager and kernel dynamic memory allocator) -
usr
: user space libraries and example applications
Documentation
Publications
- Pekka Enberg, Ashwin Rao, and Sasu Tarkoma. 2019. I/O Is Faster Than the CPU – Let’s Partition Resources and Eliminate (Most) OS Abstractions . HotOS '19
Contributing
Bug reports and pull requests are welcome!
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Code of Coduct for details.
Authors
See also the list of contributors who contributed to this project.
License
Licensed under either of these:
- Apache License, Version 2.0, ( LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0 )
- MIT license ( LICENSE-MIT or https://opensource.org/licenses/MIT )
Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in the work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK