Thomas J. LeBlanc

dblp:77/2432 · DBLP profile ↗
← Back
28ranked-venue papers
12as first author
0since 2021 · last 1994
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 20 · 7 first-authorSoftware engineering, systems software and programming languages · 8 · 3 first-authorComputer networks · 1 · 1 first-authorDatabases, data management, data science and information retrieval · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer architecture, parallel and distributed computing, and storage systems
12 papers
Parallel and multicore computing · 47% Memory systems · 34% Performance modeling and evaluation · 8%
Software engineering, system software, and programming languages
8 papers
Compilers and program optimization · 42% Operating systems · 36% Programming languages and type systems · 9%

Topics — the 30 heaviest of 36, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Memory systems
cache coherence
0.031994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · SC 1992
Adjustable Block Size Coherent Caches · ISCA 1992
Parallel and multicore computing
parallel programming models
0.031994
Parallel Programming with Control Abstraction · ACM Trans. Program. Lang. Syst. 1994
Multi-Model Parallel Programming in Psyche · PPoPP 1990
First-Class User-Level Theads · SOSP 1991
Parallel and multicore computing › parallel scheduling
loop scheduling
0.021994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · SC 1992
Compilers and program optimization
parallelizing compiler
0.011994
Parallel Programming with Control Abstraction · ACM Trans. Program. Lang. Syst. 1994
Memory systems
data locality
0.011994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994
Parallel and multicore computing › parallel computing
parallel application performance
0.011994
Parallel performance using lost cycles analysis · SC 1994
Parallel and multicore computing
parallel programming models and runtimes
0.011994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994
Performance modeling and evaluation
performance tuning
0.011994
Parallel performance using lost cycles analysis · SC 1994
Embedded and real-time systems › real-time scheduling › multiprocessor scheduling
processor affinity
0.011994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994
Parallel and multicore computing › parallel computing
parallel programming languages
0.011993
Common runtime support for high-performance parallel languages · SC 1993
Parallel and multicore computing
parallel programming runtimes
0.011993
Common runtime support for high-performance parallel languages · SC 1993
Memory systems
cache
0.011992
Adjustable Block Size Coherent Caches · ISCA 1992
Memory systems › cache › multiprocessor cache
coherent cache
0.011992
Adjustable Block Size Coherent Caches · ISCA 1992
Memory systems › cache coherence
false sharing
0.011992
Adjustable Block Size Coherent Caches · ISCA 1992
Operating systems › resource management › process management
user-level threads
0.011991
First-Class User-Level Theads · SOSP 1991
Operating systems › multiprocessing
multiprocessor operating system
0.011990
Multi-Model Parallel Programming in Psyche · PPoPP 1990
Compilers and program optimization
program instrumentation
0.011989
A Software Instruction Counter · ASPLOS 1989
Debugging and program repair › record and replay
deterministic replay
0.011987
Debugging Parallel Programs with Instant Replay · IEEE Trans. Computers 1987
Performance modeling and evaluation
analytical modeling
0.011994
Parallel performance using lost cycles analysis · SC 1994
Parallel and multicore computing › multiprocessor system
shared-memory multiprocessor
0.011994
Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors · IEEE Trans. Parallel Distributed Syst. 1994
Distributed systems
distributed system modeling
0.011985
HPC: A Model of Structure and Change in Distributed Systems · IEEE Trans. Computers 1985
Compilers and program optimization
parallel language compilation
0.011993
Common runtime support for high-performance parallel languages · SC 1993
Programming languages and type systems
distributed programming languages
0.011984
Programming Language Support for Read-Time Distributed Systems · ICDE 1984
Program analysis
static analysis
0.011984
Programming Language Support for Read-Time Distributed Systems · ICDE 1984
Embedded and real-time systems
distributed real-time systems
0.011984
Programming Language Support for Read-Time Distributed Systems · ICDE 1984
Distributed systems
programming language support
0.011984
Programming Language Support for Read-Time Distributed Systems · ICDE 1984
Parallel and multicore computing › multiprocessor system
scalable multiprocessor
0.011992
Adjustable Block Size Coherent Caches · ISCA 1992
Compilers and program optimization
compiler construction
0.011983
A Symbol Table Abstraction to Implement Languages with Explicit Scope Control · IEEE Trans. Software Eng. 1983
Compilers and program optimization › compiler construction
symbol table
0.011983
A Symbol Table Abstraction to Implement Languages with Explicit Scope Control · IEEE Trans. Software Eng. 1983
Processor architecture and microarchitecture
debugging support
0.011989
A Software Instruction Counter · ASPLOS 1989

