A distributed locking algorithm for a transactions system in flat concurrent prolog

  • Ehud Reches
  • Ehud Gudes
  • Ehud Shapiro
Data Organizations For Logic Programming
Part of the Lecture Notes in Computer Science book series (LNCS, volume 367)


This paper reports on the design and the implementation of a distributed transactions-system for a Universal File Server. The system maintains consistency in a general purpose file-system by means of concurrency control and crash recovery. Both the distributivity of a transaction and the intra-transaction concurrency, are depicted by a single model which describes the transaction as a partially ordered set of operations. The main concurrency control algorithm described in this paper is a novel distributed locking management algorithm based on the two-phase-locking (2pl) protocol. The system is implemented in Flat Concurrent Prolog (FCP), a concurrent logic programming language. FCP lends itself to the development of new distributed algorithms which utilize the fine-grained concurrency and the powerful communication and synchronization mechanisms supplied by the language. The features of concurrent logic languages, which are useful for implementing file and database systems are demonstrated in this paper.


Concurrency Control Weizmann Institute Transaction System Activation Request Concurrent Logic 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Anderson, T., Lee, P.A. “Fault Tolerance Principles and Practice” Prentice-Hall, Englewood Cliffs, NJ, 1981Google Scholar
  2. 2.
    Bernstein P.A., V. Hadzilacos, N. Goodman, “Concurrency Control and Recovery in Database Systems”, Addison-Wesley, 1987.Google Scholar
  3. 3.
    Bernstein, P.A., Goodman, N., Hadzilacos, V. “Recovery Algorithms for Database Systems” In Proc. IFIP 9th World Computer Congress, North-Holland, Amsterdam, 1983.Google Scholar
  4. 4.
    Date, C., “An Introduction to Databases Systems”, Addison-Wesley, 1983.Google Scholar
  5. 5.
    Dijkstra E. W., “A Discipline of Programming”, Prentice-Hall, 1976.Google Scholar
  6. 6.
    DeWitt D. J. “DIRECT — A Multiprocessor Organization for Supporting Relational Database Management Systems” IEEE Transactions on Computers, Vol. C-27, No 1, January 1979Google Scholar
  7. 7.
    Hirsch M. “The Logix System”, Thesis, The Weizmann Institute of Science, 1986Google Scholar
  8. 8.
    Lampson, B., Sturgis, H. “Crash Recovery in a Distributed Data Storage System” Technical Report, Computer Science Laboratory, Xerox, Palo Alto ResearchCenter, CA, 1976.Google Scholar
  9. 9.
    Mierowsky C., S. Taylor, E. Shapiro, J. Levy and M. Safra, “The Design and Implementation of Flat Concurrent Prolog”, Technical Report CS85-09, The Weizmann Institute of Science, July 1985.Google Scholar
  10. 10.
    Moss E. B.,” Nested Transactions: an Approach to Reliable Distributed Computing”, MIT Press, 1985.Google Scholar
  11. 11.
    Mueller E. T., Moore J D., and G. Popek, “A Nested Transaction Mechanism for LOCUS”, Proceedings of ACM-SIGOPS Conference, Bretton Woods, NH, October 1983.Google Scholar
  12. 12.
    Papadimitriou, C., “The Theory of Database Concurrency Control”, Computer Science Press, 1986.Google Scholar
  13. 13.
    Pnueli A., “Specification and Development of Reactive Systems”, in Information Processing 86, Editor Kugler H.J., Elsevier Science Publishers B.V. (North-Holland), IFIP 1986.Google Scholar
  14. 14.
    Reches E., E. Gudes, E. Shapiro, “Parallel Access to a Distributed Database and its Implementation in Flat Concurrent Prolog” Technical Report, CS88-11, The Weizmann Institute of Science, Rehovot, Israel, 1988Google Scholar
  15. 15.
    Shafrir A. and E. Shapiro, “Distributed Programming in Concurrent Prolog”, Technical Report CS84-02, January 1984. Also chapter 11 in [20]Google Scholar
  16. 16.
    Shapiro E., “Concurrent Prolog: A Progress Report”, IEEE Computer, August 1986.Google Scholar
  17. 17.
    Shapiro E., “A Subset of Concurrent Prolog and its Interpreter”, ICOT Technical Report TR-003, February 1983. Also chapter 2 in [20].Google Scholar
  18. 18.
    Shapiro E., “Systems Programming in Concurrent Prolog”, Proc. of 11th ACM Symp. on Principles of Programming Languages, Jan 1984, pp 95–105.Google Scholar
  19. 19.
    Shapiro E. and S. Safra, “Multiway Merge with Constant Delay in Concurrent Prolog”, New Generation Computing, 4, 2 (1986), pp 211–216.Google Scholar
  20. 20.
    Shapiro E. (Editor), Concurrent Prolog: Collected Papers, Vols 1 and 2, MIT Press, 1987.Google Scholar
  21. 21.
    Silverman W., M. Hirsch, A. Houri and E. Shapiro, “The Logix system user manual”, Technical Report CS86-21, The Weizmann Institute of Science, June 1986. Also Chapter 21 in [20].Google Scholar
  22. 22.
    Svobodova L., “File Servers for Network-Based Distributed Systems” ACM Computing Surveys, Vol. 16, 1984.Google Scholar
  23. 23.
    Tannenbaum A., “Computer Networks”, Prentice-Hall, 1981.Google Scholar
  24. 24.
    Tribble E. D., Miller, M. S., E Shapiro, “Channels: A Generalization of Streams.” Proc. 4th Int. Conf. on Logic Programming, MIT Press, 1987.Google Scholar
  25. 25.
    Ullman J., “Principles of Database Systems”, Computer Science Press, 1982.Google Scholar
  26. 26.
    Verhofstad J. S. M., “Recovery Techniques For Database Systems”, ACM Cmputing Surveys, Vol. 10, 1978.Google Scholar
  27. 27.
    Weinbaum D., E. Shapiro, “A Hardware Description Language Using Concurrent Prolog”, proc. of CHDL, 1987. Also chapter 36 in [20].Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1989

Authors and Affiliations

  • Ehud Reches
    • 1
  • Ehud Gudes
    • 1
  • Ehud Shapiro
    • 1
  1. 1.Department of Computer ScienceThe Weizmann Institute of ScienceRehovotIsrael

Personalised recommendations