EDBT 2026 Demo / reviewers in the wild / expert
Gregory R. Andrews
dblp:a/GregoryRAndrews
· DBLP profile ↗
27ranked-venue papers
12as first author
0since 2021 · last 2010
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 17 · 9 first-authorSystems, architecture and hardware · 8 · 3 first-authorApplied, interdisciplinary, general and emerging computing · 2Security and privacy · 1
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.
| Software engineering, system software, and programming languages
10 papers |
Compilers and program optimization · 57% Software maintenance and evolution · 29% Operating systems · 8% | |
| Computer architecture, parallel and distributed computing, and storage systems
10 papers |
Memory systems · 34% Processor architecture and microarchitecture · 32% Parallel and multicore computing · 13% | |
| Network and information security
4 papers |
Cryptographic primitives and cryptanalysis · 74% Systems and software security · 24% Authentication and access control · 2% |
Topics — the 30 heaviest of 43, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Cryptographic primitives and cryptanalysis
obfuscation |
0.1 | 1 | 2007 | Binary Obfuscation Using Signals · USENIX Security Symposium 2007 |
Compilers and program optimization › instruction scheduling
instruction-level parallelism |
0.1 | 1 | 2005 | Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium Executables · IEEE Trans. Software Eng. 2005 |
Compilers and program optimization
predicated execution |
0.1 | 1 | 2005 | Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium Executables · IEEE Trans. Software Eng. 2005 |
Software maintenance and evolution
reverse engineering |
0.1 | 1 | 2005 | Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium Executables · IEEE Trans. Software Eng. 2005 |
Systems and software security
reverse engineering |
0.0 | 1 | 2007 | Binary Obfuscation Using Signals · USENIX Security Symposium 2007 |
Processor architecture and microarchitecture › instruction set architecture
EPIC architecture |
0.0 | 1 | 2005 | Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium Executables · IEEE Trans. Software Eng. 2005 |
Processor architecture and microarchitecture
instruction set architecture |
0.0 | 1 | 2005 | Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium Executables · IEEE Trans. Software Eng. 2005 |
Memory systems › shared memory
distributed shared memory |
0.0 | 1 | 1996 | Dynamically Controlling False Sharing in Distributed Shared Memory · HPDC 1996 |
Memory systems › cache coherence
false sharing |
0.0 | 1 | 1996 | Dynamically Controlling False Sharing in Distributed Shared Memory · HPDC 1996 |
Processor architecture and microarchitecture
speculative execution |
0.0 | 1 | 2003 | Unspeculation · ASE 2003 |
Parallel and multicore computing › parallelization strategies
fine-grained parallelism |
0.0 | 1 | 1994 | Distributed Filaments: Efficient Fine-Grain Parallelism on a Cluster of Workstations · OSDI 1994 |
Programming languages and type systems
distributed programming languages |
0.0 | 1 | 1988 | An Overview of the SR Language and Implementation · ACM Trans. Program. Lang. Syst. 1988 |
Parallel and multicore computing › parallel programming models
shared-memory parallelization |
0.0 | 1 | 1996 | Dynamically Controlling False Sharing in Distributed Shared Memory · HPDC 1996 |
Operating systems › distributed systems
distributed operating system |
0.0 | 1 | 1987 | The Design of the Saguaro Distributed Operating System · IEEE Trans. Software Eng. 1987 |
Operating systems
interprocess communication |
0.0 | 1 | 1987 | The Design of the Saguaro Distributed Operating System · IEEE Trans. Software Eng. 1987 |
Distributed systems
distributed coordination |
0.0 | 2 | 1982 | On-the-fly Deadlock Prevention · PODC 1982 Distributed Allocation with Pools of Servers · PODC 1982 |
Distributed systems › distributed resource management
distributed resource allocation |
0.0 | 1 | 1987 | The Design of the Saguaro Distributed Operating System · IEEE Trans. Software Eng. 1987 |
Storage systems › file systems › distributed file system
file replication |
0.0 | 1 | 1987 | The Design of the Saguaro Distributed Operating System · IEEE Trans. Software Eng. 1987 |
High-performance computing
cluster computing |
0.0 | 1 | 1994 | Distributed Filaments: Efficient Fine-Grain Parallelism on a Cluster of Workstations · OSDI 1994 |
Operating systems › resource management
deadlock prevention |
0.0 | 1 | 1982 | On-the-fly Deadlock Prevention · PODC 1982 |
Operating systems
resource management |
0.0 | 1 | 1982 | On-the-fly Deadlock Prevention · PODC 1982 |
Cloud and datacenter computing › resource management › shared resource management
deadlock prevention |
0.0 | 1 | 1982 | On-the-fly Deadlock Prevention · PODC 1982 |
Distributed systems
fault tolerance |
0.0 | 1 | 1982 | Distributed Allocation with Pools of Servers · PODC 1982 |
Distributed systems › fault tolerance
robust distributed algorithms |
0.0 | 1 | 1982 | Distributed Allocation with Pools of Servers · PODC 1982 |
Cloud and datacenter computing › resource allocation
server allocation |
0.0 | 1 | 1982 | Distributed Allocation with Pools of Servers · PODC 1982 |
Concurrent programming
synchronization and communication |
0.0 | 1 | 1981 | Synchronizing Resources · ACM Trans. Program. Lang. Syst. 1981 |
Algorithms and data structures
dynamic data structures |
0.0 | 1 | 1981 | Active Data Structures · ICSE 1981 |
Program analysis › static analysis
information flow analysis |
0.0 | 1 | 1980 | An Axiomatic Approach to Information Flow in Programs · ACM Trans. Program. Lang. Syst. 1980 |
Systems and software security
information flow control |
0.0 | 1 | 1979 | Certifying Information Flow Properties of Programs: An Axiomatic Approach · POPL 1979 |
Operating systems › system security › operating system security
access control |
0.0 | 1 | 1979 | Access Control in Parallel Programs · IEEE Trans. Software Eng. 1979 |
Methods — techniques the papers use, named apart from their topics
reverse engineering · 0.2binary rewriting · 0.1signal-based obfuscation · 0.1semaphores · 0.0rendez-vous · 0.0remote procedure call · 0.0multicast · 0.0asynchronous message passing · 0.0type system · 0.0request prediction algorithm · 0.0on-the-fly prevention · 0.0hash addressing · 0.0axiomatic proof rules · 0.0allocation protocol · 0.0deductive system · 0.0axiomatic logic · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2010 | Rex: A toolset for reproducing software experimentsabstractSoftware experiments such as BLAST are hard to reproduce even if identical hardware is available because external data sets could have changed, software used in the original experiment may be unavailable, or the input parameters for the experiment may not be documented. This paper presents Rex, a toolset that allows one to record an experiment and archive its apparatus, replay an experiment, conduct new experiments on a recorded apparatus, and compare differences between experiments. The execution time overhead of recording experiments is on average about 2%; the space overhead of an archive ranges from 8 MB to 5 GB. Somasundaram Perianayagam, Gregory R. Andrews, John H. Hartman |
BIBM | 2 |
| 2010 | Gossamer: A Lightweight Approach to Using Multicore MachinesabstractThe key to performance improvements in the multi-core era is for software to utilize the available concurrency. This paper presents a lightweight programming framework called Gossamer that is easy to use, enables the solution of a broad range of parallel programming problems, and produces efficient code. Gossamer contains (1) a set of high-level annotations that one adds to a sequential program to specify concurrency and synchronization, (2) a source-to-source translator that produces an optimized program that uses our threading library, and (3) a run-time system that provides efficient threads and synchronization. Gossamer supports iterative and recursive parallelism, pipelined computations, domain decomposition, and MapReduce computations. Joseph Anthony Roback, Gregory R. Andrews |
ICPP | 2 |
| 2007 | Code Compaction of an Operating System KernelabstractGeneral-purpose operating systems, such as Linux, are increasingly being used in embedded systems. Computational resources are usually limited, and embedded processors often have a limited amount of memory. This makes code size especially important. This paper describes techniques for automatically reducing the memory footprint of general-purpose operating systems on embedded platforms. The problem is complicated by the fact that kernel code tends to be quite different from ordinary application code, including the presence of a significant amount of hand-written assembly code, multiple entry points, implicit control flow paths involving interrupt handlers, and frequent indirect control flow via function pointers. We use a novel "approximate decompilation" technique to apply source-level program analysis to hand-written assembly code. A prototype implementation of our ideas on an Intel x86 platform, applied to a Linux kernel that has been configured to exclude unnecessary code, obtains a code size reduction of close to 24% Haifeng He, John Trimble, Somasundaram Perianayagam, Saumya K. Debray, Gregory R. Andrews |
CGO | 5 |
| 2007 | The revenge of the overlay: automatic compaction of OS kernel code via on-demand code loadingabstractThere is increasing interest in using general-purpose operating systems, such as Linux, on embedded platforms. It is especially important in embedded systems to use memory efficiently because embedded processors often have limited physical memory. This paper describes an automatic technique for reducing the memory footprint of general-purpose operating systems on embedded platforms by keeping infrequently executed code on secondary storage and loading such code only if it is needed at run time. Our technique is based on an old idea - memory overlays - and it does not require hardware or operating system support for virtual memory. A prototype of the technique has been implemented for the Linux kernel. We evaluate our approach with two benchmark suites: MiBench and MediaBench, and a Web server application. The experimental results show that our approach reduces memory requirements for the Linux kernel code by about 53% with little degradation in performance. Haifeng He, Saumya K. Debray, Gregory R. Andrews |
EMSOFT | 3 |
| 2007 | Binary Obfuscation Using Signals
Igor V. Popov, Saumya K. Debray, Gregory R. Andrews |
USENIX Security Symposium | 3 |
| 2005 | Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium ExecutablesabstractEPIC (explicitly parallel instruction computing) architectures, exemplified by the Intel Itanium, support a number of advanced architectural features, such as explicit instruction-level parallelism, instruction predication, and speculative loads from memory. However, compiler optimizations that take advantage of these features can profoundly restructure the program's code, making it potentially difficult to reconstruct the original program logic from an optimized Itanium executable. This paper describes techniques to undo some of the effects of such optimizations and thereby improve the quality of reverse engineering such executables. Noah Snavely, Saumya K. Debray, Gregory R. Andrews |
IEEE Trans. Software Eng. | 3 |
| 2003 | UnspeculationabstractModern architectures, such as the Intel Itanium, support speculation, a hardware mechanism that allows the early execution of expensive operations possibly even before it is known whether the results of the operation are needed. While such speculative execution can improve execution performance considerably, it requires a significant amount of complex support code to deal with and recover from speculation failures. This greatly complicates the tasks of understanding and re-engineering speculative code. This paper describes a technique for removing speculative instructions from optimized binary programs in a way that is guaranteed to preserve program semantics, thereby making the resulting "unspeculated" programs easier to understand and more amenable to reengineering using traditional reverse engineering techniques. Noah Snavely, Saumya K. Debray, Gregory R. Andrews |
ASE | 3 |
| 1998 | Efficient support for fine-grain parallelism on shared-memory machinesabstractA coarse-grain parallel program typically has one thread (task) per processor, whereas a fine-grain program has one thread for each independent unit of work. Although there are several advantages to fine-grain parallelism, conventional wisdom is that coarse-grain parallelism is more efficient. This paper illustrates the advantages of fine-grain parallelism and presents an efficient implementation for shared-memory machines. The approach has been implemented in a portable software package called Filaments, which employs a unique combination of techniques to achieve efficiency. The performance of the fine-grain programs discussed in this paper is always within 13% of a hand-coded coarse-grain program and is usually within 5%. © 1998 John Wiley & Sons, Ltd. David K. Lowenthal, Vincent W. Freeh, Gregory R. Andrews |
Concurr. Pract. Exp. | 3 |
| 1996 | Dynamically Controlling False Sharing in Distributed Shared MemoryabstractDistributed shared memory (DSM) alleviates the need to program message passing explicitly on a distributed-memory machine. In order to reduce memory latency, a DSM replicates copies of data. This paper examines several current approaches to controlling thrashing caused by false sharing in a DSM. Then it introduces a novel memory consistency protocol, writer-owns, which detects and eliminates false sharing at run time. In iterative computations, where the data is accessed similarly every iteration, the writer-owns protocol can have tremendous benefits because the overhead of eliminating false sharing is only incurred once. Performance results show that the writer-owns protocol is competitive with and often better than existing approaches. Vincent W. Freeh, Gregory R. Andrews |
HPDC | 2 |
| 1996 | Using Fine-Grain Threads and Run-Time Decision Making in Parallel Computing
David K. Lowenthal, Vincent W. Freeh, Gregory R. Andrews |
J. Parallel Distributed Comput. | 3 |
| 1994 | Distributed Filaments: Efficient Fine-Grain Parallelism on a Cluster of Workstations
Vincent W. Freeh, David K. Lowenthal, Gregory R. Andrews |
OSDI | 3 |
| 1989 | A Method for Solving Synchronization Problems
Gregory R. Andrews |
Sci. Comput. Program. | 1 |
| 1988 | An Overview of the SR Language and ImplementationabstractSR is a language for programming distributed systems ranging from operating systems to application programs. On the basis of our experience with the initial version, the language has evolved considerably. In this paper we describe the current version of SR and give an overview of its implementation. The main language constructs are still resources and operations. Resources encapsulate processes and variables that they share; operations provide the primary mechanism for process interaction. One way in which SR has changed is that both resources and processes are now created dynamically. Another change is that inheritance is supported. A third change is that the mechanisms for operation invocation—call and send—and operation implementation—proc and in—have been extended and integrated. Consequently, all of local and remote procedure call, rendezvous, dynamic process creation, asynchronous message passing, multicast, and semaphores are supported. We have found this flexibility to be very useful for distributed programming. Moreover, by basing SR on a small number of well-integrated concepts, the language has proved easy to learn and use, and it has a reasonably efficient implementation. Gregory R. Andrews, Ronald A. Olsson, Michael H. Coffin, Irving Elshoff, Kelvin D. Nilsen, Titus D. M. Purdin, Gregg M. Townsend |
ACM Trans. Program. Lang. Syst. | 1 |
| 1987 | A File Replication Facility for Berkeley UnixabstractAbstract This paper describes two mechanisms – reproduction sets and metafiles – that provide low‐cost, semi‐automatic file replication and location transparency facilities for an interconnected collection of machines running Berkeley Unix. A reproduction set is a collection of files that the system attempts to keep identical; this is done on a ‘best effort’ basis, with the system relying on the user to handle unusual situations. A metafile is a special file that contains symbolic pathnames of other files, each of which may be on any machine in the network; opening a metafile results in opening an available constituent file. Examples are given to illustrate the use of these mechanisms. Their implementation and performance are also described. Titus D. M. Purdin, Richard D. Schlichting, Gregory R. Andrews |
Softw. Pract. Exp. | 3 |
| 1987 | The Design of the Saguaro Distributed Operating SystemabstractThis paper describes the design of the Saguaro operating system for computers connected by a local-area network. Systems constructed on such an architecture have the potential advantages of concurrency and robustness. In Saguaro, these advantages are made available to the user through several mechanisms. One is channels, an interprocess communication and synchronization facility that allows the input and output of different commands to be connected to form general graphs of communicating processes. Two additional mechanisms are provided to support semitransparent file replication and access: reproduction sets and metafiles. A reproduction set is a collection of files that the system attempts to keep identical on a "best effort" basis. A metafile is a special file that contains symbolic pathnames of other files; when a metafile is opened, the system selects an available constituent file and opens it instead. The advantages of concurrency and robustness are also realized at the system level by the use of pools of server processes and decentralized allocation protocols. Saguaro also makes extensive use of a type system to describe user data such as files and to specify the types of arguments to commands and procedures. This enables the system to assist in type checking and leads to a user interface in which command-specific templates are available to facilitate command invocation. Gregory R. Andrews, Richard D. Schlichting, Roger Hayes, Titus D. M. Purdin |
IEEE Trans. Software Eng. | 1 |
| 1986 | The Evolution of the SR Language
Gregory R. Andrews, Ronald A. Olsson |
Distributed Comput. | 1 |
| 1982 | Distributed Allocation with Pools of ServersabstractDistributed systems make possible both a high degree of concurrency and robustness in the face of failure. One approach to achieving these goals is to employ pools of servers implementing major system functions. This paper describes the concept of pools of servers, and presents logically distributed, robust algorithms for one problem arising in this approach: the allocation of servers to clients. Three types of allocation problems are identified: free servers, preferred servers, and retentive servers. Allocation protocols based upon the idea of hash addressing are described and analyzed. Gregory R. Andrews, David P. Dobkin, Peter J. Downey |
PODC | 1 |
| 1982 | On-the-fly Deadlock PreventionabstractThis paper reexamines deadlock prevention in the context of multiprocessor or distributed systems. The essential idea is to have a deadlock prevention process that executes “on-the-fly”, i.e. in parallel with processes that use resources. The prevention process determines in advance those requests that could be satisfied. The effect of this approach is to reduce greatly the overhead imposed by deadlock prevention. The contributions of the paper are an efficient algorithm for predicting which requests could be granted and efficient process interaction protocols for on-the-fly prevention. The predictor algorithm is also used for efficient determination of delayed requests that can be granted after a release. Gregory R. Andrews, Gary Levin |
PODC | 1 |
| 1982 | An Alternative Approach to ArraysabstractAbstract This paper presents a new approach to the treatment of arrays in Pascal and Pascal‐like languages. The proposed mechanisms allow arrays to be used flexibly in assignments and as parameters to procedures while at the same time preserving the benefits of strong type checking. Several examples to illustrate the mechanisms are presented. Their implementation is also described. Gregory R. Andrews |
Softw. Pract. Exp. | 1 |
| 1982 | The Distributed Programming Language SR-Mechanisms, Design and ImplementationabstractAbstract SR is a new language for programming software containing many processes that execute in parallel. The language allows an entire software system that controls a potentially large collection of processors to be programmed as an integrated set of software modules. The key language mechanisms are resources, operations and input statements. The language supports separate compilation, type abstraction, and dynamic communication links; it also contains novel treatments of arrays and procedures. This paper gives an overview of the language mechanisms, discusses some of the major design decisions and describes one implementation. Gregory R. Andrews |
Softw. Pract. Exp. | 1 |
| 1981 | Active Data Structures
Gregory R. Andrews, David P. Dobkin, Peter J. Downey |
ICSE | 1 |
| 1981 | Synchronizing ResourcesabstractA new proposal for synchronization and communication in parallel programs is presented.The proposal synthesizes and extends aspects of procedures, coroutines, critical regions, messages, and monitors.It provides a single notation for parallel programming with or without shared variables and is suited for either shared or distributed memory architectures.The essential new concepts are operations, input statements, and resources.The proposal is illustrated by the solutions of a variety of parallel programming problems; its relation to other parallel programming proposals is also discussed. Gregory R. Andrews |
ACM Trans. Program. Lang. Syst. | 1 |
| 1980 | An Axiomatic Approach to Information Flow in ProgramsabstractA new approach to information flow in sequential and parallel programs is presented. Flow proof rules that capture the information flow semantics of a variety of statements are given and used to construct program flow proofs. The method is illustrated by examples. The applications of flow proofs to certifying information flow policies and to solving the confinement problem are considered. It is also shown that flow rules and correctness rules can be combined to form an even more powerful proof system. Gregory R. Andrews, Richard P. Reitman |
ACM Trans. Program. Lang. Syst. | 1 |
| 1979 | Certifying Information Flow Properties of Programs: An Axiomatic ApproachabstractInteresting program properties other than functional correctness can be addressed and proved using axiomatic logic. An information flow logic that defines the flow semantics of a parallel programming language is presented. Proofs in this logic can be used to certify programs with respect to information security policies. The flow logic can also be combined with correctness logics to form an even more powerful deductive system. Richard P. Reitman, Gregory R. Andrews |
POPL | 2 |
| 1979 | The Design of a Message Switching System: An Application and Evaluation of ModulaabstractModula is a new programming language for implementing dedicated, parallel systems. Following a systematic design technique, this paper illustrates the use of Modula for the design of a message switching communication system. A message switching system poses a number of interesting. problems: a high degree of concurrent activity exists, a variety of I/O devices need to be controlled, messages can have multiple destinations, and messages can be preempted. The strengths and weaknesses of Modula with respect to these specific problems and its utility as a general purpose language are evaluated. Gregory R. Andrews |
IEEE Trans. Software Eng. | 1 |
| 1979 | Access Control in Parallel ProgramsabstractAn important component of a programming language for writing operating systems, or other large parallel systems, is the set of access control facilities. Two principles for access control, expressive power and access validation, are discussed. Then two new language mechanisms are presented: one for expressing the static structure and access rights of parallel systems, the other for controlling dynamic access to shared objects (monitors). The use of the proposed mechanisms is illustrated by examples including a file system. Finally, the relationships between the mechanisms, access validation, and the safety problem are discussed. James R. McGraw, Gregory R. Andrews |
IEEE Trans. Software Eng. | 2 |
| 1975 | A Multiprogramming Nucleus with Dynamic Resource FacilitiesabstractAbstract This paper describes a nucleus for controlling process interaction in multiprogramming systems. The nucleus has three components: a set of primitive operations and data structures for the management of processes and resources, a library of service routines for implementing a variety of resource management strategies and facilities for cleanly handling all input‐output and interrupts. The process management component is straightforward, but the resource facilities are novel in permitting the dynamic definition and control of classes of real or virtual resources. Resources are considered to be anything on which a process can be blocked and consequently encompass consumable (message‐like) as well as conventional, re‐usable objects. Applications of the nucleus as well as some implementation details are also presented. Alan C. Shaw, Nelson H. Weiderman, Gregory R. Andrews, Mary-Beth Felcyn, John E. Rieber, Gain Wong |
Softw. Pract. Exp. | 3 |