Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Brian N. Bershad

dblp:b/BNBershad · DBLP profile ↗
← Back
48ranked-venue papers
10as first author
0since 2021 · last 2007
—ORCID · none

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

Software engineering, systems software and programming languages · 30 · 7 first-authorSystems, architecture and hardware · 22 · 5 first-authorComputer networks · 1Security and privacy · 1Databases, data management, data science and information retrieval · 1Applied, interdisciplinary, general and emerging computing · 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
27 papers
Operating systems · 80% Runtime systems and virtual machines · 10% Concurrent programming · 5%
Computer architecture, parallel and distributed computing, and storage systems
24 papers
Distributed systems · 37% Memory systems · 26% Parallel and multicore computing · 12%
Databases, data mining, and information retrieval
1 paper
Information retrieval · 50% Web and social media mining · 25% Recommender systems · 25%
Computer networks
4 papers
Transport protocols and congestion control · 50% Internet architecture and protocols · 46% Software-defined and programmable networks · 4%
Network and information security
2 papers
Authentication and access control · 61% Systems and software security · 39%

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

TopicWeightPapersLastEvidence papers
Operating systems › i/o › i/o subsystem
device drivers
0.232006
Recovering device drivers · ACM Trans. Comput. Syst. 2006
Improving the reliability of commodity operating systems · ACM Trans. Comput. Syst. 2005
Recovering Device Drivers (Awarded Best Paper!) · OSDI 2004
Operating systems
extensible operating systems
0.162001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
A Transactional Memory in an Extensible Operating System · USENIX ATC 1998
Access Control for the SPIN Extensible Operating System · S&P 1997
Distributed systems
fault tolerance
0.132004
Recovering Device Drivers (Awarded Best Paper!) · OSDI 2004
Manageability, availability, and performance in porcupine: a highly scalable, cluster-based mail service · ACM Trans. Comput. Syst. 2000
Manageability, Availability and Performance in Porcupine: A Highly Scalable, Cluster-based Mail Service · SOSP 1999
Information retrieval
query log analysis
0.112007
Why we search: visualizing and predicting user behavior · WWW 2007
Information retrieval › user behavior
search behavior
0.112007
Why we search: visualizing and predicting user behavior · WWW 2007
Web and social media mining
user behavior analysis
0.112007
Why we search: visualizing and predicting user behavior · WWW 2007
Recommender systems › user modeling
user behavior prediction
0.112007
Why we search: visualizing and predicting user behavior · WWW 2007
Memory systems
cache
0.151998
A Trace-Driven Comparison of Algorithms for Parallel Prefetching and Caching · OSDI 1996
Dynamic Page Mapping Policies for Cache Conflict Resolution on Standard Hardware · OSDI 1994
Avoiding Conflict Misses Dynamically in Large Direct-Mapped Caches · ASPLOS 1994
Operating systems › system security › operating system security › protection mechanism › isolation
fault isolation
0.112005
Improving the reliability of commodity operating systems · ACM Trans. Comput. Syst. 2005
Parallel and multicore computing › load balancing
dynamic load balancing
0.122000
Manageability, availability, and performance in porcupine: a highly scalable, cluster-based mail service · ACM Trans. Comput. Syst. 2000
Manageability, Availability and Performance in Porcupine: A Highly Scalable, Cluster-based Mail Service · SOSP 1999
Distributed systems › fault tolerance
high availability
0.122000
Manageability, availability, and performance in porcupine: a highly scalable, cluster-based mail service · ACM Trans. Comput. Syst. 2000
Manageability, Availability and Performance in Porcupine: A Highly Scalable, Cluster-based Mail Service · SOSP 1999
Operating systems › extensible operating systems › kernel extensibility
kernel extension isolation
0.012003
Improving the reliability of commodity operating systems · SOSP 2003
Operating systems
operating system reliability
0.012003
Improving the reliability of commodity operating systems · SOSP 2003
Performance modeling and evaluation
workload characterization
0.021998
Execution Characteristics of Desktop Applications on Windows NT · ISCA 1998
The Structure and Performance of Interpreters · ASPLOS 1996
Cloud and datacenter computing › cluster resource management and scheduling
cluster resource management
0.022000
Manageability, availability, and performance in porcupine: a highly scalable, cluster-based mail service · ACM Trans. Comput. Syst. 2000
Design and implementation of a distributed virtual machine for networked computers · SOSP 1999
Authentication and access control
access control
0.012001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Systems and software security › operating system security
extensible security architecture
0.012001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Operating systems › system security › operating system security › protection mechanism
protection domains
0.012001
Separating access control policy, enforcement, and functionality in extensible systems · ACM Trans. Comput. Syst. 2001
Operating systems
interprocess communication
0.041991
User-Level Interprocess Communication for Shared Memory Multiprocessors · ACM Trans. Comput. Syst. 1991
Using Continuations to Implement Thread Management and Communication in Operating Systems · SOSP 1991
Lightweight Remote Procedure Call · ACM Trans. Comput. Syst. 1990
Transport protocols and congestion control
queue management
0.012000
Receiver Based Management of Low Bandwidth Access Links · INFOCOM 2000
Transport protocols and congestion control › congestion control algorithm design
receiver-driven congestion control
0.012000
Receiver Based Management of Low Bandwidth Access Links · INFOCOM 2000
Memory systems › memory management
virtual memory
0.021995
Reducing TLB and Memory Overhead Using Online Superpage Promotion · ISCA 1995
Avoiding Conflict Misses Dynamically in Large Direct-Mapped Caches · ASPLOS 1994
Cloud and datacenter computing
cluster resource management and scheduling
0.011999
Manageability, Availability and Performance in Porcupine: A Highly Scalable, Cluster-based Mail Service · SOSP 1999
Distributed systems › fault tolerance › resilience
graceful degradation
0.011999
Manageability, Availability and Performance in Porcupine: A Highly Scalable, Cluster-based Mail Service · SOSP 1999
Visualization and visual analytics
time series visualization
0.012007
Why we search: visualizing and predicting user behavior · WWW 2007
Internet architecture and protocols › IPv6
IPv6 transition
0.011998
The Design and Implementation of an IPv6/IPv4 Network Address and Protocol Translator · USENIX ATC 1998
Concurrent programming
transactional memory
0.011998
A Transactional Memory in an Extensible Operating System · USENIX ATC 1998
Processor architecture and microarchitecture › branch handling
branch architecture
0.011998
Execution Characteristics of Desktop Applications on Windows NT · ISCA 1998
Authentication and access control › access control models
domain and type enforcement
0.011997
Access Control for the SPIN Extensible Operating System · S&P 1997
Operating systems › system security › operating system security
access control
0.011997
Access Control for the SPIN Extensible Operating System · S&P 1997

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

