Distrbution and Abstract Types in Emerald
IEEE Transactions on Software Engineering - Special issue on distributed systems
Communications of the ACM
Lightweight remote procedure call
ACM Transactions on Computer Systems (TOCS)
Distributed, object-based programming systems
ACM Computing Surveys (CSUR)
Using continuations to implement thread management and communication in operating systems
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
ACM SIGOPS Operating Systems Review
Scheduler activations: effective kernel support for the user-level management of parallelism
ACM Transactions on Computer Systems (TOCS)
The Peregrine high-performance RPC system
Software—Practice & Experience
Improving IPC by kernel design
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
The structuring of systems using upcalls
Proceedings of the tenth ACM symposium on Operating systems principles
Redirecting System Calls in Mach 3.0, An alternative to the Emulator
USENIX MACH III Symposium
In-Kernel Servers on Mach 3.0: Implementation and Performance
USENIX MACH III Symposium
The KeyKOS Nanokernel Architecture
Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures
An Architectural Overview of Alpha: A Real-Time, Distributed Kernel
Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures
Fast Interrupt Priority Management in Operating System Kernels
USENIX Microkernels and Other Kernel Architectures Symposium
An Architectural Overview of QNX
Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures
Lightweight Thread Tunnelling in Network Applications
IWAN '02 Proceedings of the IFIP-TC6 4th International Working Conference on Active Networks
Vulnerabilities in Synchronous IPC Designs
SP '03 Proceedings of the 2003 IEEE Symposium on Security and Privacy
The measured performance of a fast local IPC
IWOOOS '96 Proceedings of the 5th International Workshop on Object Orientation in Operating Systems (IWOOOS '96)
Resource management architecture for future information appliances
Journal of Embedded Computing - Real-Time and Embedded Computing Systems
A microkernel API for fine-grained decomposition
Proceedings of the Fifth Workshop on Programming Languages and Operating Systems
On distributed real-time scheduling in networked embedded systems in the presence of crash failures
SEUS'07 Proceedings of the 5th IFIP WG 10.2 international conference on Software technologies for embedded and ubiquitous systems
Consensus-driven distributable thread scheduling in networked embedded systems
EUC'07 Proceedings of the 2007 international conference on Embedded and ubiquitous computing
Recovering from distributable thread failures in distributed real-time Java
ACM Transactions on Embedded Computing Systems (TECS)
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Operating system support for multimedia systems
Computer Communications
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 |
We have modified Mach 3.0 to treat cross-domain remote procedure call (RPC) as a single entity, instead of a sequence of message passing operations. With RPC thus elevated, we improved the transfer of control during RPC by changing the thread model. Like most operating systems, Mach views threads as statically associated with a single task, with two threads involved in an RPC. An alternate model is that of migrating threads, in which, during RPC, a single thread abstraction moves between tasks with the logical flow of control, and "server" code is passively executed. We have compatibly replaced Mach's static threads with migrating threads, in an attempt to isolate this aspect of operating system design and implementation. The key element of our design is a decoupling of the thread abstraction into the execution context and the schedulable thread of control, consisting of a chain of contexts. A key element of our implementation is that threads are now "based" in the kernel, and temporarily make excursions into tasks via upcalls. The new system provides more precisely defined semantics for thread manipulation and additional control operations, allows scheduling and accounting attributes to follow threads, simplifies kernel code, and improves RPC performance. We have retained the old thread and IPC interfaces for backwards compatibility, with no changes required to existing client programs and only a minimal change to servers, as demonstrated by a functional Unix single server and clients. The logical complexity along the critical RPC path has been reduced by a factor of nine. Local RPC, doing normal marshaling, has sped up by factors of 1.7-3.4. We conclude that a migrating-thread model is superior to a static model, that kernel-visible RPC is a prerequisite for this improvement, and that it is feasible to improve existing operating systems in this manner.