xv6

xv6 with containters

Container technologies popularity increased through the past decade and this tendency is expected to continue. The influence of containers is prominent in many ways spanning every aspect of the programming product lifecycle from the design and architecture considerations, followed by the programming language adoption and ending with the product deployment and production environment maintenance.

Looking under the hood to understand how containers are implemented, being familiar with the operating system features that container technologies rely on, is compelling. This awareness is also significant in order to assess all the pros and cons at early stages of a product design. Looking at the implementation of the operating system’s features necessary for containers is much easier based on operating systems intended for educational use. One of them, the xv6, is simple enough, yet contains the important concepts and organization of a Unix like operating system. As for 2021, Linux code contains 31M lines of code (~14% of them is the kernel code) compared with only 18K in xv6, thus going from ‘simple to complex’ seems to be a desired stage.

HW/SW requirements: 4 GB RAM, Linux (on a baremetal or virtual machine)

Language: C (high)

xv6 Book: here

ns, cgroups, containers spec: here

Project management board: here