MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Actors: a model of concurrent computation in distributed systems
Actors: a model of concurrent computation in distributed systems
Concurrency features for the Trellis/Owl language
European conference on object-oriented programming on ECOOP '87
Synchronization primitives for a multiprocessor: a formal specification
SOSP '87 Proceedings of the eleventh ACM Symposium on Operating systems principles
Communications of the ACM
Firefly: A Multiprocessor Workstation
IEEE Transactions on Computers - Special issue on architectural support for programming languages and operating systems
Workcrews: an abstraction for controlling parallelism
International Journal of Parallel Programming
The portable common runtime approach to interoperability
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
The Amber system: parallel programming on a network of multiprocessors
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
Process control and scheduling issues for multiprogrammed shared-memory multiprocessors
SOSP '89 Proceedings of the twelfth ACM symposium on Operating systems principles
The Performance Implications of Thread Management Alternatives for Shared-Memory Multiprocessors
IEEE Transactions on Computers
Performance of the Firefly RPC
ACM Transactions on Computer Systems (TOCS)
Processor scheduling in shared memory multiprocessors
SIGMETRICS '90 Proceedings of the 1990 ACM SIGMETRICS conference on Measurement and modeling of computer systems
Multi-model parallel programming in psyche
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
A methodology for implementing highly concurrent data structures
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
Empirical studies of competitve spinning for a shared-memory multiprocessor
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
First-class user-level threads
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
Experience with processes and monitors in Mesa
Communications of the ACM
The Effect of Scheduling Discipline on Spin Overhead in Shared Memory Parallel Systems
IEEE Transactions on Parallel and Distributed Systems
Using continuations to implement thread management and communication in operating systems
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
Operating system support for parallel programming on RP3
IBM Journal of Research and Development
Lightweight shared objects in a 64-bit operating system
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
The Apertos reflective operating system: the concept and its implementation
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
A customizable substrate for concurrent languages
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Procs and locks: a portable multiprocessing platform for standard ML of New Jersey
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Scheduling and page migration for multiprocessor compute servers
ASPLOS VI Proceedings of the sixth international conference on Architectural support for programming languages and operating systems
A performance evaluation of lock-free synchronization protocols
PODC '94 Proceedings of the thirteenth annual ACM symposium on Principles of distributed computing
Cilk: an efficient multithreaded runtime system
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Reflection of developing user-level real-time thread packages
ACM SIGOPS Operating Systems Review
Exokernel: an operating system architecture for application-level resource management
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Thread scheduling for cache locality
Proceedings of the seventh international conference on Architectural support for programming languages and operating systems
Operating system support for improving data locality on CC-NUMA compute servers
Proceedings of the seventh international conference on Architectural support for programming languages and operating systems
CPU reservations and time constraints: efficient, predictable scheduling of independent activities
Proceedings of the sixteenth ACM symposium on Operating systems principles
Kernel-level scheduling for the nano-threads programming model
ICS '98 Proceedings of the 12th international conference on Supercomputing
Flexible use of memory for replication/migration in cache-coherent DSM multiprocessors
Proceedings of the 25th annual international symposium on Computer architecture
Performance isolation: sharing and isolation in shared-memory multiprocessors
Proceedings of the eighth international conference on Architectural support for programming languages and operating systems
EMERALDS: a small-memory real-time microkernel
Proceedings of the seventeenth ACM symposium on Operating systems principles
First-class user-level threads
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
Information and control in gray-box systems
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
You and I are past our dancing days
EW 6 Proceedings of the 6th workshop on ACM SIGOPS European workshop: Matching operating systems to application needs
EMERALDS: A Small-Memory Real-Time Microkernel
IEEE Transactions on Software Engineering
User-space communication: a quantitative study
SC '98 Proceedings of the 1998 ACM/IEEE conference on Supercomputing
Pthreads for dynamic and irregular parallelism
SC '98 Proceedings of the 1998 ACM/IEEE conference on Supercomputing
Porting multithreading libraries to an exokernel system
EW 9 Proceedings of the 9th workshop on ACM SIGOPS European workshop: beyond the PC: new challenges for the operating system
On the design of Chant: a talking threads package
Proceedings of the 1994 ACM/IEEE conference on Supercomputing
IPPS '97 Proceedings of the 11th International Symposium on Parallel Processing
A Tool to Schedule Parallel Applications on Multiprocessors: The NANOS CPU MANAGER
IPDPS '00/JSSPP '00 Proceedings of the Workshop on Job Scheduling Strategies for Parallel Processing
Euro-Par '02 Proceedings of the 8th International Euro-Par Conference on Parallel Processing
An Implementation of Scheduler Activations on the NetBSD Operating System
Proceedings of the FREENIX Track: 2002 USENIX Annual Technical Conference
FTL: a multithreaded environment for parallel computation
CASCON '94 Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research
Mini-Threads: Increasing TLP on Small-Scale SMT Processors
HPCA '03 Proceedings of the 9th International Symposium on High-Performance Computer Architecture
A Top-Down Driven, Object-Based Approach to application-Specific Operating system Design
IWOOOS '95 Proceedings of the 4th International Workshop on Object-Orientation in Operating Systems
Structuring the Kernel as a Toolkit of Extensible, Reusable Components
IWOOOS '95 Proceedings of the 4th International Workshop on Object-Orientation in Operating Systems
Evolving real-time systems using hierarchical scheduling and concurrency analysis
RTSS '03 Proceedings of the 24th IEEE International Real-Time Systems Symposium
Integrating applications with cache and memory management on a shared-memory multiprocessor
CASCON '92 Proceedings of the 1992 conference of the Centre for Advanced Studies on Collaborative research - Volume 1
Real-Time Systems
Flexible cross-domain event delivery for quality-managed multimedia applications
ACM Transactions on Multimedia Computing, Communications, and Applications (TOMCCAP)
IEEE Transactions on Software Engineering
Flexible, Low-overhead Event Logging to Support Resource Scheduling
ICPADS '06 Proceedings of the 12th International Conference on Parallel and Distributed Systems - Volume 2
An efficient kernel-based implementation of POSIX threads
USTC'94 Proceedings of the USENIX Summer 1994 Technical Conference on USENIX Summer 1994 Technical Conference - Volume 1
Operating-system support for distributed multimedia
USTC'94 Proceedings of the USENIX Summer 1994 Technical Conference on USENIX Summer 1994 Technical Conference - Volume 1
HiPEC: high performance external virtual memory caching
OSDI '94 Proceedings of the 1st USENIX conference on Operating Systems Design and Implementation
Using continuations to build a user-level threads library
MSYM'93 Proceedings of the 3rd conference on USENIX MACH III Symposium - Volume 1
On designing lightweight threads for substrate software
ATEC '97 Proceedings of the annual conference on USENIX Annual Technical Conference
KAAPI: A thread scheduling runtime system for data flow computations on cluster of multi-processors
Proceedings of the 2007 international workshop on Parallel symbolic computation
Towards effective user-controlled scheduling for microkernel-based systems
ACM SIGOPS Operating Systems Review
Panda: a portable platform to support parallel programming languages
Sedms'93 USENIX Systems on USENIX Experiences with Distributed and Multiprocessor Systems - Volume 4
Sprockets: safe extensions for distributed file systems
ATC'07 2007 USENIX Annual Technical Conference on Proceedings of the USENIX Annual Technical Conference
Contention-aware scheduler: unlocking execution parallelism in multithreaded java programs
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Composing parallel software efficiently with lithe
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Tessellation: space-time partitioning in a manycore client OS
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
Lithe: enabling efficient composition of parallel libraries
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
Avoiding file system micromanagement with range writes
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Design principles for end-to-end multicore schedulers
HotPar'10 Proceedings of the 2nd USENIX conference on Hot topics in parallelism
An analysis of Linux scalability to many cores
OSDI'10 Proceedings of the 9th USENIX conference on Operating systems design and implementation
ICCSA'11 Proceedings of the 2011 international conference on Computational science and Its applications - Volume Part V
Improving per-node efficiency in the datacenter with new OS abstractions
Proceedings of the 2nd ACM Symposium on Cloud Computing
LUTS: a lightweight user-level transaction scheduler
ICA3PP'11 Proceedings of the 11th international conference on Algorithms and architectures for parallel processing - Volume Part I
An efficient multi-level trace toolkit for multi-threaded applications
Euro-Par'05 Proceedings of the 11th international Euro-Par conference on Parallel Processing
REEact: a customizable virtual execution manager for multicore platforms
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
Holistic run-time parallelism management for time and energy efficiency
Proceedings of the 27th international ACM conference on International conference on supercomputing
Predictable and configurable component-based scheduling in the Composite OS
ACM Transactions on Embedded Computing Systems (TECS) - Special Section on ESTIMedia'10
Hi-index | 0.00 |
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.