[cap-talk] Capability-based Projects - theory vs. practice

Jed Donnelley jed at nersc.gov
Thu Aug 2 21:52:45 EDT 2007


Jonathan S. Shapiro wrote:
> On Thu, 2007-08-02 at 11:59 -0700, Jed Donnelley wrote:
>   
> ...
>> It's certainly true that Mach (and I believe DEMOS at least
>> falls into the same category, perhaps Chorus?) referred to
>> their protected objects as "port"s.  This suggests more of
>> a "network address" sort of use...
>>     
>
> You are correct. A mach thread may have many receive ports, enabling it
> to use ports to name objects. Further, it can aggregate these into sets
> so that it can do "receive on any" operations.
>
> However, Mach is at best an impure capability system. There exist system
> calls other than "invoke capability", and the Mach documentation is very
> careful to characterize it as "capability-like" (their term).
>
>   
Good term, "capability-like".  Still, I think your more important 
criticism of
Mach and Chorus regarding capabilities is the durability point that you make
below:
> My impression from a quick review of the Chorus docs is that Chorus
> ports name processes. A chorus "capability" (unprotected, though they
> thought otherwise) names a port and gives an object ID.
>
> It is not clear how the Chorus "capability" notion corresponds to
> capabilities, and it might be good to check before engendering
> confusion.
>
>   
>> Perhaps what is more important for such systems is
>> how they use their protected objects in practice.
>> I often use the file system as an important test case.
>> Does Mach (DEMOS, Chorus?) use separate "port"s
>> for each file or do they somehow use a smaller number
>> of ports and include designation information as data?
>>     
>
> I suspect so, but more importantly: Mach uses principal-based access
> control, because ports do not survive system restart. Chorus likewise.
>   
You've definitely hit a critical point there.  Whether in some sense
'we' want to refer to such systems as "capability" systems (e.g. because
they can provide a POLA environment for running programs - without
access to the ACL interface), I certainly consider them as dysfunctional
regarding their use of capabilities for access control since they have to
start from a non-capability base (e.g. users/ACLs) with every system
restart.

I admit that I've never seen any sort of a Mach interface other than
Unix, but when I consider that network server for Mach:

R. D. Sansom, D. P. Julin, and R. F. Rashid. Extending a
Capability Based System into a Network Environment. In
Proc. 1986 ACM SIGCOMM Conference, pages 265--274,
Aug. 1986.

it makes me think of the DCCS and I then jump to durable
(is that the right term?) capabilities - which is completely erroneous.
(Note the use of the "capability" term in the above title).

If these sorts of systems are to be considered 'capability' systems,
then I certainly think they need a sub category of their own,
perhaps with **s next to it.

If we do that, however, then I guess Unix has to be considered
a "capability"** system, as Unix open file descriptors can
be communicated over pipes and can act in some sense as
capabilities - as with Mach.

I'm strongly persuaded.  Some of the Mach documentation may have
claimed the "capability" term (perhaps when it was still a bit more
fashionable, particularly at CMU after the Hydra legacy, before
the TCSEC/Orange Book/Rainbow onslaught), but I consider Mach
to be negligibly 'capability', so I think Mach should generally
be left out of any such list of capability systems.  They might
be relieved to hear such a 'pronouncement.'

However, I note that if we take that tact then we significantly
thin the ranks of 'capability' systems.  By that criteria I think
we must eliminate all the language based systems, Emerald,
Network Objects, and E just as examples that come to mind?

In that case which of these systems provide only non-durable
capabilities?  Let me make a first guess pass with the *****s.
Those where I'm pretty sure have durable capabilities are
indicated with <<<<<<<<s.  The ??????s are obvious:

1959: Rice University Computer   *****?  Not caps I'm pretty sure.
1961: B5000 - Burroughs          ******** (not caps at all really
                                  despite what you may have heard)
1964: Dennis & Van Horn  - MIT  ****** (a design, not a system)
---------------------------------------------------
1966: PDP-1 Supervisor - MIT      <<<<<<<<<<<<
1967: Magic Number Machine - University of Chicago   *****?????
1968: CAL-TSS - Berkeley         *****  never finished, so...
1969: System 250 - Plessey Corporation    ***********
1969: BCC Model 1: Berkeley Computer Corporation  *******
1970: Gendanken - Argonne National Laboratories/ Berkeley  ????
1970: CAP - Cambridge University      ?????
1971: Future System Project - IBM     ?????
1971: Project SUE - University of Toronto     ?????
1971: Hydra - Carnegie Mellon      <<<<<<????
1972: RATS - Lawrence Livermore    <<<<<<<<
1973: System/38 - IBM               ?????
1973: Actors - MIT                  *******
1973: PSOS - SRI                    ******* (abandoned capabilities)
----------------------------------------------------
1975: StarOS - Carnegie Mellon      <<<<<????
1975: GNOSIS/KeyKOS - Tymshare/Key Logic   <<<<<<<<
1976: Monads - Monash University    <<<<<<<
1977: Demos - Los Alamos            *******
1978: NLTSS - Lawrence Livermore    <<<<<<<
1979: Eden Project - University of Washington   ??????
1979: Chorus - INRIA/Chorus Systemes            ******
1980: SWARD - IBM                            ?????
1980: SODS/OS - University of Delaware       ?????
1980: PDP 11 operating system - University of Texas
             Huh???                 ??????
1980: Path Pascal - NASA                     ******
1981: Amoeba - Free University Amsterdam     <<<<<<<<
1981: Flex - Royal Signals and Radar Establishment (RSRE)  ?????
1981: Accent - Carnegie Mellon            ?????
1981: iAPX 432 - Intel                    *****
1982: Password-Capability System - Monash University   <<<<<<<<<
1982: Cambridge Distributed Computing System - Cambridge University  ?????
1984: SCAP - Cambridge University         ???????
-------------------------------------------------------------
1985: Mach - Carnegie Mellon              *********
1985: Emerald - University of Washington  *********
1988: SMITE - RSRE                        ?????
1990: EROS - U Penn       (wow, I didn't know EROS started so early)  <<<<<<<
1990: Joule - Los Altos         ????? (Los Altos??)
1992: Mungi - New South Wales   ?????
1994: Grasshopper - University of Sydney   ?????
-------------------------------------
1995: Client Utility - HP Labs             ?????
1995: Original-E - Electric Communities    *****
1996: W7 - MIT                             *****
1996: Oviedo3 - Oviedo University (Spain)  ?????
1997: SLK/J-Kernel Cornel                  ?????
1998: SpeedOS - University of Ulm          ?????
1999: E Language                           *****

The above are my best guesses.  That leaves a rather
sparse field if we were to remove both the ????s and
the ****s and leave only those with <<<<<<<s that I am
pretty sure are capability systems.  9 systems only
that start with <<<<<<<s.  18 more if you include
those that I am most ignorant of, those that start
with ??????  I expect most of those ??????s will
drop out by the somewhat tighter criteria above.

--Jed   http://www.webstart.com/jed/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.eros-os.org/pipermail/cap-talk/attachments/20070802/91b7be21/attachment.html 


More information about the cap-talk mailing list