Dark Shadows: User-level Guest/Host Linux Process Shadowing

Abstract

A shadow process on the host mirrors a process in the guest at the level of the virtual and physical address space, terminating in the host physical addresses. We describe a shadow process technique that is implemented entirely at user level in both the guest and the host. In our technique, we refer to the host shadow process as a dark shadow as it arranges its own elements to avoid conflicting with the guest process’s elements. We demonstrate the utility of dark shadows by using our implementation to create system call forwarding and device file-level device virtualization tools that are compact and simple.

Publication
In IC2E 2017
Date

The concept of a shadow process simplifies the design and implementation of virtualization services such as system call forwarding and device file- level device virtualization. A shadow process on the host mirrors a process in the guest at the level of the virtual and physical address space, terminating in the host physical addresses. Previous shadow process mechanisms have required changes or additions (modules) to the guest and host kernels. We describe a shadow process technique that is implemented entirely at user level in both the guest and the host. In our technique, we refer to the host shadow process as a dark shadow as it arranges its own elements to avoid conflicting with the guest process’s elements. We demonstrate the utility of dark shadows by using our implementation to create system call forwarding and device file-level device virtualization tools that are compact and simple. Our implementation of dark shadows will be made available and should be readily applicable to most hypervisors or container systems. This paper is a continuation and logical conclusion to the device file virtualization project.

This project is made possible by support from the United States National Science Foundation through grant CCF- 1533560 and from Sandia National Laboratories through the Hobbes Project, which is funded by the 2013 Exascale Operating and Runtime Systems Program under the Office of Advanced Scientific Computing Research in the United States Department of Energy’s Office of Science.