|
|
Creator | Title | Description | Subject | Date |
101 |
|
Regehr, John | Thread verification vs. interrupt verification | Interrupts are superficially similar to threads, but there are subtle semantic differences between the two abstractions. This paper compares and contrasts threads and interrupts from the point of view of verifying the absence of race conditions. We identify a small set of extensions that permit thre... | | 2006-01-01 |
102 |
|
Regehr, John | Two case studies in predictable application scheduling using Rialto/NT | This paper analyzes the results of two case studies in applying the Rialto/NT scheduler to real Windows 2000 applications. The first study is of a soft modem-a modem whose signal processing work is performed on the host CPU, rather than on a dedicated signal processing chip. The second is of an audi... | | 2001-01-01 |
103 |
|
Regehr, John | Volatiles are miscompiled, and what to do about it | C's volatile qualifier is intended to provide a reliable link between operations at the source-code level and operations at the memory-system level. We tested thirteen production-quality C compilers and, for each, found situations in which the compiler generated incorrect code for accessing volatile... | | 2008-01-01 |
104 |
|
Cohen, Elaine | Volume rendering with multidimensional peak finding | Peak finding provides more accurate classification for direct volume rendering by sampling directly at local maxima in a transfer function, allowing for better reproduction of high-frequency features. However, the 1D peak finding technique does not extend to higherdimensional classification. In this... | | 2012-01-01 |
105 |
|
Regehr, John | How to rapidly prototype a real-time scheduler | Implementing a new scheduling algorithm in an OS kernel is often an important step in scheduling research because it permits evaluation of the algorithm's performance on real workloads. However, developing a new scheduler is not a trivial task because it requires sophisticated programming skills and... | | 2002-01-01 |
106 |
|
Regehr, John | Finding and understanding bugs in C compilers | Compilers should be correct. To improve the quality of C compilers, we created Csmith, a randomized test-case generation tool, and spent three years using it to find compiler bugs. During this period we reported more than 325 previously unknown bugs to compiler developers. Every compiler we tested w... | | 2011-01-01 |
107 |
|
Silva, Claudio T. | ISP: An optimal out-of-core image-set processing streaming architecture for parallel heterogeneous systems | Image population analysis is the class of statistical methods that plays a central role in understanding the development, evolution, and disease of a population. However, these techniques often require excessive computational power and memory that are compounded with a large number of volumetric inp... | | 2012-01-01 |
108 |
|
Regehr, John | A practical logic framework for verifying safety properties of executables | We present a novel program logic, Lf , which is designed on top of a Hoare logic, but is simpler, more flexible and more scalable. Based on Lf , we develop a framework for automatically verifying safety properties of executables. It utilizes a whole-program interprocedural abstract interpretation to... | | 2011-01-01 |
109 |
|
Regehr, John | Deriving abstract transfer functions for analyzing embedded software | This paper addresses the problem of creating abstract transfer functions supporting dataflow analyses. Writing these functions by hand is problematic: transfer functions are difficult to understand, difficult to make precise, and difficult to debug. Bugs in transfer functions are particularly seriou... | | 2006-01-01 |
110 |
|
Regehr, John | Dynamic CPU management for real-time, middleware-based systems | Many real-world distributed, real-time, embedded (DRE) systems, such as multi-agent military applications, are built using commercially available operating systems, middleware, and collections of pre-existing software. The complexity of these systems makes it difficult to ensure that they maintain h... | | 2004-01-01 |
111 |
|
Regehr, John | Interface contracts for TinyOS | TinyOS applications are built with software components that communicate through narrow interfaces. Since components enable fine-grained code reuse, this approach has been successful in creating applications that make very efficient use of the limited code and data memory on sensor network nodes. How... | | 2007-01-01 |
112 |
|
Regehr, John | CPU reservations and time constraints: implementation experience on windows NT | This paper presents an implementation of scheduling abstractions originally developed for the Rialto real-time operating system within a research version of Windows NT called Rialto/NT. These abstractions, CPU Reservations and Time Constraints, as described in the 1997 SOSP paper [Jones et al. 97], ... | | 1999-01-01 |
113 |
|
Regehr, John | Scheduling Tasks with mixed preemption relations for robustness to timing faults | This paper introduces and shows how to schedule two novel scheduling abstractions that overcome limitations of existing work on preemption threshold scheduling. The abstractions are task clusters, groups of tasks that are mutually non-preemptible by design, and task barriers, which partition the tas... | | 2002-01-01 |
114 |
|
Regehr, John | Safe and structured use of interrupts in real-time and embedded software | While developing embedded and real-time systems, it is usually necessary to write code that handles interrupts, or code the interacts with interrupt handlers. Interrupts are indispensable because they use hardware support to reduce both the latency and overhead of event detection, when compared to p... | | 2007-01-01 |
115 |
|
Regehr, John | Runtime verification for wireless sensor network applications | Wireless sensor networks are widely used to detect environment information that is not accessible by human. Developing such networks however requires low-level programming. The lack of sophisticated debugging tools for sensor networks makes it difficult to make the connection between a high-level fu... | | 2008-01-01 |
116 |
|
Regehr, John | Test-case reduction for C compiler bugs | To report a compiler bug, one must often find a small test case that triggers the bug. The existing approach to automated test-case reduction, delta debugging, works by removing substrings of the original input; the result is a concatenation of substrings that delta cannot remove. We have found this... | | 2012-01-01 |
117 |
|
Regehr, John | Testing static analyzers with randomly generated programs | Static analyzers should be correct. We used the random C-program generator Csmith, initially intended to test C compilers, to test parts of the Frama-C static analysis platform. Although Frama-C was already relatively mature at that point, fifty bugs were found and fixed during the process, in the f... | | 2012-01-01 |
118 |
|
Regehr, John | ARMor: fully verified software fault isolation | We have designed and implemented ARMor, a system that uses software fault isolation (SFI) to sandbox application code running on small embedded processors. Sandboxing can be used to protect components such as the RTOS and critical control loops from other, less-trusted components. ARMor guarantees m... | | 2011-01-01 |
119 |
|
Regehr, John | Edicts: implementing features with flexible binding times | In a software product line, the binding time of a feature is the time at which one decides to include or exclude a feature from a product. Typical binding site implementations are intended to support a single binding time only, e.g., compile time or run time. Sometimes, however, a product line must... | | 2008-01-01 |
120 |
|
Regehr, John | Pluggable abstract domains for analyzing embedded software | Many abstract value domains such as intervals, bitwise, constants, and value-sets have been developed to support dataflow analysis. Different domains offer alternative tradeoffs between analysis speed and precision. Furthermore, some domains are a better match for certain kinds of code than others. ... | | 2006-01-01 |
121 |
|
Regehr, John | Augmented CPU reservations: towards predictable execution on general-purpose operating systems | One problem with performing soft real-time computations on general-purpose operating systems is that these OSs may spend significant amounts of time in the kernel instead of performing work on behalf of the application that is nominally scheduled: the OS effectively steals time from the running appl... | | 2001-01-01 |
122 |
|
Hansen, Charles D. | Combined surface and volumetric occlusion shading | In this paper, a method for interactive direct volume rendering is proposed that computes ambient occlusion effects for visualizations that combine both volumetric and geometric primitives, specifically tube shaped geometric objects representing streamlines, magnetic field lines or DTI fiber tracts.... | | 2012-01-01 |
123 |
|
Regehr, John | Some guidelines for proportional share CPU scheduling in general-purpose operating systems | Our premise is that since there already exists a large, mature body of literature on real-time scheduling in general-purpose operating systems, it is time to spend more effort deciding which of these algorithms should be used and when, and less effort on generating new algorithms. In this paper we f... | | 2001-01-01 |
124 |
|
Regehr, John | Surviving sensor network software faults | We describe Neutron, a version of the TinyOS operating system that efficiently recovers from memory safety bugs. Where existing schemes reboot an entire node on an error, Neutron's compiler and runtime extensions divide programs into recovery units and reboot only the faulting unit. The TinyOS kerne... | | 2009-01-01 |
125 |
|
Regehr, John | Swarm testing | Swarm testing is a novel and inexpensive way to improve the diversity of test cases generated during random testing. Increased diversity leads to improved coverage and fault detection. In swarm testing, the usual practice of potentially including all features in every test case is abandoned. Rather,... | | 2012-01-01 |