R. S. Fabry @ UC-Berkeley
Communications of the ACM, July 1974, pages 403-412
Capability:
absolute address of and access permission for an object
|
|||||||||
Capability as a protection mechanism has been discussed before, e.g., HYDRA | |||||||||
In
this paper capability as an addressing scheme is discussed
|
|||||||||
Segmenting is a good mechanism to address and share objects among processes | |||||||||
Segments,
however, are referenced by a virtual address, which is process-specific:
|
|||||||||
The Problem of Shared Segment References
|
We need a scheme in which objects are addressed in a process-independent way and still relocatable |
Make shared segments referenced by the same way (such as the same seg #) by all processes sharing them | |||
Segment
numbers of shared segments should be assigned centrally
|
|||
Burrough
System takes this approach
|
Introduce
one more level of indirection: See Fig 4
|
|||||||||
Linkage segment is dynamically created when the process executes the shared function first time | |||||||||
Cons
|
Segment table per the pair of (process, function) | |||||
Segment numbers appearing in a function index into the segment table of (the process, the function) | |||||
Cons
|
Use capabilities (= absolute address) to address anything | |||||
Process
dependent object (data objects in Fig 6) can be correctly addressed by
loading the absolute address into the predefined register--actually
hard-coded in the program: register 0 in Fig 6
|
|||||
Process independent object (= shared object) can be addressed by simply hard code the address |
Multics's full path name is a kind of absolute address, but cumbersome because it is variable size | |
Lack of absolute address is one source of inefficiency in terms of linking cost and programming efforts |
Integrated
solution is required
|
Because
capabilities contains access control, they should be protected from user program creation and modification
|
|||||||||||||||
Two approaches: Tagged & Partition | |||||||||||||||
Tagged
Approach
|
|||||||||||||||
Partition
Approach
|
To
users, capability is just an address
|
|||||||||||||||||||||||||||
The capability, however, given by user program should be translated into physical address! | |||||||||||||||||||||||||||
Hardware
suggested
|
When
segments are allocated in terms of "natural" units for the
problem, segments become fine-grained enough and mostly smaller than page size
|
Instruction set should be extended so that capability manipulation may be allowed as that of ordinary addresses does | |||||
enter
instruction suggested
|
|||||
enter
access permission also suggested
|
Because
the capability is embedded into each subroutine, using a single stack for
a process is not adequate
|
Pros: Recognize the limits of the segment system--sharing segments in relocation system, which is still true | |||||||
Cons:
|