Home > Research > Publications & Outputs > How to Fillet a Penguin


Text available via DOI:

View graph of relations

How to Fillet a Penguin: Runtime Data Driven Partitioning of Linux Code

Research output: Contribution to Journal/MagazineJournal articlepeer-review

<mark>Journal publication date</mark>1/11/2018
<mark>Journal</mark>IEEE Transactions on Dependable and Secure Computing
Issue number6
Number of pages14
Pages (from-to)945-958
Publication StatusPublished
Early online date29/08/17
<mark>Original language</mark>English


In many modern operating systems (OSs), there exists no isolation between different kernel components, i.e., the failure of one component can affect the whole kernel. While microkernel OSs introduce address space separation for large parts of the OS, their improved fault isolation comes at the cost of performance. Despite significant improvements in modern microkernels, monolithic OSs like Linux are still prevalent in many systems. To achieve fault isolation in addition to high performance and code reuse in these systems, approaches to move only fractions of kernel code into user mode have been proposed. These approaches solely rely on static code analyses for deciding which code to isolate, neglecting dynamic properties like invocation frequencies. We propose to augment static code analyses with runtime data to achieve better estimates of dynamic properties for common case operation. We assess the impact of runtime data on the decision what code to isolate and the impact of that decision on the performance of such 'microkernelized' systems. We extend an existing tool chain to implement automated code partitioning for existing monolithic kernel code and validate our approach in a case study of two widely used Linux device drivers and a file system. © 2004-2012 IEEE.