Methods — techniques the papers use, named apart from their topics

workload balancing · 0.0synchronization minimization · 0.0runtime system · 0.0software interrupts · 0.0lightweight processes · 0.0overhead profiling · 0.0analytic modeling · 0.0simulation · 0.0processor affinity · 0.0shared-memory communication · 0.0shared memory communication · 0.0message passing · 0.0prototype implementation · 0.0event ordering · 0.0static checking · 0.0language design · 0.0hashed symbol table · 0.0
YearPublicationVenuePosition
1994 Can High Bandwidth and Latency Justify Large Cache Blocks in Scalable Multiprocessors?
abstract
An important architectural design decision affecting the performance of coherent caches is the choice of block size. There are two primary factors that influence this choice: the reference behavior of applications and the remote access bandwidth and latency of the machine. Given that we anticipate increases in both network bandwidth and latency (in processor cycles) in scalable shared-memory multiprocessors, the question arises as to what effect these increases will have on the choice of block size. We use analytical modeling and execution-driven simulation of parallel programs on a large-scale shared-memory machine to examine the relationship between cache block size and application performance as a function of remote access bandwidth and latency. We show that even under assumptions of high remote access bandwidth and latency, the best application performance usually results from using cache blocks between S2 and 128 bytes in size. We also show that modifying the program to remove the dominant source of misses may not increase the best performing block size. We conclude that large cache blocks cannot be justified in most realistic scenarios.
Ricardo Bianchini, Thomas J. LeBlanc
ICPP (1)2
1994 Parallel performance using lost cycles analysis
abstract
Most performance debugging and tuning of parallel programs is based on the "measure-modify" approach, which is heavily dependent on detailed measurements of programs during execution. This approach is extremely time consuming and does not lend itself to predicting performance under varying conditions. Analytic modeling and scalability analysis provide predictive power, but are not widely used in practice, due primarily to their emphasis on asymptotic behavior and the difficulty of developing accurate models that work for real world programs. We describe a set of tools for performance tuning of parallel programs that bridges this gap between measurement and modeling. The approach is based on lost cycles analysis, which involves measurement and modeling of all sources of overhead in a parallel program. We first describe a tool for measuring overheads in parallel programs that we have incorporated onto the runtime environment for Fortran programs on the Kendall Square KSR1. We then describe a tool that fits these overhead measurements to analytic forms. We illustrate the use of these tools by analyzing the performance tradeoffs among parallel implementations of 2D FFT. These examples show how our tools enable programmers to develop accurate performance models of parallel applications without requiring extensive performance modeling expertise.>
Mark Crovella, Thomas J. LeBlanc
SC2
1994 The Advantages of Multiple Parallelizations in Combinatorial Search
abstract
Applications typically have several potential sources of parallelism, and in choosing a particular parallelization, the programmer must balance the benefits of each source of parallelism with the corresponding overhead. The trade-offs are often difficult to analyze, as they may depend on the hardware architecture, software environment, input data, and properties of the algorithm. An example of this dilemma occurs in a wide range of problems that involve processing trees, wherein processors can be assigned either to separate subtrees, or to parallelizing the work performed on individual tree nodes. We explore the complexity of the trade-offs involved in this decision by considering alternative parallelizations of combinatorial search, examining the factors that determine the best-performing implementation for this important class of problems. Using subgraph isomorphism as a representative search problem, we show how the density of the solution space, the number of solutions desired, the number of available processors, and the underlying architecture all affect the choice of an efficient parallelization. Our experiments, which span seven different shared-memory multiprocessors and a wide range of input graphs, indicate that relative performance depends on each of these factors. On some machines and for some inputs, a sequential depth-first search of the solution space, applying simple loop-level parallelism at each node in the search tree, performs best. On other machines or other inputs, parallel tree search performs best. In still other cases, a hybrid solution, containing both parallel tree search and loop parallelism, works best. We present a quantitative analysis that explains these results and present experimental data culled from thousands of program executions that validates the analysis. From these experiences we conclude that there is no one "best" parallelization that suffices over a range of machines, inputs, and precise problem specifications. As a corollary, we provide quantitative evidence that programming environments and languages should not focus exclusively on flat data parallelism, since nested parallelism or hybrid forms of parallelism may be required for an efficient implementation of some applications.
Lawrence A. Crowl, Mark Crovella, Thomas J. LeBlanc, Michael L. Scott
J. Parallel Distributed Comput.3
1994 Parallel Programming with Control Abstraction
abstract
Parallel programming involves finding the potential parallelism in an application and mapping it to the architecture at hand. Since a typical application has more potential parallelism than any single architecture can exploit effectively, programmers usually limit their focus to the parallelism that the available control constructs express easily and that the given architecture exploits efficiently. This approach produces programs that exhibit much less parallelism that exists in the application, and whose performance depends critically on the underlying hardware and software. We argue for an alternative approach based oncontrol abstraction. Control abstraction is the process by which programmers define new control constructs, specifying constraints on statement ordering separately from an implementation of that ordering. With control abstraction programmers can define and use a rich variety of control constructs to represent an algorithm's potential parallelism. Since control abstraction separates the definition of a construct from its implementation, a construct may have several different implementations, each exploiting a different subset of the parallelism admitted by the construct. By selecting an implementation for each control construct using annotations, a programmer can vary the parallelism in a program to best exploit the underlying hardware without otherwise changing the source code. This approach produces programs that exhibit most of the potential parallelism in an algorithm, and whose performance can be tuned simply by choosing among the various implementations for the control constructs in use.
Lawrence A. Crowl, Thomas J. LeBlanc
ACM Trans. Program. Lang. Syst.2
1994 Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors
abstract
Loops are the single largest source of parallelism in many applications. One way to exploit this parallelism is to execute loop iterations in parallel on different processors. Previous approaches to loop scheduling attempted to achieve the minimum completion time by distributing the workload as evenly as possible while minimizing the number of synchronization operations required. The authors consider a third dimension to the problem of loop scheduling on shared-memory multiprocessors: communication overhead caused by accesses to nonlocal data. They show that traditional algorithms for loop scheduling, which ignore the location of data when assigning iterations to processors, incur a significant performance penalty on modern shared-memory multiprocessors. They propose a new loop scheduling algorithm that attempts to simultaneously balance the workload, minimize synchronization, and co-locate loop iterations with the necessary data. They compare the performance of this new algorithm to other known algorithms by using five representative kernel programs on a Silicon Graphics multiprocessor workstation, a BBN Butterfly, a Sequent Symmetry, and a KSR-1, and show that the new algorithm offers substantial performance improvements, up to a factor of 4 in some cases. The authors conclude that loop scheduling algorithms for shared-memory multiprocessors cannot afford to ignore the location of data, particularly in light of the increasing disparity between processor and memory speeds.>
Evangelos P. Markatos, Thomas J. LeBlanc
IEEE Trans. Parallel Distributed Syst.2
1993 Common runtime support for high-performance parallel languages
abstract
No abstract available.
Geoffrey C. Fox, Sanjay Ranka, Michael L. Scott, Allen D. Malony, James C. Browne, Marina C. Chen, Alok N. Choudhary, Thomas E. Cheatham, Janice E. Cuny, Rudolf Eigenmann, Amr F. Fahmy, Ian T. Foster, Dennis Gannon, Tomasz Haupt, Carl Kesselman, Charles Koelbel, Wei Li 0015, Monica S. Lam, Thomas J. LeBlanc, Jim Openshaw, David A. Padua, Constantine D. Polychronopoulos, Joel H. Saltz, Alan Sussman, Gil Weigand, Katherine A. Yelick
SC19
1993 Kernel-Kernel communication in a shared-memory multiprocessor
abstract
Abstract In the standard kernel organization on a bus‐based multiprocessor, all processors share the code and data of the operating system; explicit synchronization is used to control access to kernel data structures. Distributed‐memory multicomputers use an alternative approach, in which each instance of the kernel performs local operations directly and uses remote invocation to perform remote operations. Either approach to interkernel communication can be used in a large‐scale shared‐memory multiprocessor. In the paper we discuss the issues and architectural features that must be considered when choosing between remote memory access and remote invocation. We focus in particular on experience with the Psyche multiprocessor operating system on the BBN Butterfly Plus. We find that the Butterfly architecture is biased towards the use of remote invocation for kernel operations that perform a significant number of memory references, and that current architectural trends are likely to increase this bias in future machines. This conclusion suggests that straightforward parallelization of existing kernels (e.g. by using semaphores to protect shared data) is unlikely in the future to yield acceptable performance. We note, however, that remote memory access is useful for small, frequently‐executed operations, and is likely to remain so.
Eliseu M. Chaves Jr., Prakash Das, Thomas J. LeBlanc, Brian D. Marsh, Michael L. Scott
Concurr. Pract. Exp.3
1992 Load Balancing vs. Locality Management in Shared-Memory Multiprocessors
Evangelos P. Markatos, Thomas J. LeBlanc
ICPP (1)2
1992 Adjustable Block Size Coherent Caches
abstract
Several studies have shown that the performance of coherent caches depends on the relationship between the granularity of sharing and locality exhibited by the program and the cache block size. Large cache blocks exploit processor and spatial locality, but may cause unnecessary cache invalidations due to false sharing. Small cache blocks can reduce the number of cache invalidations, but increase the nuber of bus or network transactions required to load data into the cache. In this paper we describe a cache organization that dynamically adjusts the cache block size according to recently observed reference behavior. Cache blocks are split across cache lines when false sharing occurs, ad merged back into a single cache line to explit spatial locality. To evaluate this cache organization, we simulate a scalable multiprocessor with coherent caches, using a suite of memory reference traces to model program behavior. We show that for evry fixed block size, some program suffers a 33% increase in the average waiting time per reference, and a factor of 2 increase in the average number of words transferred per reference, when compared against the performance of an adjustable block size cache. In the few cases where adjusting the block size does not provide superior performance, it comes within 7% of the best fixed block size alternative. We conclude that an adjustable block size cache offers significantly better performance than every fixed block size cache, especially when there is variability in the granularity of sharing exhibited by applications.
Cezary Dubnicki, Thomas J. LeBlanc
ISCA2
1992 Using Processor Affinity in Loop Scheduling on Shared-Memory Multiprocessors
abstract
The authors consider a new dimension to the problem of loop scheduling on shared-memory multiprocessors: communication overhead caused by accesses to nonlocal data. It is shown that traditional algorithms for loop scheduling, which ignore the location of data when assigning iterations to processors, incur a significant performance penalty on modern shared-memory multiprocessors. The authors propose a loop scheduling algorithm that attempts to simultaneously balance the workload, minimize synchronization, and colocate loop iterations with the necessary data. They compare the performance of this algorithm to that of other known algorithm using four representative applications on a Silicon Graphics multiprocessor workstation, a BBN Butterfly, and a Sequent Symmetry, and they show that the algorithm offers substantial performance improvements, up to a factor of 3 in some cases. They conclude that loop scheduling algorithms for shared-memory multiprocessors cannot afford to ignore the location of data, particularly in light of the increasing disparity between processor and memory speeds.>
Evangelos P. Markatos, Thomas J. LeBlanc
SC2
1992 Operating System Support for Animate Vision
abstract
Animate vision systems couple computer vision and robotics to achieve robust and accurate vision, as well as other complex behavior. These systems combine low-level sensory processing and effector output with high-level cognitive planning—all computationally intensive tasks that can benefit from parallel processing. A typical animate vision application will likely consist of many tasks, each of which may require a different parallel programming model, and all of which must cooperate to achieve the desired behavior. These multi-model programs require an underlying software system that not only supports several different models of parallel computation simultaneously, but which also allows tasks implemented in different models to interact. This paper describes the Psyche multiprocessor operating system, which was designed to support multi-model programming, and the Rochester Checkers Player, a multi-model robotics program that plays checkers against a human opponent. Psyche supports a variety of parallel programming models within a single operating system by according first-class status to processes implemented in user space. It also supports interactions between programming models using model-independent communication, wherein different types of processes communicate and synchronize without relying on the semantics or implementation of a particular programming model. The implementation of the Checkers Player, in which different parallel programming models are used for vision, robot motion planning, and strategy, illustrates the use of the Psyche mechanisms in an application program, and demonstrates many of the advantages of multi-model programming for animate vision systems.
Brian D. Marsh, Thomas J. LeBlanc, Michael L. Scott, Timothy G. Becker, Prakash Das, Jonas Karlsson 0003, Cesar Quiroz
J. Parallel Distributed Comput.3
1991 First-Class User-Level Theads
abstract
It is often desirable, for reasons of clarity, portability, and efficiency, to write parallel programs in which the number of processes is independent of the number of available processors. Several modern operating systems support more than one process in an address space, but the overhead of creating and synchronizing kernel processes can be high. Many runtime environments implement lightweight processes (threads) in user space, but this approach usually results in second-class status for threads, making it difficult or impossible to perform scheduling operations at appropriate times (e.g. when the current thread blocks in the kernel). In addition, a lack of common assumptions may also make it difficult for parallel programs or library routines that use dissimilar thread packages to communicate with each other, or to synchronize access to shared data.We describe a set of kernel mechanisms and conventions designed to accord first-class status to user-level threads, allowing them to be used in any reasonable way that traditional kernel-provided processes can be used, while leaving the details of their implementation to user-level code. The key features of our approach are (1) shared memory for asynchronous communication between the kernel and the user, (2) software interrupts for events that might require action on the part of a user-level scheduler, and (3) a scheduler interface convention that facilitates interactions in user space between dissimilar kinds of threads. We have incorporated these mechanisms in the Psyche parallel operating system, and have used them to implement several different kinds of user-level threads. We argue for our approach in terms of both flexibility and performance.
Brian D. Marsh, Michael L. Scott, Thomas J. LeBlanc, Evangelos P. Markatos
SOSP3
1990 Multi-Model Parallel Programming in Psyche
abstract
Many different parallel programming models, including lightweight processes that communicate with shared memory and heavyweight processes that communicate with messages, have been used to implement parallel applications. Unfortunately, operating systems and languages designed for parallel programming typically support only one model. Multi-model parallel programming is the simultaneous use of several different models, both across programs and within a single program. This paper describes multi-model parallel programming in the Psyche multiprocessor operating system. We explain why multi-model programming is desirable and present an operating system interface designed to support it. Through a series of three examples, we illustrate how the Psyche operating system supports different models of parallelism and how the different models are able to interact.
Michael L. Scott, Thomas J. LeBlanc, Brian D. Marsh
PPoPP2
1990 Analyzing Parallel Program Executions Using Multiple Views
abstract
To understand a parallel program's execution we must be able to analyze lots of information describing complex relationships among many processes. Various techniques have been used, from program replay to program animation, but each has limited applicability and the lack of a common foundation precludes an integrated solution. Our approach to parallel program analysis is based on a multiplicity of views of an execution. We use a synchronization trace captured during execution to construct a graph representation of the program's behavior. A user manipulates this representation to create and fine-tune visualizations using an integrated, programmable toolkit. Additional execution details can be recovered as needed using program replay to reconstruct an execution from an existing synchronization trace. We present a framework for describing views of a parallel program's execution, and an analysis methodology that relates a sequence of views to the program development cycle. We then describe our toolkit implementation and explain how users construct visualizations using the toolkit. Finally, we present an extended example to illustrate both our methodology and the power of our programmable toolkit.
Thomas J. LeBlanc, John M. Mellor-Crummey, Robert J. Fowler
J. Parallel Distributed Comput.1
1989 A Software Instruction Counter
abstract
Although several recent papers have proposed architectural support for program debugging and profiling, most processors do not yet provide even basic facilities, such as an instruction counter. As a result, system developers have been forced to invent software solutions. This paper describes our implementation of a software instruction counter for program debugging. We show that an instruction counter can be reasonably implemented in software, often with less than 10% execution overhead. Our experience suggests that a hardware instruction counter is not necessary for a practical implementation of watch-points and reverse execution, however it will make program instrumentation much easier for the system developer.
John M. Mellor-Crummey, Thomas J. LeBlanc
ASPLOS2
1989 Parallel program debugging
abstract
Although parallel programs are significantly more complex than sequential programs the same debugging methodology, augmented with the appropriate tools, can be used to debug parallel and sequential programs. Experiments have shown that these tools can reduce the debugging cycle for a parallel program dramatically. Other techniques, such as verification and testing, can be integrated with the debugging methodology. For example, static analysis can be used to discover erroneous race conditions. Verification can be used to narrow the search space for errors during monitoring and debugging. Nonetheless, debugging remains the most widely used technique for developing correct parallel programs.>
Thomas J. LeBlanc
COMPSAC1
1989 The Elmwood Multiprocessor Operating System
abstract
Abstract Elmwood is an object‐oriented, multiprocessor operating system designed and implemented during a graduate seminar. It consists of a minimal kernel and a collection of user‐implemented services. The kernel provides two major abstractions:objects, which consist of code and data, and processes, which represent asynchronous activity. Objects, like programs, are passive. To operate on an abstraction or to request a service, processes invoke anentry proceduredefined by the corresponding object. Objects implement their own protection and synchronization policies using minimal kernel mechanisms. We describe the Elmwood kernel interface, an implementation on the BBN Butterfly parallel processor, and our experiences in developing a multiprocessor operating system under rigid time constraints. These experiences illustrate several general lessons regarding kernel design and trade‐offs for implementation expedience.
Thomas J. LeBlanc, John M. Mellor-Crummey, Neal M. Gafter, Lawrence A. Crowl, Peter C. Dibble
Softw. Pract. Exp.1
1988 Design Rationale for Psyche a General-Purpose Multiprocessor Operating System
Michael L. Scott, Thomas J. LeBlanc, Brian D. Marsh
ICPP (2)2
1987 Crowd Control: Coordinating Processes in Parallel
Thomas J. LeBlanc
ICPP1
1987 Debugging Parallel Programs with Instant Replay
abstract
The debugging cycle is the most common methodology for finding and correcting errors in sequential programs. Cyclic debugging is effective because sequential programs are usually deterministic. Debugging parallel programs is considerably more difficult because successive executions of the same program often do not produce the same results. In this paper we present a general solution for reproducing the execution behavior of parallel programs, termed Instant Replay. During program execution we save the relative order of significant events as they occur, not the data associated with such events. As a result, our approach requires less time and space to save the information needed for program replay than other methods. Our technique is not dependent on any particular form of interprocess communication. It provides for replay of an entire program, rather than individual processes in isolation. No centralized bottlenecks are introduced and there is no need for synchronized clocks or a globally consistent logical time. We describe a prototype implementation of Instant Replay on the BBN Butterfly™ Parallel Processor, and discuss how it can be incorporated into the debugging cycle for parallel programs.
Thomas J. LeBlanc, John M. Mellor-Crummey
IEEE Trans. Computers1
1986 Shared Memory Versus Message-Passing in a Tightly-Coupled Multiprocessor: A Case Study
Thomas J. LeBlanc
ICPP1
1985 Hierarchical Process Composition in Distributed Operating Systems
Thomas J. LeBlanc, Stuart A. Friedberg
ICDCS1
1985 HPC: A Model of Structure and Change in Distributed Systems
abstract
Distributed systems must provide certain fundamental facilities, including communication, protection, resource management, reliability and process (computation) abstraction. The authors describe the design of HPC, an object-oriented model of interprocess relationships for distributed systems which addresses all of these fundamental services. The major novelties of HPC lie in the extension of the process abstraction to collections of processes and the provision of a rich set of structuring mechanisms for distributed computations. An important aspect of the model is that it results in the ability to maintain and exploit execution context for managing processes in a distributed computation.
Thomas J. LeBlanc, Stuart A. Friedberg
IEEE Trans. Computers1
1984 Broadcast Communication in StarMod
Thomas J. LeBlanc, Robert P. Cook
ICDCS1
1984 Programming Language Support for Read-Time Distributed Systems
abstract
This paper advocates the use of a high-level, distributed programming language for programming realtime distributed systems. The advantages of this approach include the program structure imposed by an appropriate language design, static checking provided by the compiler, and efficient execution. A structured approach to the issues of user control of machine dependencies, process scheduling, timing constraints, and interprocess communication is suggested, with specific examples drawn from modern programming languages designed for realtime and distributed programming.
Thomas J. LeBlanc
ICDE1
1984 The StarMod Distributed Programming Kernel
abstract
Abstract This paper describes the design and implementation of a kernel for the distributed programming language StarMod. The distributed programming kernel was written in a subset of StarMod supported by a concurrent programming kernel. Kernel issues addressed include process representation, I/O device management, signal semantics, system utilities, network communication and the implementation of high‐level language communication primitives. We conclude with a summary of our experiences in the development of a ‘bare machine’ kernel for a network of microprocessors.
Thomas J. LeBlanc, Robert H. Gerber, Robert P. Cook
Softw. Pract. Exp.1
1983 A Symbol Table Abstraction to Implement Languages with Explicit Scope Control
abstract
We are concerned with languages in which the programmer has explicit control over the referencing environment of a name. Several modern programming languages, including Ada, Euclid, Mesa, and Modula, implement these control capabilities. This paper describes a simple technique which uses the traditional concepts of a hashed symbol table and lexical level to solve many of the symbol table implemen-tation problems associated with explicit scope control. The primary ad-vantage of this technique is that a single symbol table abstraction can be used to simply and efficiently solve most problems in scope control.
Robert P. Cook, Thomas J. LeBlanc
IEEE Trans. Software Eng.2
1982 Distributed programming languages: design and implementation
Thomas J. LeBlanc, Robert P. Cook
Comput. Commun.1