Abstract
This article demonstrates how a powerful and expressive abstraction from concurrency theory—monads of resumptions—plays a dual rôle as a programming tool for concurrent applications. The article demonstrates how a wide variety of typical OS behaviors may be specified in terms of resumption monads known heretofore exclusively in the literature of programming language semantics. We illustrate the expressiveness of the resumption monad with the construction of an exemplary multitasking kernel in the pure functional language Haskell.
This research supported in part by subcontract GPACS0016, System Information Assurance II, through OGI/Oregon Health & Sciences University.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Harrison, W.: The Essence of Multithreading Codebase, available from www.cs.missouri.edu/~harrison/EssenceOfMultitasking
Moggi, E.: An Abstract View of Programming Languages. Technical Report ECS-LFCS-90-113, Department of Computer Science, Edinburgh University (1990)
Papaspyrou, N., Maćoš, D.: A Study of Evaluation Order Semantics in Expressions with Side Effects. Journal of Functional Programming 10(3), 227–244 (2000)
Hancock, P., Setzer, A.: Interactive programs in dependent type theory. In: Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic, pp. 317–331. Springer, London (2000)
Papaspyrou, N.: A Resumption Monad Transformer and its Applications in the Semantics of Concurrency. In: Proceedings of the 3rd Panhellenic Logic Symposium (2001) (An expanded technical report is available from the author by request)
Krstic, S., Launchbury, J., Pavlovic, D.: Categories of processes enriched in final coalgebras. In: Honsell, F., Miculan, M. (eds.) ETAPS 2001 and FOSSACS 2001. LNCS, vol. 2030, pp. 303–317. Springer, Heidelberg (2001)
Jacobs, B., Poll, E.: Coalgebras and Monads in the Semantics of Java. Theoretical Computer Science 291(3), 329–349 (2003)
Plotkin, G.: A Powerdomain Construction. SIAM Journal of Computation 5(3), 452–487 (1976)
Henderson, P.: Purely functional operating systems. In: Functional Programming and Its Applications: an Advanced Course, pp. 177–191. Cambridge University Press, Cambridge (1982)
Stoye, W.: Message-based Functional Operating Systems. Science of Computer Programming 6(3), 291–311 (1986)
Turner, D.: An Approach to Functional Operating Systems. In: Research Topics in Functional Programming, pp. 199–217 (1990)
Cupitt, J.: The Design and Implementation of an Operating System in a Functional Language. PhD thesis, Computing Laboratory, Univ. Kent (1992)
Carter, D.: Deterministic Concurrency. PhD thesis, Department of Computer Science, University of Bristol (1994)
Spiliopoulou, E.: Concurrent and Distributed Functional Systems. Technical Report CS-EXT-1999-240, Univ. Bristol (1999)
Launchbury, J., Peyton Jones, S.: Lazy functional state threads. In: Proceedings of PLDI 1994, pp. 24–35 (1994)
Claessen, K.: A poor man’s concurrency monad. Journal of Functional Programming 9(3), 313–323 (1999)
Wand, M.: Continuation-based multiprocessing. In: Proceedings of the 1980 ACM Conference on LISP and Functional Programming, pp. 19–28. ACM Press, New York (1980)
Flatt, M., Findler, R., Krishnamurthi, S., Felleisen, M.: Programming languages as operating systems (or revenge of the son of the lisp machine). In: Proceedings of ICFP 1999, pp. 138–147 (1999)
van Weelden, A., Plasmeijer, R.: Towards a strongly typed functional operating system. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670, Springer, Heidelberg (2003)
Filinski, A.: Representing monads. In: Proceedings of POPL 1994 (1994)
Ganz, S., Friedman, D., Wand, M.: Trampolined style. In: Proceedings of ICFP 1999, pp. 18–27 (1999)
Harper, R., Lee, P., Pfenning, F.: The Fox project: Advanced language technology for extensible systems. Technical Report CMU-CS-98-107, CMU (1998)
Alexander, D., Arbaugh, W., Hicks, M., Kakkar, P., Keromytis, A., Moore, J., Gunder, C., Nettles, S., Smith, J.: The switchware active network architecture. IEEE Network (1998)
Schmidt, D.: Denotational Semantics: A Methodology for Language Development. Allyn and Bacon, Boston (1986)
Bakker, J.d., Vink, E.d.: Control Flow Semantics. Foundations of Computing Series. MIT Press, Cambridge (1996)
Espinosa, D.: Semantic Lego. PhD thesis, Columbia University (1995)
Filinski, A.: Representing layered monads. In: Proceedings of POPL 1999 (1999)
Liang, S.: Modular Monadic Semantics and Compilation. PhD thesis, Yale University (1998)
Peyton Jones, S. (ed.): Haskell 98 Language and Libraries, the Revised Report. Cambridge University Press, Cambridge (2003)
Roscoe, W.: Theory and Practice of Concurrency. Prentice-Hall, Englewood Cliffs (1998)
Harrison, W., Hook, J.: Achieving information flow security through precise control of effects. In: 18th IEEE Computer Security Foundations Workshop (CSFW 2005) (2005)
Harrison, W., Harrison, R.: Domain specific languages for cellular interactions. In: Proceedings of the 26th Annual IEEE International Conference on Engineering in Medicine and Biology (2004)
Regev, A., Panina, E., Silverman, W., Cardelli, L., Shapiro, E.: Bioambients: An abstraction for biological compartments. Theoretical Computer Science 325(1), 141–167 (2004)
Peyton Jones, S.: Tackling the Awkward Squad: Monadic Input/Output, Concurrency, Exceptions, and Foreign-language Calls in Haskell. In: Engineering Theories of Software Construction, pp. 47–96 (2000)
Peyton Jones, S., Wadler, P.: Imperative functional programming. In: Proceedings of POPL 1993, pp. 71–84 (1993)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Harrison, W.L. (2006). The Essence of Multitasking. In: Johnson, M., Vene, V. (eds) Algebraic Methodology and Software Technology. AMAST 2006. Lecture Notes in Computer Science, vol 4019. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11784180_14
Download citation
DOI: https://doi.org/10.1007/11784180_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-35633-2
Online ISBN: 978-3-540-35636-3
eBook Packages: Computer ScienceComputer Science (R0)