Abstract
The use of high-level programming constructs (such as recursion, loops, and dynamic data structures) makes it difficult to estimate at compile-time the execution time and resource requirements of a program. We contend thatpartial evaluation provides a solution to this problem. Given a real-time program employing high level language constructs, partial evaluation uses information about the execution environment to create a specialized program tailored for that particular environment. Specialized programs can be better analyzed to estimate accurately the execution time and resource requirements. Our techniques offer substantially greater power and flexibility to the programmer than previous estimation techniques for real-time systems.
This paper describes the application of partial evaluation to programming languages for hard-real-time systems, gives examples of programs handled by our techniques, discusses how the system appears from a user's perspective, provides an overview of the partial evaluation techniques employed using examples and describes some limitations of our techniques and possible solutions.
Similar content being viewed by others
References
Aho, A.V., Sethi, R. and Ullman, J. 1986.Compilers: Principles, Techniques and Tools. Reading, MA: Addison-Wesley.
Balasundaram, V. 1989. Compile-time detection of race conditions in a parallel program. In3rd International Conference on Supercomputing, June, pp. 175–185, ACM.
Berlin, A.A. 1990. Compiling scientific code using partial evaluation.IEEE Computer Magazine, 23(12):25–37.
Bulyonkov, M.A. (1984). Polyvariant mixed computation for analyzer programs.Acta Informatica, 21:473–484.
Consel, C. 1990. Binding time analysis for higher-order untyped functional languages. InLisp and Functional Programming '90, ACM.
Ershov, A.P. and Ostrovsky, B.N. 1986. Controlled mixed computation and its applications to systematic development of language-oriented parsers. In (L.G.L.T. Meertens, ed.)IFIP TC2/WG 2.1 Working Conference on Program Specification and Transformation, pp. 31–48. Amsterdam: North Holland.
Ershov, A.P. 1977. On the partial evaluation principle.Information Processing Letters, 6(2):38–41.
Ershov, A.P. 1982. Mixed computation: Potential applications and problems for study.Theoretical Computer Science, 18:41–67.
Ghezzi, C., Mandrioli, D., and Tecchio, A. 1985. Program simplification via symbolic interpretation. In (S.N. Maheshwari, ed.)Foundations of Software Technology and Theoretical Computer Science, Fifth Conference, New Delhi, pp. 116–128. Berlin, New York: Springer-Verlag, LNCS 206.
Hoare, C.A.R. 1969. An axiomatic basis for computer programming.Communications of ACM, 12(10):576–583.
Jones, N.D., Sestoft, P., and Søndergaard, H. 1985. An experient in partial evaluation: The generation of a compiler generator. In (J.P. Jounnaud, ed.),Rewriting Techniques and Applications, LNCS 202, Berlin, New York: Springer-Verlag.
Jones, N.D., Sestoft, P., and Søndergaard, H. 1989. Mix: A self-applicable partial evaluator for experiments in compiler-generator.LISP and Symbolic Computation, 2(1):9–50.
Kopetz, H., Damm, A., Koza, Ch., Mulazzani, M., Schwalbl, W., Senft, Ch., and Zainlinger, R., 1989. Distributed fault-tolerant real-time systems: The MARS approach.IEEE Micro, 9(1):25–40.
Kligerman, E., and Stoyenko, A.D. 1986. Real-time euclid: a language for reliable real-time systems.IEEE Trans. on Software Engineering, SE-12(9):941–949, September.
Levi, S.T. and Agrawala, A.K. 1987. Objects architecture for real-time, distributed, fault tolerant operating systems. In6th IEEE Workshop on Real-Time Operating Systems, Cambridge, MA, July, pp. 142–148.
Levi, S.T., and Agrawala, A. 1990.Real Time System Design. New York: McGraw Hill.
Al Mok and Amarsinghe, K. 1987. Evaluating tight execution time bounds of programs by annotations. In6th Workshop on Real-Time Operating Systems and Software. IEEE, May, pp. 74–80.
Meyer, U. 1991. Techniques for partial evaluation of imperative languages. InSymposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM-'91), ACM SIGPLAN Notices 26(9):94–105.
Michie, D. 1968. “Memo” functions and machine learning.Nature, 218:19–22, April.
Nirkhe, V. 1992.Application of Partial Evaluation to Real-Time Programming. Ph.D. thesis, Department of Computer Science, University of Maryland. CS-TR-2904.
Nirkhe, V. and Pugh, W. 1992. Partial evaluation of a high level imperative programming language with applications in hard real-time systems. In12th ACM Conference on Principles of Programming Languages, pp. 269–280, January.
Nirkhe, V., Tripathi, S., and Agrawala, A. 1990. Language support for the Maruti real-time system. In11th IEEE Real-Time Systems Symposium, December, pp. 257–266.
Owicki, S. and Gries, D. 1976. Verifying properties of parallel programs: an axiomatic approach.Communications of ACM, 19(5):279–285.
Puschner, P. and Koza, Ch. 1989. Calculating the maximum execution times of real-time programs.Real-Time Systems, 1(2):159–176.
Park, C.Y., and Shaw, A.C. 1991. Experimenting with a program timing tool based on source-level timing schema.IEEE Computer Magazine, 24(5):48–57, May.
Tayor, R.N. 1983. A general-purpose algorithm for analyzing concurrent programs.Communications of ACM, 26(5):362–376.
Shaw, A. 1989. Reasoning about time in higher-level language software.IEEE Transactions on Software Engineering, 15(7):875–889.
Stoyenko, A.D. and Marlowe, T.J. 1992. Polynomial-time transformations and schedulability analysis of parallel real-time programs with restricted resource contention.Real-Time Systems Journal, 4(4).
Stankovic, J.A. and Ramamritham, K. 1989. The spring kernel: A new paradigm for real-time operating systems.ACM SIGOPS Operating Systems Review, 23(3):54–71.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Nirkhe, V., Pugh, W. A partial evaluator for the Maruti hard real-time system. Real-Time Syst 5, 13–30 (1993). https://doi.org/10.1007/BF01088695
Issue Date:
DOI: https://doi.org/10.1007/BF01088695