ACM Transactions on Computer Systems (TOCS)
Scale and performance in a distributed file system
ACM Transactions on Computer Systems (TOCS)
Communications of the ACM
SIGCOMM '88 Symposium proceedings on Communications architectures and protocols
Coda: A Highly Available File System for a Distributed Workstation Environment
IEEE Transactions on Computers
Disconnected operation in the Coda File System
ACM Transactions on Computer Systems (TOCS)
Transparently interposing user code at the system interface
Transparently interposing user code at the system interface
TENEX, a paged time sharing system for the PDP - 10
Communications of the ACM
Accent: A communication oriented network operating system kernel
SOSP '81 Proceedings of the eighth ACM symposium on Operating systems principles
ITS 1.5 Reference Manual
A resource sharing executive for the ARPANET
AFIPS '73 Proceedings of the June 4-8, 1973, national computer conference and exposition
JSYS traps: a TENEX mechanism for encapsulation of user processes
AFIPS '75 Proceedings of the May 19-22, 1975, national computer conference and exposition
Virtual storage and virtual machine concepts
IBM Systems Journal
Secure Composition of Insecure Components
CSFW '99 Proceedings of the 12th IEEE workshop on Computer Security Foundations
Hi-index | 0.00 |
Many contemporary operating systems utilize a system call interface between the operating system and its clients. Increasing numbers of systems are providing low-level mechanisms for intercepting and handling system calls in user code. Nonetheless, they typically provide no higher-level tools or abstractions for effectively utilizing these mechanisms. Using them has typically required reimplementation of a substantial portion of the system interface from scratch, making the use of such facilities unwieldy at best. This paper presents a toolkit that substantially increases the ease of interposing user code between clients and instances of the system interface by allowing such code to be written in terms of the high-level objects provided by this interface, rather than in terms of the intercepted system calls themselves. This toolkit helps enable new interposition agents to be written, many of which would not otherwise have been attempted. This toolkit has also been used to construct several agents including; system call tracing tools, file reference tracing tools, and customizable filesystem views. Examples of other agents that could be built include: protected environments for running untrusted binaries, logical devices implemented entirely in user space, transparent data compression and/or encryption agents, transactional software environments, and emulators for other operating system environments.