Research output: Contribution to Journal/Magazine › Journal article › peer-review
Research output: Contribution to Journal/Magazine › Journal article › peer-review
}
TY - JOUR
T1 - How to Fillet a Penguin
T2 - Runtime Data Driven Partitioning of Linux Code
AU - Schwahn, O.
AU - Winter, S.
AU - Coppik, N.
AU - Suri, Neeraj
PY - 2018/11/1
Y1 - 2018/11/1
N2 - 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.
AB - 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.
KW - device driver isolation
KW - dynamic program analysis
KW - Operating systems
KW - software partitioning
KW - Codes (symbols)
KW - Computer operating systems
KW - Data handling
KW - Program processors
KW - Reliability
KW - Reliability analysis
KW - Software reliability
KW - Device Driver
KW - Dynamic program analysis
KW - Kernel
KW - Performance evaluations
KW - Runtimes
KW - Software partitioning
KW - Linux
U2 - 10.1109/TDSC.2017.2745574
DO - 10.1109/TDSC.2017.2745574
M3 - Journal article
VL - 15
SP - 945
EP - 958
JO - IEEE Transactions on Dependable and Secure Computing
JF - IEEE Transactions on Dependable and Secure Computing
SN - 1545-5971
IS - 6
ER -