fault injection · 0.2time series correlation · 0.1dynamic time warping · 0.1migration service · 0.1discovery service · 0.1shadow driver · 0.1auditing · 0.1access control enforcement · 0.1protection domains · 0.1dynamic load balancing · 0.1automatic configuration · 0.1java virtual machine · 0.0distributed service architecture · 0.0domain and type enforcement · 0.0benchmarking · 0.0simulation · 0.0measurement · 0.0performance measurement · 0.0
YearPublicationVenuePosition
2007 Why we search: visualizing and predicting user behavior
abstract
The aggregation and comparison of behavioral patterns on the WWW represent a tremendous opportunity for understanding past behaviors and predicting future behaviors. In this paper, we take a first step at achieving this goal. We present a large scale study correlating the behaviors of Internet users on multiple systems ranging in size from 27 million queries to 14 million blog posts to 20,000 news articles. We formalize a model for events in these time-varying datasets and study their correlation. We have created an interface for analyzing the datasets, which includes a novel visual artifact, the DTWRadar, for summarizing differences between time series. Using our tool we identify a number of behavioral properties that allow us to understand the predictive power of patterns of use.
Eytan Adar, Daniel S. Weld, Brian N. Bershad, Steve D. Gribble
WWW3
2006 Recovering device drivers
abstract
This article presents a new mechanism that enables applications to run correctly when device drivers fail. Because device drivers are the principal failing component in most systems, reducing driver-induced failures greatly improves overall reliability. Earlier work has shown that an operating system can survive driver failures [Swift et al. 2005], but the applications that depend on them cannot. Thus, while operating system reliability was greatly improved, application reliability generally was not.To remedy this situation, we introduce a new operating system mechanism called ashadow driver. A shadow driver monitors device drivers and transparently recovers from driver failures. Moreover, it assumes the role of the failed driver during recovery. In this way, applications using the failed driver, as well as the kernel itself, continue to function as expected.We implemented shadow drivers for the Linux operating system and tested them on over a dozen device drivers. Our results show that applications and the OS can indeed survive the failure of a variety of device drivers. Moreover, shadow drivers impose minimal performance overhead. Lastly, they can be introduced with only modest changes to the OS kernel and with no changes at all to existing device drivers.
Michael M. Swift, Muthukaruppan Annamalai, Brian N. Bershad, Henry M. Levy
ACM Trans. Comput. Syst.3
2005 Improving the reliability of commodity operating systems
abstract
Despite decades of research in extensible operating system technology, extensions such as device drivers remain a significant cause of system failures. In Windows XP, for example, drivers account for 85% of recently reported failures.This article describes Nooks, a reliability subsystem that seeks to greatly enhance operating system (OS) reliability by isolating the OS from driver failures. The Nooks approach is practical: rather than guaranteeing complete fault tolerance through a new (and incompatible) OS or driver architecture, our goal is to prevent the vast majority of driver-caused crashes with little or no change to the existing driver and system code. Nooks isolates drivers within lightweight protection domains inside the kernel address space, where hardware and software prevent them from corrupting the kernel. Nooks also tracks a driver's use of kernel resources to facilitate automatic cleanup during recovery.To prove the viability of our approach, we implemented Nooks in the Linux operating system and used it to fault-isolate several device drivers. Our results show that Nooks offers a substantial increase in the reliability of operating systems, catching and quickly recovering from many faults that would otherwise crash the system. Under a wide range and number of fault conditions, we show that Nooks recovers automatically from 99% of the faults that otherwise cause Linux to crash.While Nooks was designed for drivers, our techniques generalize to other kernel extensions. We demonstrate this by isolating a kernel-mode file system and an in-kernel Internet service. Overall, because Nooks supports existing C-language extensions, runs on a commodity operating system and hardware, and enables automated recovery, it represents a substantial step beyond the specialized architectures and type-safe languages required by previous efforts directed at safe extensibility.
Michael M. Swift, Brian N. Bershad, Henry M. Levy
ACM Trans. Comput. Syst.2
2004 Recovering Device Drivers (Awarded Best Paper!)
Michael M. Swift, Muthukaruppan Annamalai, Brian N. Bershad, Henry M. Levy
OSDI3
2004 System support for pervasive applications
abstract
Pervasive computing provides an attractive vision for the future of computing. Computational power will be available everywhere. Mobile and stationary devices will dynamically connect and coordinate to seamlessly help people in accomplishing their tasks. For this vision to become a reality, developers must build applications that constantly adapt to a highly dynamic computing environment. To make the developers' task feasible, we present a system architecture for pervasive computing, called one.world. Our architecture provides an integrated and comprehensive framework for building pervasive applications. It includes services, such as discovery and migration, that help to build applications and directly simplify the task of coping with constant change. We describe our architecture and its programming model and reflect on our own and others' experiences with using it.
Robert Grimm 0001, Janet Davis, Eric Lemar, Adam MacBeth, Steven Swanson, Thomas E. Anderson, Brian N. Bershad, Gaetano Borriello, Steve D. Gribble, David Wetherall
ACM Trans. Comput. Syst.7
2003 Using Computers to Diagnose Computer Problems
Joshua Redstone, Michael M. Swift, Brian N. Bershad
HotOS3
2003 Improving the reliability of commodity operating systems
abstract
Despite decades of research in extensible operating system technology, extensions such as device drivers remain a significant cause of system failures. In Windows XP, for example, drivers account for 85% of recently reported failures. This paper describes Nooks, a reliability subsystem that seeks to greatly enhance OS reliability by isolating the OS from driver failures. The Nooks approach is practical: rather than guaranteeing complete fault tolerance through a new (and incompatible) OS or driver architecture, our goal is to prevent the vast majority of driver-caused crashes with little or no change to existing driver and system code. To achieve this, Nooks isolates drivers within lightweight protection domains inside the kernel address space, where hardware and software prevent them from corrupting the kernel. Nooks also tracks a driver's use of kernel resources to hasten automatic clean-up during recovery.To prove the viability of our approach, we implemented Nooks in the Linux operating system and used it to fault-isolate several device drivers. Our results show that Nooks offers a substantial increase in the reliability of operating systems, catching and quickly recovering from many faults that would otherwise crash the system. In a series of 2000 fault-injection tests, Nooks recovered automatically from 99% of the faults that caused Linux to crash.While Nooks was designed for drivers, our techniques generalize to other kernel extensions, as well. We demonstrate this by isolating a kernel-mode file system and an in-kernel Internet service. Overall, because Nooks supports existing C-language extensions, runs on a commodity operating system and hardware, and enables automated recovery, it represents a substantial step beyond the specialized architectures and type-safe languages required by previous efforts directed at safe extensibility.
Michael M. Swift, Brian N. Bershad, Henry M. Levy
SOSP2
2001 Systems Directions for Pervasive Computing
abstract
Pervasive computing, with its focus on users and their tasks rather than on computing devices and technology, provides an attractive vision for the future of computing. But, while hardware and networking infrastructure to realize this vision are becoming a reality, precious few applications run in this infrastructure. We believe that this lack of applications stems largely from the fact that it is currently too hard to design, build, and deploy applications in the pervasive computing space. In this paper, we argue that existing approaches to distributed computing are flawed along three axes when applied to pervasive computing; we sketch out alternatives that are better suited for this space. First, application data and functionality need to be kept separate, so that they can evolve gracefully, in a global computing infrastructure. Second, applications need to be able to acquire any resource they need at any time, so that they can continuously provide their services in a highly dynamic environment. Third, pervasive computing requires a common system platform, allowing applications to be run across the range of devices and to be automatically distributed and installed.
Robert Grimm 0001, Janet Davis, Ben Hendrickson, Eric Lemar, Adam MacBeth, Steven Swanson, Thomas E. Anderson, Brian N. Bershad, Gaetano Borriello, Steve D. Gribble, David Wetherall
HotOS8
2001 Separating access control policy, enforcement, and functionality in extensible systems
abstract
Extensible systems, such as Java or the SPIN extensible operating system, allow for units of code, or extensions, to be added to a running system in almost arbitrary fashion. Extensions closely interact through low-latency but type-safe interfaces to form a tightly integrated system. As extensions can come from arbitrary sources, not all of whom can be trusted to conform to an organization's security policy, such structuring raises the question of how security constraints are enforced in an extensible system. In this paper, we present an access control mechanism for extensible systems to address this problem. Our access control mechanism decomposes access control into a policy-neutral enforcement manager and a security policy manager, and it is transparent to extensions in the absence of security violations. It structures the system into protection domains, enforces protection domains through access control checks, and performs auditing of system operations. The access control mechanism works by inspecting extensions for their types and operations to determine which abstractions require protection and by redirecting procedure or method invocations to inject access control operations into the system. We describe the design of this access control mechanism, present an implementation within the SPIN extensible operating systems, and provide a qualitative as well as quantitative evaluation of the mechanism.
Robert Grimm 0001, Brian N. Bershad
ACM Trans. Comput. Syst.2
2000 Characterizing processor architectures for programmable network interfaces
abstract
The rapid advancements of networking technology have boosted potential bandwidth to the point that the cabling is no longer the bottleneck. Rather, the bottlenecks lie at the crossing points, the nodes of the network, where data traffic is intercepted or forwarded. As a result, there has been tremendous interest in speeding those nodes, making the equipment run faster by means of specialized chips to handle data trafficking. The Network Processor is the blanket name thrown over such chips in their varied forms. To date, no performance data exist to aid in the decision of what processor architecture to use in next generation network processor. Our goal is to remedy this situation. In this study, we characterize both the application workloads that network processors need to support as well as emerging applications that we anticipate may be supported in the future. Then, we consider the performance of three sample benchmarks drawn from these workloads on several state-of-the-art processor architectures, including: an aggressive, out-of-order, speculative super-scalar processor, a fine-grained multithreaded processor, a single chip multiprocessor, and a simultaneous multithreaded processor (SMT). The network interface environment is simulated in detail, and our results indicate that SMT is the architecture best suited to this environment.
Patrick Crowley, Marc E. Fiuczynski, Jean-Loup Baer, Brian N. Bershad
ICS4
2000 Receiver Based Management of Low Bandwidth Access Links
abstract
In this paper, we describe a receiver-based congestion control policy that leverages TCP flow control mechanisms to prioritize mixed traffic loads across access links. We manage queueing at the access link to: (1) improve the response time of interactive network applications; (2) reduce congestion-related packet losses; while (3) maintaining high throughput for bulk-transfer applications. Our policy controls queue length by manipulating receive socket buffer sizes. We have implemented this solution in a dynamically loadable Linux kernel module, and tested it over low-bandwidth links. Our approach yields a 7-fold improvement in packet latency over an unmodified system while maintaining 94% link utilization. In the common case, congestion-related packet losses at the access link can be eliminated. Finally, by prioritizing short flows, we show that our system reduces the time to download a complex Web page during a large background transfer by a factor of two.
Neil Spring, Maureen Chesire, Mark Berryman, Vivek Sahasranaman, Thomas E. Anderson, Brian N. Bershad
INFOCOM6
2000 Manageability, availability, and performance in porcupine: a highly scalable, cluster-based mail service
abstract
This paper describes the motivation, design and performance of Porcupine, a scalable mail server. The goal of Porcupine is to provide a highly available and scalable electronic mail service using a large cluster of commodity PCs. We designed Porcupine to be easy to manage by emphasizing dynamic load balancing, automatic configuration, and graceful degradation in the presence of failures. Key to the system's manageability, availability, and performance is that sessions, data, and underlying services are distributed homogeneously and dynamically across nodes in a cluster.
Yasushi Saito, Brian N. Bershad, Henry M. Levy
ACM Trans. Comput. Syst.2
1999 Manageability, Availability and Performance in Porcupine: A Highly Scalable, Cluster-based Mail Service
abstract
This paper describes the motivation, design, and performance of Porcupine, a scalable mail server. The goal of Porcupine is to provide a highly available and scalable electronic mail service using a large cluster of commodity PCs. We designed Porcupine to be easy to manage by emphasizing dynamic load balancing, automatic configuration, and graceful degradation in the presence of failures. Key to the system's manageability, availability, and performance is that sessions, data, and underlying services are distributed homogeneously and dynamically across nodes in a cluster.
Yasushi Saito, Brian N. Bershad, Henry M. Levy
SOSP2
1999 Design and implementation of a distributed virtual machine for networked computers
abstract
This paper describes the motivation, architecture and performance of a distributed virtual machine (DVM) for networked computers. DVMs rely on a distributed service architecture to meet the manageability, security and uniformity requirements of large, heterogeneous clusters of networked computers. In a DVM, system services, such as verification, security enforcement, compilation and optimization, are factored out of clients and located on powerful network servers. This partitioning of system functionality reduces resource requirements on network clients, improves site security through physical isolation and increases the manageability of a large and heterogeneous network without sacrificing performance. Our DVM implements the Java virtual machine, runs on x86 and DEC Alpha processors and supports existing Java-enabled clients.
Emin Gün Sirer, Robert Grimm 0001, Arthur J. Gregory, Brian N. Bershad
SOSP4
1998 Execution Characteristics of Desktop Applications on Windows NT
abstract
This paper examines the performance of desktop applications running on the Microsoft Windows NT operating system on Intel x86 processors, and contrasts these applications to the programs in the integer SPEC95 benchmark suite. We present measurements of basic instruction set and program characteristics, and detailed simulation results of the way these programs use the memory system and processor branch architecture. We show that the desktop applications have similar characteristics to the integer SPEC95 benchmarks for many of these metrics, However compared to the integer SPEC95 applications, desktop applications have larger instruction working sets, execute instructions in a greater number of unique functions, cross DLL boundaries frequently, and execute a greater number of indirect calls.
Dennis C. Lee, Patrick Crowley, Jean-Loup Baer, Thomas E. Anderson, Brian N. Bershad
ISCA5
1998 A Memory-Efficient Real-Time Non-Copying Garbage Collector
abstract
Garbage collectors used in embedded systems such as PersonalJava and Inferno or in operating systems such as SPIN must operate with limited resources and minimize their impact on application performance. Consequently, they must maintain short real-time pauses, low overhead, and a small memory footprint. Most garbage collectors, including the Treadmill algorithm, are inadequate because they sacrifice space for time. We have implemented a new Treadmill variant that provides good memory utilization by using real-time page-level management techniques that reduce fragmentation. A page-wise collection is used to locate pages of free memory, which are then dynamically reassigned between free lists as needed. Virtual memory is used to dynamically remap free pages into continuous ranges, and objects are allocated from under-utilized pages when needed. Finally, the use of header compaction and arbitrary free-list sizes reduces internal fragmentation. Our experiments demonstrate that we have substantially improved memory utilization without compromising latency or overhead, and that the new collector performs very well for SPIN’s workloads and regular Modula-3 programs. 1.1 Keywords Garbage collection, real-time, Treadmill, operating systems
Tian F. Lim, Przemyslaw Pardyak, Brian N. Bershad
ISMM3
1998 The Design and Implementation of an IPv6/IPv4 Network Address and Protocol Translator
Marc E. Fiuczynski, Vincent K. Lam, Brian N. Bershad
USENIX ATC3
1998 A Transactional Memory in an Extensible Operating System
Yasushi Saito, Brian N. Bershad
USENIX ATC2
1998 Type-Safe Casting
abstract
Many modern extensible systems, such as Java and the SPIN operating system, depend on type safety for memory protection. Unfortunately, current type-safe languages do not support systems programming well, because they do not give programmers the ability to deal with untyped data easily. In particular, they do not support the ability to cast between untyped data and language-level types. We describe a powerful, type-safe cast operator that helps programmers write low-level systems codes in type-safe languages. We have implemented this operator in Modula-3 for the SPIN operating system, and we give specific examples of how we use it in SPIN. © 1998 John Wiley & Sons, Ltd.
Wilson C. Hsieh, Marc E. Fiuczynski, Przemyslaw Pardyak, Brian N. Bershad
Softw. Pract. Exp.4
1997 Access Control for the SPIN Extensible Operating System
abstract
Summary form only given. In the SPIN operating system (B.N. Bershad et al., 1995; Przemyslaw Pardyak and B.N. Bershad, 1996) built at the University of Washington, we are experimenting with a version of domain and type enforcement (DTE) (L. Badger et al., 1995) that has been extended to address the security concerns of extensible systems. The SPIN operating system defines an extension infrastructure, together with a core set of extensible services, that allows for the fine grained and safe composition of extensions within the operating system kernel. Extensions are written in Modula-3, a type-safe programming language, and execute within the same address space. They interact by calling other parts of the system and by extending existing interfaces to provide new services. A central event dispatcher supports both mechanisms: to call on a service, an extension raises an event, and, to extend an existing interface, an extension registers a handler for that event. The invocation mechanism for events is simply a procedure call, and no context switches are required for the interaction between subsystems (since all extensions are co-located in the same address space).
Robert Grimm 0001, Brian N. Bershad
S&P2
1996 The Structure and Performance of Interpreters
abstract
Interpreted languages have become increasingly popular due to demands for rapid program development, ease of use, portability, and safety. Beyond the general impression that they are "slow," however, little has been documented about the performance of interpreters as a class of applications.This paper examines interpreter performance by measuring and analyzing interpreters from both software and hardware perspectives. As examples, we measure the MIPSI, Java, Perl, and Tcl interpreters running an array of micro and macro benchmarks on a DEC Alpha platform. Our measurements of these interpreters relate performance to the complexity of the interpreter's virtual machine and demonstrate that native runtime libraries can play a key role in providing good performance. From an architectural perspective, we show that interpreter performance is primarily a function of the interpreter itself and is relatively independent of the application being interpreted. We also demonstrate that high-level interpreters' demands on processor resources are comparable to those of other complex compiled programs, such as gcc. We conclude that interpreters, as a class of applications, do not currently motivate special hardware support for increased performance.
Theodore H. Romer, Dennis Lee 0001, Geoffrey M. Voelker, Alec Wolman, Wayne A. Wong, Jean-Loup Baer, Brian N. Bershad, Henry M. Levy
ASPLOS7
1996 A Trace-Driven Comparison of Algorithms for Parallel Prefetching and Caching
abstract
No abstract available.
Tracy Kimbrel, Andrew Tomkins, R. Hugo Patterson, Brian N. Bershad, Edward W. Felten, Garth A. Gibson, Anna R. Karlin, Kai Li 0001
OSDI4
1996 Dynamic Binding for an Extensible System
abstract
No abstract available.
Przemyslaw Pardyak, Brian N. Bershad
OSDI2
1996 Fast, Effective Dynamic Compilation
abstract
Dynamic compilation enables optimization based on the values of invariant data computed at run-time. Using the values of these run-time constants, a dynamic compiler can eliminate their memory loads, perform constant propagation and folding, remove branches they determine, and fully unroll loops they bound. However, the performance benefits of the more efficient, dynamically-compiled code are offset by the run-time cost of the dynamic compile. Our approach to dynamic compilation strives for both fast dynamic compilation and high-quality dynamically-compiled code: the programmer annotates regions of the programs that should be compiled dynamically; a static, optimizing compiler automatically produces pre-optimized machine-code templates, using a pair of dataflow analyses that identify which variables will be constant at run-time; and a simple, dynamic compiler copies the templates, patching in the computed values of the run-time constants, to produce optimized, executable code. Our work targets general- purpose, imperative programming languages, initially C. Initial experiments applying dynamic compilation to C programs have produced speedups ranging from 1.2 to 1.8.
Joel Auslander, Matthai Philipose, Craig Chambers, Susan J. Eggers, Brian N. Bershad
PLDI5
1996 An Extensible Protocol Architecture for Application-Specific Networking
Marc E. Fiuczynski, Brian N. Bershad
USENIX ATC2
1995 Protection is a software issue
abstract
Modern operating systems are strongly dependent on software mechanisms to protect system resources from users. This is true despite the fact that the promoters of these systems imply that their reliability and integrity derive solely from the use of a core set of protected hardware mechanisms, such as address spaces and protected supervisor mode. While typical microprocessors provide cheap and effective hardware mechanisms to protect the load word/store word interface, operating systems are forced to abstract and virtualize this interface to export a far richer set, of resources such as files, sockets, threads, and consoles. The access semantics for these resources are almost always protected by software checks and not hardware. Processor architectures simply do not provide enough fine-grained control over access to shared system resources to ensure that a program only accesses the resources to which it is allowed. Our position is that software protection mechanisms are not only necessary, but have inherent advantages over hardware for enforcing the protection requirements of an operating system. Software is flexible, explicit, precise, and in many cases, open to incredible optimizations. By contrast, hardware mechanisms are rigid, implicit, imprecise, and unoptimizable.
Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Marc E. Fiuczynski, Emin Gün Sirer
HotOS1
1995 Reducing TLB and Memory Overhead Using Online Superpage Promotion
abstract
Modern microprocessors contain small TLBs that maintain a cache of recently used translations. A TLB's coverage is the sum of the number of bytes mapped by each entry. Applications with working sets larger than the TLB coverage will perform poorly due to high TLB miss rates. Superpages have been proposed as a mechanism for increasing TLB coverage. A superpageis a virtual memory page with size and alignment that are a power of two multiple of the system's base page size. In this paper, we describe online policies for superpage management that monitor TLB miss traffic to decide when a superpage should be constructed. Our policies take into account both the benefit of a superpage promotion (potential for preventing future misses) and the cost (page copying). Although our approach increases the cost of each TLB miss, the net effect is to improve total execution time by eliminating a large number of misses without significantly increasing memory usage, thereby improving system performance.
Theodore H. Romer, Wayne H. Ohlrich, Anna R. Karlin, Brian N. Bershad
ISCA4
1995 Extensibility, Safety and Performance in the SPIN Operating System
abstract
This paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services, that allow applications to safely change the operating system's interface and implementation. Extensions allow an application to specialize the underlying operating system in order to achieve a particular level of performance and functionality. SPIN uses language and link-time mechanisms to inexpensively export fine-grained interfaces to operating system services. Extensions are written in a type safe language, and are dynamically linked into the operating system kernel. This approach offers extensions rapid access to system services, while protecting the operating system code executing within the kernel address space. SPIN and its extensions are written in Modula-3 and run on DEC Alpha workstations.
Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gün Sirer, Marc E. Fiuczynski, Craig Chambers, Susan J. Eggers
SOSP1
1994 Avoiding Conflict Misses Dynamically in Large Direct-Mapped Caches
abstract
This paper describes a method for improving the performance of a large direct-mapped cache by reducing the number of conflict misses. Our solution consists of two components: an inexpensive hardware device called a Cache Miss Lookaside (CML) buffer that detects conflicts by recording and summarizing a history of cache misses, and a software policy within the operating system's virtual memory system that removes conflicts by dynamically remapping pages whenever large numbers of conflict misses are detected. Using trace-driven simulation of applications and the operating system, we show that a CML buffer enables a large direct-mapped cache to perform nearly as well as a two-way set associative cache of equivalent size and speed, although with lower hardware cost and complexity.
Brian N. Bershad, Dennis Lee 0001, Theodore H. Romer, J. Bradley Chen
ASPLOS1
1994 A Group Structuring Mechanism for a Distributed Object-Oriented Language
abstract
Describes a structuring mechanism for grouping objects in a distributed object-oriented language. A group structuring mechanism provides a single flexible method for managing distributed applications that involve complicated communication protocols and sophisticated structure. We have added such a mechanism to the Emerald distributed object-oriented language and its run-time system. Our group structuring mechanism fits entirely within the context of object-oriented programming, so similar mechanisms could be added to other distributed object-oriented languages.>
Przemyslaw Pardyak, Brian N. Bershad
ICDCS2
1994 Dynamic Page Mapping Policies for Cache Conflict Resolution on Standard Hardware
Theodore H. Romer, Dennis Lee 0001, Brian N. Bershad, J. Bradley Chen
OSDI3
1994 Some Issues in the Design of an Extensible Operating System (Panel Statement)
Stefan Savage, Brian N. Bershad
OSDI2
1994 Software Write Detection for a Distributed Shared Memory
Matthew J. Zekauskas, Wayne Sawdon, Brian N. Bershad
OSDI3
1993 Practical Considerations for Non-Blocking Concurrent Objects
abstract
An important class of concurrent objects are those that are nonblocking, that is, whose operations are not contained within mutually exclusive critical sections. A nonblocking object can be accessed by many threads at a time, yet update protocols based on atomic compare-and-swap operations can be used to guarantee the object's consistency. The author examines the compare-and-swap operation in the content of contemporary bus-based shared memory multiprocessors, although the results generalize to distributed shared memory multiprocessors. He describes an operating system-based solution that permits the construction of a nonblocking compare-and-swap function on architectures that only support more primitive atomic primitives such as test-and-set or atomic exchange. Several locking strategies are evaluated that can be used to synthesize a compare-and-swap operation, and it is shown that the common techniques for reducing synchronization overhead in the presence of contention are inappropriate when used as the basis for nonblocking synchronization. A simple synchronization strategy is described that has good performance because it avoids much of the synchronization overhead that normally occurs when there is contention.>
Brian N. Bershad
ICDCS1
1993 The Impact of Operating System Structure on Memory System Performance
abstract
In this paper we evaluate the memory system behavior of two distinctly different implementations of the UNIX operating system: DEC's Ultrix, a monolithic system, and Mach 3.0 with CMU's UNIX server, a microkernel-based system. In our evaluation we use combined system and user memory reference traces of thirteen industry-standard workloads. We show that the microkernel-based system executes substantially more non-idle system instructions for an equivalent workload than the monolithic system. Furthermore, the average instruction for programs running on Mach has a higher cost, in terms of memory cycles per instruction, than on Ultrix. In the context of our traces, we explore a number of popular assertions about the memory system behavior of modern operating systems, paying special attention to the effect that Mach's microkernel architecture has on system performance. Our results indicate that many, but not all of the assertions are true, and that a few, while true, have only negligible impact on real system performance.
J. Bradley Chen, Brian N. Bershad
SOSP2
1993 Protocol Service Decomposition for High-Performance Networking
abstract
In this paper we describe a new approach to implementing network protocols that enables them to have high performance and high flexibility, while retaining complete conformity to existing application programming interfaces. The key insight behind our work is that an application's interface to the network is distinct and separable from its interface to the operating system. We have separated these interfaces for two protocol implementations, TCP/IP and UDP/IP, running on the Mach 3.0 operating system and UNIX server. Specifically, library code in the application's address space implements the network protocols and transfers data to and from the network, while an operating system server manages the heavyweight abstractions that applications use when manipulating the network through operations other than send and receive. On DECstation 5000/200 systems connected by 10Mb/sec Ethernet, this approach to protocol decomposition achieves TCP/IP throughput of 1088 KB/second, which is comparable to that of a high-quality in-kernel TCP/IP implementation, and substantially better than a server-based one. Our approach achieves small-packet UDP/IP round trip latencies of 1.23 ms, again comparable to a kernel-based implementation and more than twice as fast as a server-based one.
Chris Maeda, Brian N. Bershad
SOSP2
1992 Fast Mutual Exclusion for Uniprocessors
abstract
In this paper we describe restartable atomic sequences, an optimistic mechanism for implementing simple atomic operations (such as Test-And-Set) on a uniprocessor. A thread that is suspended within a restartable atomic sequence is resumed by the operating system at the beginning of the sequence, rather than at the point of suspension. This guarantees that the thread eventually executes the sequence atomically. A restartable atomic sequence has significantly less overhead than other software-based synchronization mechanisms, such as kernel emulation or software reservation. Consequently, it is an attractive alternative for use on uniprocessors that do no support atomic operations. Even on processors that do support atomic operations in hardware, restartable atomic sequences can have lower overhead.
Brian N. Bershad, David D. Redell, John R. Ellis
ASPLOS1
1992 Consistency Management for Virtually Indexed Caches
abstract
A virtually indexed cache can improve performance by allowing cache lookup and address translation to occur in parallel, thus reducing processor cycle time. Unlike physically indexed caches, virtually indexed caches create consistency problems because a physical address may be represented in more than one cache line when it has been accessed through more than one virtual address. Write-back virtually indexed caches create additional inconsistencies because memory may become stale with respect to the cache. In this paper we examine the problem of consistency management for a virtually indexed write-back cache. We assume that the hardware does not support intra-cache consistency. We present a model and software implementation strategy for maintaining consistency with virtually indexed caches. We present measurements from an implementation of this model on the HP in the context of the Mach operating system. Our measurements show that a virtually indexed cache can be managed with nearly the same cost as that required to manage a physically indexed one, even when used by a virtual memory system that encourages and exploits sharing.
Bob Wheeler, Brian N. Bershad
ASPLOS2
1992 Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism
abstract
Threadsare the vehicle for concurrency in many approaches to parallel programming. Threads can be supported either by the operating system kernel or by user-level library code in the application address space, but neither approach has been fully satisfactory. This paper addresses this dilemma. First, we argue that the performance of kernel threads isinherentlyworse than that of user-level threads, rather than this being an artifact of existing implementations; managing parallelism at the user level is essential to high-performance parallel computing. Next, we argue that the problems encountered in integrating user-level threads with other system services is a consequence of the lack of kernel support for user-level threads provided by contemporary multiprocessor operating systems; kernel threads are thewrong abstractionon which to support user-level management of parallelism. Finally, we describe the design, implementation, and performance of a new kernel interface and user-level thread package that together provide the same functionality as kernel threads without compromising the performance and flexibility advantages of user-level management of parallelism.
Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, Henry M. Levy
ACM Trans. Comput. Syst.2
1991 The Interaction of Architecture and Operating System Design
abstract
Today's high-performance RISC microprocessors have been highly tuned for integer and floating point application performance.These architectures have paid less attention to operating system requirements.At the same time, new operating system designs often have overlooked modern archi-
Thomas E. Anderson, Henry M. Levy, Brian N. Bershad, Edward D. Lazowska
ASPLOS3
1991 Dynamic Node Reconfiguration in a Parallel-Distributed Environment
abstract
Idle workstationsin a network represent a significant computing potential.In particular, their processing power can be used by parallel-distributed programs that treat the network as a loosely-coupled multiprocessor.Our experiments with Amber show that node reconfiguration can be implemented easily and efficiently in a runtime library.work speed will substantially reduce the cost
Michael J. Feeley, Brian N. Bershad, Jeffrey S. Chase, Henry M. Levy
PPoPP2
1991 Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism
abstract
Threads are the vehicle for concurrency in many approaches to parallel programming. Threads separate the notion of a sequential execution stream from the other aspects of traditional UNIX-like processes, such as address spaces and I/O descriptors. The objective of this separation is to make the expression and control of parallelism sufficiently cheap that the programmer or compiler can exploit even fine-grained parallelism with acceptable overhead.Threads can be supported either by the operating system kernel or by user-level library code in the application address space, but neither approach has been fully satisfactory. This paper addresses this dilemma. First, we argue that the performance of kernel threads is inherently worse than that of user-level threads, rather than this being an artifact of existing implementations; we thus argue that managing parallelism at the user level is essential to high-performance parallel computing. Next, we argue that the lack of system integration exhibited by user-level threads is a consequence of the lack of kernel support for user-level threads provided by contemporary multiprocessor operating systems; we thus argue that kernel threads or processes, as currently conceived, are the wrong abstraction on which to support user-level management of parallelism. Finally, we describe the design, implementation, and performance of a new kernel interface and user-level thread package that together provide the same functionality as kernel threads without compromising the performance and flexibility advantages of user-level management of parallelism.
Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, Henry M. Levy
SOSP2
1991 Using Continuations to Implement Thread Management and Communication in Operating Systems
abstract
We have improved the performance of the Mach 3.0 operating system by redesigning its internal thread and interprocess communication facilities to use continuations as the basis for control transfer. Compared to previous versions of Mach 3.0, our new system consumes 85% less space per thread. Cross-address space remote procedure calls execute 14% faster. Exception handling runs over 60% faster.In addition to improving system performance, we have used continuations to generalize many control transfer optimizations that are common to operating systems, and have recast those optimizations in terms of a single implementation methodology. This paper describes our experiences with using continuations in the Mach operating system.
Richard Draves, Brian N. Bershad, Richard F. Rashid, Randall W. Dean
SOSP2
1991 User-Level Interprocess Communication for Shared Memory Multiprocessors
abstract
this paper, provides safe and efficient communication between address spaces on the same machine without kernel mediation. URPC isolates from one other the three components of interprocess communication: processor reallocation, thread management, and data transfer. Control transfer between address spaces, which is the communication abstraction presented to the programmer, is implemented through a combination of thread management and processor reallocation. Only processor reallocation requires kernel volvement; thread management and data transfer do not. Thread management and interprocess communication are done by application~level libraries, rather than by the kernel
Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, Henry M. Levy
ACM Trans. Comput. Syst.1
1990 Lightweight Remote Procedure Call
abstract
Lightweight Remote Procedure Call (LRPC) is a communication facility designed and optimized for communication between protection domains on the same machine. In contemporary small-kernel operating systems, existing RPC systems incur an unnecessarily high cost when used for the type of communication that predominates—between protection domains on the same machine. This cost leads system designers to coalesce weakly related subsystems into the same protection domain, trading safety for performance. By reducing the overhead of same-machine communication, LRPC encourages both safety and performance. LRPC combines the control transfer and communication model of capability systems with the programming semantics and large-grained protection model of RPC. LRPC achieves a factor-of-three performance improvement over more traditional approaches based on independent threads exchanging messages, reducing the cost of same-machine communication to nearly the lower bound imposed by conventional hardware. LRPC has been integrated into the Taos operating system of the DEC SRC Firefly multiprocessor workstation.
Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, Henry M. Levy
ACM Trans. Comput. Syst.1
1989 Lightweight Remote Procedure Call
abstract
Lightweight Remote Procedure Call (LRPC) is a communication facility designed and optimized for communication between protection domains on the same machine.
Brian N. Bershad, Thomas E. Anderson, Edward D. Lazowska, Henry M. Levy
SOSP1
1988 PRESTO: A System for Object-oriented Parallel Programming
abstract
Abstract PRESTO is a programming system for writing object‐oriented parallel programs in a multiprocessor environment. PRESTO provides the programmer with a set of pre‐defined object types that simplify the construction of parallel programs. Examples of PRESTO objects are threads, which provide fine‐grained control over a program's execution, and synchronization objects, which allow simultaneously executing threads to co‐ordinate their activities. The goals of PRESTO are to provide a programming environment that makes it easy to express concurrent algorithms, to do so efficiently, and to do so in a manner that invites extensions and modifications. The first two goals, which are the focus of this paper, allow a programmer to use parallelism in a way that is naturally suited to the problem at hand, rather than being constrained by the limitations of a particular underlying kernel or hardware architecture. The third goal is touched upon but not emphasized in this paper. PRESTO is written in C++; it currently runs on the Sequent shared‐memory multiprocessor on top of the Dynix operating system. In this paper we describe the system model, its applicability to parallel programming, experiences with the initial implementation, and some early performance measurements.
Brian N. Bershad, Edward D. Lazowska, Henry M. Levy
Softw. Pract. Exp.1
1987 A Remote Procedure Call Facility for Interconnecting Heterogeneous Computer Systems
abstract
Heterogeneity in hardware and software is an inevitable consequence of experimental computer research. At the University of Washington, the Heterogeneous Computer Systems (HCS) project is a major research and development effort whose goal is to simplify the interconnection of heterogeneous computer systems.
Brian N. Bershad, Dennis T. Ching, Edward D. Lazowska, Jan Sanislo, Michael F. Schwartz
IEEE Trans. Software Eng.1