

(Partial) POSIX kernel implemented in Go #os #kernel #golang #paper
source link: https://www.tuicool.com/articles/hit/jMnEbir
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.

Authors:
Cody Cutler, M. Frans Kaashoek, and Robert T. Morris, MIT CSAIL
Abstract:
This paper presents an evaluation of the use of a high-level language (HLL) with garbage collection to implement a monolithic POSIX-style kernel. The goal is to explore if it is reasonable to use an HLL instead of C for such kernels, by examining performance costs, implementation challenges, and programmability and safety benefits.
The paper contributes Biscuit, a kernel written in Go that implements enough of POSIX (virtual memory, mmap, TCP/IP sockets, a logging file system, poll, etc.) to execute significant applications. Biscuit makes lib- eral use of Go's HLL features (closures, channels, maps, interfaces, garbage collected heap allocation), which sub- jectively made programming easier. The most challenging puzzle was handling the possibility of running out of ker- nel heap memory; Biscuit benefited from the analyzability of Go source to address this challenge.
On a set of kernel-intensive benchmarks (including NG- INX and Redis) the fraction of kernel CPU time Biscuit spends on HLL features (primarily garbage collection and thread stack expansion checks) ranges up to 13%. The longest single GC-related pause suffered by NGINX was 115 microseconds; the longest observed sum of GC delays to a complete NGINX client request was 600 microsec- onds. In experiments comparing nearly identical system call, page fault, and context switch code paths written in Go and C, the Go version was 5% to 15% slower.
Open Access Media
USENIX is committed to Open Access to the research presented at our events. Papers and proceedings are freely available to everyone once the event begins. Any video, audio, and/or slides that are posted after the event are also free and open to everyone.Support USENIX and our commitment to Open Access.
BibTeX
@inproceedings {222627,
author = {Cody Cutler and M. Frans Kaashoek and Robert T. Morris},
title = {The benefits and costs of writing a {POSIX} kernel in a high-level language},
booktitle = {13th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 18)},
year = {2018},
isbn = {978-1-931971-47-8},
address = {Carlsbad, CA},
pages = {89--105},
url = {https://www.usenix.org/conference/osdi18/presentation/cutler},
publisher = {{USENIX} Association},
}
Recommend
-
27
README.md mrsh A minimal POSIX she...
-
50
[ Date Prev ][ Date Next ][
-
38
一、前言 在用户空间接口函数文档中,我们描述了和POSIX timer相关的操作,主要包括创建一个timer、设定timer、获取timer的状态、获取timer overrun的信息、删除timer。本文将沿着这些用户空间的接口定义来看看内核态的实现。虽...
-
19
无法访问此网站 gist.github.com 拒绝了我们的连接请求。 ...
-
32
This page is meant as a repository for useful tricks I’ve found (and some I’ve perhaps invented) for scripting the POSIX
-
4
Posix Thread,简称 PThread,算不上是 iOS 基础知识,而是 UNIX 中的线程管理,iOS 也是类 UNIX 系统,当然可以在其中使用 PThread,PThread 都是 C API,当用 C++ 写一些跨平台的代码时需要操作线程,PThread 是很自然的选择。
-
11
Introduction to POSIX shell February 5, 2018 on Drew DeVault's blog What the heck is the POSIX shell anyway? Well, the POSIX (the Portable Operating System Interfa...
-
14
Dark side of POSIX APIs One user of the signal-hook crate expressed an interest in knowing the PID and UID of the process that sent the signal. As a general idea I liked it. The low...
-
17
README.md JuiceFS is an open-source POSIX file system built on top of Redis and object storage (e.g. Amazon S3), designe...
-
3
linux kernel timer、posix timer 以及 timerfd 作者: 邹成卓 2022-06-20 23:24:35 分类:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK