Knuth's buddy system is an attractive algorithm for managing storage allocation, and it can be made to operate in real-time. At some point, storage-management systems must either over-provide storage or else confront the issue of defragmentation. Because storage conservation is important to embedded systems, we investigate the issue of defragmentation for heaps that are managed by the buddy system. In this paper, we present tight bounds for the amount of storage necessary to avoid defragmentation. These bounds turn out to be too high for embedded systems, so defragmentation becomes necessary.We then present an algorithm for defragmenting buddy heaps and present experiments from applying that algorithm to real and synthetic benchmarks. Our algorithm relocates less than twice the space relocated by an optimal algorithm to defragment the heap so as to respond to a single allocation request. Our experiments show our algorithm to be much more efficient than extant defragmentation algorithms.
Image signal processing depends on computation intensive programs, which include the repetition of sequences of operations coded as nested loops. An effective technique in increasing the computing performance of such applications is the design and use of Application Specific Integrated Circuits using loop transformation techniques, and in particular, multidimensional (MD) retiming. The MD-retiming method improves the instruction-level parallelism of uniform loops. While many have written about the multi-dimensional retiming technique, no results have been published on the possible limitations of its application. This paper presents an analysis of that technique and its constraints when applied to nested loops with known index bounds, such as those found in two and three dimensional image processing.
Abstract-Computer games have been accepted as an engaging and motivating tool in the CS curriculum. However, designing and implementing a playable game is challenging and is best done in advanced courses. Games for mobile devices offer the advantage of being simpler and, thus, easier to program for lower-level students. By exposing these students to a wide range of advanced topics, we can demonstrate to them that CS can be much more than coding. Here, we discuss our evaluation of a set of learning modules for introductory CS courses that use mobile game development as a motivational learning context.
Java has recently joined C and C++ as a relatively high-level language suitable for developing real-time applications. Java's garbage collection, while generally a useful feature, can be problematic for real-time applications if collection occurs with unpredictable frequency and latency.The Real-Time Specification for Java T M (RTSJ) incorporates a scoped-memory model, akin to regions, that is not subject to garbage collection. However, applications are subject to strict rules concerning how objects can reference each other in scoped memory. Unfortunately, almost all extant Java code, including Java's vast and useful runtime libraries, will not execute properly in scoped-memory areas without significant modification.In this paper, we show that programs written in a pure functional programming language can be executed in a provably safe manner using scoped memory in RTSJ. This new connection allows extant implementations of important abstract data types to migrate safely to RTSJ. We also explore the effect of RTSJ's referencing rules on the asymptotic, real-time behavior of some abstract data types.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.