Enforcing resource bounds via static verification of dynamic checks

  • Authors:
  • Ajay Chander;David Espinosa;Nayeem Islam;Peter Lee;George C. Necula

  • Affiliations:
  • DoCoMo Labs USA, Palo Alto, CA;DoCoMo Labs USA, Palo Alto, CA;DoCoMo Labs USA, Palo Alto, CA;Carnegie Mellon University, Pittsburgh, PA;University of California, Berkeley, CA

  • Venue:
  • ACM Transactions on Programming Languages and Systems (TOPLAS) - Special Issue ESOP'05
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

We show how to limit a program's resource usage in an efficient way, using a novel combination of dynamic checks and static analysis. Usually, dynamic checking is inefficient due to the overhead of checks, while static analysis is difficult and rejects many safe programs. We propose a hybrid approach that solves these problems. We split each resource-consuming operation into two parts. The first is a dynamic check, called reserve. The second is the actual operation, called consume, which does not perform any dynamic checks. The programmer is then free to hoist and combine reserve operations. Combining reserve operations reduces their overhead, while hoisting reserve operations ensures that the program does not run out of resources at an inconvenient time. A static verifier ensures that the program reserves resources before it consumes them. This verification is both easier and more flexible than an a priori static verification of resource usage. We present a sound and efficient static verifier based on Hoare logic and linear inequalities. As an example, we present a version of tar written in Java.