Efficient software-based fault isolation
- 1 December 1993
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGOPS Operating Systems Review
- Vol. 27 (5) , 203-216
- https://doi.org/10.1145/173668.168635
Abstract
One way to provide fault isolation among cooperating software modules is to place each in its own address space. However, for tightly-coupled modules, this solution incurs prohibitive context switch overhead. In this paper, we present a software approach to implementing fault isolation within a single address space.Our approach has two parts. First, we load the code and data for a distrusted module into its own fault do main , a logically separate portion of the application's address space. Second, we modify the object code of a distrusted module to prevent it from writing or jumping to an address outside its fault domain. Both these software operations are portable and programming language independent.Our approach poses a tradeoff relative to hardware fault isolation: substantially faster communication between fault domains, at a cost of slightly increased execution time for distrusted modules. We demonstrate that for frequently communicating modules, implementing fault isolation in software rather than hardware can substantially improve end-to-end application performance.Keywords
This publication has 20 references indexed in Scilit:
- Binary translationCommunications of the ACM, 1993
- User-level interprocess communication for shared memory multiprocessorsACM Transactions on Computer Systems, 1991
- Performance of the Firefly RPCACM Transactions on Computer Systems, 1990
- Lightweight remote procedure callACM Transactions on Computer Systems, 1990
- Profile guided code positioningPublished by Association for Computing Machinery (ACM) ,1990
- Performance of the world's fastest distributed operating systemACM SIGOPS Operating Systems Review, 1988
- Scale and performance in a distributed file systemACM Transactions on Computer Systems, 1988
- Implementing remote procedure callsACM Transactions on Computer Systems, 1984
- PilotCommunications of the ACM, 1980
- A comparison of list schedules for parallel processing systemsCommunications of the ACM, 1974