An Implementation and Analysis of a Kernel Network Stack in Go with the CSP Style

03/17/2016
by   Harshal Sheth, et al.
0

Modern operating system kernels are written in lower-level languages such as C. Although the low-level functionalities of C are often useful within kernels, they also give rise to several classes of bugs. Kernels written in higher level languages avoid many of these potential problems, at the possible cost of decreased performance. This research evaluates the advantages and disadvantages of a kernel written in a higher level language. To do this, the network stack subsystem of the kernel was implemented in Go with the Communicating Sequential Processes (CSP) style. Go is a high-level programming language that supports the CSP style, which recommends splitting large tasks into several smaller ones running in independent "threads". Modules for the major networking protocols, including Ethernet, ARP, IPv4, ICMP, UDP, and TCP, were implemented. In this study, the implemented Go network stack, called GoNet, was compared to a representative network stack written in C. The GoNet code is more readable and generally performs better than that of its C stack counterparts. From this, it can be concluded that Go with CSP style is a viable alternative to C for the language of kernel implementations.

READ FULL TEXT
research
09/13/2019

The Case for Writing Network Drivers in High-Level Programming Languages

Drivers are written in C or restricted subsets of C++ on all production-...
research
11/24/2016

Automating the Last-Mile for High Performance Dense Linear Algebra

High performance dense linear algebra (DLA) libraries often rely on a ge...
research
10/24/2021

A Programming Language For Quantum Oracle Construction

Many quantum programs require circuits for addition, subtraction and log...
research
03/30/2020

The Operating System of the Neuromorphic BrainScaleS-1 System

BrainScaleS-1 is a wafer-scale mixed-signal accelerated neuromorphic sys...
research
09/02/2021

Security-Hardening Software Libraries with Ada and SPARK – A TCP Stack Use Case

This white paper demonstrates how the assurance, reliability, and securi...
research
02/19/2021

Tail Modulo Cons

OCaml function calls consume space on the system stack. Operating system...
research
02/18/2022

Debootstrapping without Archeology: Stacked Implementations in Camlboot

Context: It is common for programming languages that their reference imp...

Please sign up or login with your details

Forgot password? Click here to reset