Replicated-kernel
porpcornlinux
The Popcorn Linux project is exploring how to improve the scalability of operating systems, Linux in particular, on future multi- and many-core hardware platforms, and how to design operating systems for Instruction Set Architecture (ISA)-diverse multi/many-core architectures. Additionally, the project is exploring how to automatically compile/synthesize/execute code on ISA-heterogeneous hardware.
The project is exploring a replicated-kernel OS model for the Linux operating system. In this model, multiple Linux kernel instances are run on the same hardware, one kernel per ISA (or core), one kernel per NUMA node, or a combination of the two mappings, with core-private memory. The kernel instances directly communicate, kernel-to-kernel, in order to maintain a common operating system state that is (partially) replicated over heterogeneous kernel instances. Communication is implemented over shared memory or by exploiting message passing hardware, if available. Hardware resources (i.e., disks, network interface cards) are partitioned per kernel instance, and runtime repartitioning allows any kernel to have exclusive access to any device. The kernel instances coordinate to maintain the abstraction of a single-image operating system (e.g., filesystem namespace), enabling legacy Linux applications to run transparently.
Linux
- Linux supports multiprocessor hardware as a symmetric multiprocessing (SMP) operating system (OS).
- Single kernel image (monolithic). The kernel state must be accessed concurrently by the different CPUs to be kept consistent – Performance penalties for accessing resources
Replicated-kernel
A replicated-kernel operating system is built on top of multiple instances of a kernel image
- Every kernel maintains its own state concerning its own resources There is no performance penalty to access local resources