Programming in MODULA-2 (3rd corrected ed.)
Programming in MODULA-2 (3rd corrected ed.)
An overview of the SR language and implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Performance of multi-tasking and synchronization mechanisms in the programming language SR
Software—Practice & Experience
The structuring of systems using upcalls
Proceedings of the tenth ACM symposium on Operating systems principles
ACM Transactions on Programming Languages and Systems (TOPLAS)
The X-Kernel: An Architecture for Implementing Network Protocols
IEEE Transactions on Software Engineering
Practical trade-offs for open interconnection
CSC '92 Proceedings of the 1992 ACM annual conference on Communications
Alternative software architectures for parallel protocol execution with synchronous IPC
IEEE/ACM Transactions on Networking (TON)
JR: Flexible Distributed Programming in an Extended Java
ICDCS '01 Proceedings of the The 21st International Conference on Distributed Computing Systems
JR: Flexible distributed programming in an extended Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
This paper explores program designs for layered systems such as communication protocols and server/client systems that do not exhibit a strict hierarchy in their control flow. Clark has proposed structuring such systems, where both upward and downward control flow are required, to use efficient synchronous procedure calls between the layers whenever possible. The term upcall is used by Clark to describe this synchronous upward communication from server to client.Several techniques are possible for structuring such programs using upcalls. Comparisons are made by implementing a communication protocol described by Clark in three different ways. The first method implements all the protocol routines in a single large module. The second method structures the routines into modules occupying vertical slices of the protocol layers, and the third method structures the routines into modules corresponding to the protocol layers.Comparisons are made on two fronts: Preservation of modularity, in order to determine which method shows fault-tolerance and ease of programming, and program performance, which is a key motivation for the upcalls programming style. We conclude that the vertically layered protocol design is to be preferred unless there are many shared variables between the send-side and receive-side, as it is very efficient and provides the best protection of clients from each other. The horizontally layered design is the least efficient, but it is the easiest to program.