Results 1 -
8 of
8
Implementing lightweight threads
- In Proceedings of the 1992 USENIX Summer Conference
, 1992
"... We describe an implementation of a threads library that provides extremely lightweight threads within a single UNIX process while allowing fully concurrent access to system resources. The threads are lightweight enough so that they can be created quickly, there can be thousands present, and synchron ..."
Abstract
-
Cited by 46 (0 self)
- Add to MetaCart
We describe an implementation of a threads library that provides extremely lightweight threads within a single UNIX process while allowing fully concurrent access to system resources. The threads are lightweight enough so that they can be created quickly, there can be thousands present, and synchronization can be accomplished rapidly. These goals are achieved by providing user threads which multiplex on a pool of kernel-supported threads of control. This pool is managed by the library and will automatically grow or shrink as required to ensure that the process will make progress while not using an excessive amount of kernel resources. The programmer can also tune the relationship between threads and kernel supported threads of control. This paper focuses on scheduling and synchronizing user threads, and their interaction with UNIX signals in a multiplexing threads library.
Adding Contracts to Java with Handshake
, 1998
"... Contracts describe an agreement between the writer and the user of a class. Their use enhances programmer productivity and program reliability, especially in library code. Handshake provides contracts for Java classes and interfaces in the form of class invariants and method pre- and postconditions ..."
Abstract
-
Cited by 36 (0 self)
- Add to MetaCart
Contracts describe an agreement between the writer and the user of a class. Their use enhances programmer productivity and program reliability, especially in library code. Handshake provides contracts for Java classes and interfaces in the form of class invariants and method pre- and postconditions. Using Handshake, a programmer can add contracts to classes and interfaces without needing access to their source code, without changing the class files, and without changing the JVM implementation. Unlike existing implementations of contracts for Java, Handshake intercepts the VM's file operations and modifies classes on the fly without requiring any modification to the JVM itself. By using a dynamic link library interposed between the VM and the operating system, the system is relatively simple to port to a new OS and works with a variety of JVM implementations. The system imposes very little overhead other than the time required to evaluate the contract's boolean expressions themselves.
Programming Tools for Distributed Multiprocessor Computing Environments
, 1992
"... this paper. ..."
Load-Time Adaptation: Efficient and Non-Intrusive Language Extension for Virtual Machines
- Mark P Jones, Journal of Functional Programming
, 1999
"... Abstract The advantages of virtual machine (VM) execution (dynamically loaded, portable object files with high-level information) also permit changing the semantics of executables. Load-time adaptation (LTA) intercepts the VM’s file operations and modifies object code on the fly, without changing th ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Abstract The advantages of virtual machine (VM) execution (dynamically loaded, portable object files with high-level information) also permit changing the semantics of executables. Load-time adaptation (LTA) intercepts the VM’s file operations and modifies object code on the fly, without changing the VM implementation, without needing access to source code, and without changing the actual files. We introduce a new technique, library-based LTA, and show how it can extend languages in such ways as adding contracts or mixins to existing classes, providing default code for interfaces, and instantiating parameterized types. We discuss an implementation of library-based LTA and its application to extending Java semantics. 1.
Building Distributed Process Management on an Object-Oriented Framework
- In Proceedings of the 1997 USENIX Conference
, 1997
"... The Solaris MC distributed operating system provides a single-system image across a cluster of nodes, including distributed process management. It supports remote signals, waits across nodes, remote execution, and a distributed /proc pseudo file system. Process management in Solaris MC is implemente ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
The Solaris MC distributed operating system provides a single-system image across a cluster of nodes, including distributed process management. It supports remote signals, waits across nodes, remote execution, and a distributed /proc pseudo file system. Process management in Solaris MC is implemented through an objectoriented interface to the process system. This paper has three main goals: it illustrates how an existing UNIX operating system kernel can be extended to provide distributed process support, it provides interfaces that may be useful for general access to the kernel's process activity, and it gives experience with object-oriented programming in a commercial kernel. 1 Introduction The Solaris MC research project 1 has set out to extend the Solaris operating system to clusters of nodes. We believe that due to technology trends, the preferred architecture for large-scale servers will be a cluster of off-the-shelf multiprocessor nodes connected by an industry-standard inte...
An Embedded Error Recovery and Debugging Mechanism for Scripting Language Extensions
, 2001
"... In recent years, scripting languages such as Perl, Python, and Tcl have become popular development tools for the creation of sophisticated application software. One of the most useful features of these languages is their ability to easily interact with compiled languages such as C and C++. Although ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
In recent years, scripting languages such as Perl, Python, and Tcl have become popular development tools for the creation of sophisticated application software. One of the most useful features of these languages is their ability to easily interact with compiled languages such as C and C++. Although this mixed language approach has many benefits, one of the greatest drawbacks is the complexity of debugging that results from using interpreted and compiled code in the same application. In part, this is due to the fact that scripting language interpreters are unable to recover from catastrophic errors in compiled extension code. Moreover, traditional C/C++ debuggers do not provide a satisfactory degree of integration with interpreted languages. This paper describes an experimental system in which fatal extension errors such as segmentation faults, bus errors, and failed assertions are handled as scripting language exceptions. This system, which has been implemented as a general purpose shared library, requires no modifications to the target scripting language, introduces no performance penalty, and simplifies the debugging of mixed interpreted-compiled application software.
Migration and Rollback Transparency for Arbitrary Distributed Applications in Workstation Clusters
, 1998
"... Programmers and users of compute intensive scientific applications often do not want to (or even cannot) code load balancing and fault tolerance into their programs. The P / BEAM system [PL95, PSLS96] uses a global virtual name space to provide migration and rollback transparency in user space for d ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Programmers and users of compute intensive scientific applications often do not want to (or even cannot) code load balancing and fault tolerance into their programs. The P / BEAM system [PL95, PSLS96] uses a global virtual name space to provide migration and rollback transparency in user space for distributed groups of processes on workstations. Applications always use the same virtual names for the operating system objects, independent of their current real location. The system calls are interposed and their parameters translated between the name spaces. Unlike other migration mechanisms, PBEAM does not require the applications to be written for a specific programming model or communication library. The first approach to execute applications in the virtual name space was to link the programs with a modified system library. Now, in this paper we describe design and implementation of a separate system call interposition process [Bol97] that accesses the application via the debugging int...
User-mode Per-process Name Spaces for the AP1000 File System
, 1993
"... The perceived simplicity of interprocess cooperation is strongly influenced by the type of name space in which the processes involved execute. If multiple processes share a common name space, they are more likely to cooperate effectively than if each operates in a distinct name space. This paper arg ..."
Abstract
- Add to MetaCart
The perceived simplicity of interprocess cooperation is strongly influenced by the type of name space in which the processes involved execute. If multiple processes share a common name space, they are more likely to cooperate effectively than if each operates in a distinct name space. This paper argues that, especially where specialized resources, such as a supercomputer, are involved, per-process name spaces are the optimum way to provide common name spaces across arbitrary domain boundaries. This paper also argues that such name spaces are best implemented in user mode. The user-mode per-process name spaces supported by the AP1000 File System are then described, as are some of the file system types supported on the AP1000. The performance implications of the user-mode implementation are also examined. I. INTRODUCTION Specialised resources, such as supercomputers, are often used by individuals from a variety of institutions (or departments of institutions), who are connected to the r...

