Dates and Events: |
OSADL Articles:
2023-11-12 12:00
Open Source License Obligations Checklists even better nowImport the checklists to other tools, create context diffs and merged lists
2022-07-11 12:00
Call for participation in phase #4 of Open Source OPC UA open62541 support projectLetter of Intent fulfills wish list from recent survey
2022-01-13 12:00
Phase #3 of OSADL project on OPC UA PubSub over TSN successfully completedAnother important milestone on the way to interoperable Open Source real-time Ethernet has been reached
2021-02-09 12:00
Open Source OPC UA PubSub over TSN project phase #3 launchedLetter of Intent with call for participation is now available |
Real Time Linux Workshops
1999 - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010 - 2011 - 2012 - 2013 - 2014 - 2015
15th Real Time Linux Workshop, October 28 to 31, 2013 at the Dipartimento Tecnologie Innovative, Scuola Universitaria Professionale della Svizzera Italiana in Lugano-Manno, Switzerland
Announcement - Call for participation (ASCII) - Hotels - Directions - Agenda - Paper Abstracts - Presentations - Registration - Abstract Submission - Sponsors - Gallery
Investigating Execution Path Non-determinism in the Linux Kernel
Peter Okech, School Of Computing, Nairobi, Kenya
Nicholas McGuire, OpenTech EDV Research GmbH, Bullendorf, Austria
Christof Fetzer, Systems Engineering Group, Technische Universität Dresden, Germany
In Linux, a program executes either in user or kernel context. The control flow of the program is determined by its input when executing in user space. There is only a limited set of valid inputs for any program and thus in the absence of faults, the path taken by the program is highly predictable. In contrast, the input space of the kernel is very large so it is expected that for any program executing in kernel context, there could be several possible code paths available to be taken during an execution instance. We set out to investigate the level of non-determinism in the execution path of an application in the Linux kernel. In our work, we define the path as the set of kernel functions that are called by a specific system call invoked from the user space by an application. The experiments involved running a simple program over a large number of iterations and tracing its execution in kernel space using the Ftrace tool. The trace output was then transferred to a PostgreSQL database for analysis. We report the early results of our work, focusing on tracing a single system call, the open() call. The distribution of the frequency of path occurrences has several peaks representing the common execution paths matching our expectations. Further analysis shows that preemption and interrupts have an effect both on the execution time and control flow through the kernel. The result of this preliminary work points to a strong possibility of divergence in state of program replicas due to temporal and path non-determinism in the application's kernel space. This inherent diversity of OS kernel state could be useful in the protection of replicated systems against residual faults in the execution platform.