MxKernel: A System Software Architecture for Modern Hardware Michael Müller, Jens Teubner, Jan Mühlig and Olaf Spinczyk Today's hardware landscape for servers and mainframes has changed a lot since the birth of the core abstractions which characterize the operating systems, running on them. Unlike the past, modern hardware is inherently parallel and features complex memory hierarchies, often incorporating heterogeneous processors. This poses great challenges to today's system software, which was designed for uni-processor systems with flat shared memory. A lot of work has gone into retrofitting today's system software, to leverage the potential of modern hardware. But only to little or no avail at a high cost for applications, having to deal with synchronization and resource management themselves. Bypassing the OS, this thereby introduces undesirable side effects which in turn lead to reduced and unpredictable performance. To overcome these problems, the core abstractions of modern system software, have to be redesigned. With the MxKernel project we set out, to develop the key concepts for system software, which is designed for modern hardware from the ground up. Instead of threads the MxKernel provides a simpler and more versatile control flow abstraction: MxTasks which model closed units of work. MxTasks are shored-lived in their nature, which allows to describe their behavior by annotations. Such annotations can be memory accesses a task performs, data-dependencies between tasks, or events a task is waiting for. Hence, task annotations support scheduling and resource management, even enabling the transparent support for techniques, like automatic data prefetching, which were otherwise difficult to realize with threads. Based on the MxKernel prototype we present first results from our ambitious undertaking. We argue that threads are ill-suited for modern hardware, and MxTasks are a more favorable abstraction for control flows instead.