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.