home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!pipex!warwick!uknet!gdt!aber!fronta.aber.ac.uk!pcg
- From: pcg@aber.ac.uk (Piercarlo Grandi)
- Newsgroups: comp.os.mach
- Subject: Re: Just what is Mach?
- Message-ID: <PCG.93Jan21153143@decb.aber.ac.uk>
- Date: 21 Jan 93 15:31:43 GMT
- References: <9301160144.AA23608@deepthought.cs.utexas.edu>
- Sender: news@aber.ac.uk (USENET news service)
- Reply-To: pcg@aber.ac.uk (Piercarlo Grandi)
- Organization: Prifysgol Cymru, Aberystwyth
- Lines: 72
- In-Reply-To: STDN%MARIST.bitnet@YaleVM.YCC.Yale.Edu's message of 16 Jan 93 01: 43:45 GMT
- Nntp-Posting-Host: decb.aber.ac.uk
-
- On 16 Jan 93 01:43:45 GMT, STDN%MARIST.bitnet@YaleVM.YCC.Yale.Edu (Dan Newcombe) said:
-
- STDN> Okay, so this may be a beginners question :) But I was reading an
- STDN> article in Byte last night and they mentioned mach here and there.
- STDN> I know that it's 700+ mph, and also the kernel being developed by
- STDN> CMU, but just what is it?
-
- There are many ways to answer. I could say tongue in cheek that it is
- the direct result of the failure of Three Rivers Corp., or that it is
- what happens when you take Accent and travesty it as some kind of Unix
- to fob it on the masses. :-)
-
- Technically Mach is an hypervisor, or a security kernel, or a
- microkernel. The Mach core is a smallish set of modules that provide,
- among other things, for:
-
- a capability based IPC mechanism
- multiple incore address spaces
- threads within address spaces
- device drivers
-
- By far and away the most important bit is the (double indirect)
- capability based IPC mechanism, which is lifted more or less identically
- from Accent, and that provides for ability of Mach to support
- transparent distributed services, user level pagers, and other niceties.
-
- The Mach IPC is based on message queues, which cannot be addressed
- directly by programs; programs can only access them by quoting a port
- number, and ports are capabilities to queues. A given queue may be
- denoted by many ports with send rights, but only by one port with
- receive rights; only the processing that holds the port with receive
- rights may dequeue a message from the queue. Messages are structured,
- and each component has a type tag, so messages can be exchanged between
- different architectures without formality.
-
- Part of a message may be port numbers; when the message is dequeued, the
- receiving process gets a copy of the port denoted by that number in the
- sender process.
-
- In this way processes can exchange capabilities to services, by sending
- each other ports with send rights; since ports with receive rights can
- also be sent from one process to another, it is easy to implement laod
- balancing and proxies and many other neat things.
-
- For example it is possible to instruct the hypervisor to send a message
- to a given queue via a given port on all attempts tot access a given
- range of address, and to wait for a reply containing data to be put in
- that range of addresses. Thus any process can do paging and other
- tricks ("memory objects").
-
- Incidentally, these are very broad generalities, there have been several
- versions of Mach, which are quite different in implementation, and even
- somewhat different in external appearance.
-
- A book on Mach internals is due out sonner or later, according to
- net.rumours.
-
- STDN> I have heard the Gnu Hurd is based on it, there are versions for
- STDN> 386's. Are these publically availiable?
-
- Yes and no. At one time CMU withdrew the BSD single server source code
- (the supervisor that provides emulation of BSD Unix system calls while
- running under the Mach hypervisor), but it had already been distributed
- widely. If you are lucky you can find a copy. There have been rumours
- that instead of having a BSD server Hurd will have a Linux server, as
- USL have not (yet :->) sued Linus Torvald.
-
- STDN> Could some kind soul please enlighten me.
-
- Would somebody unkind and soulless do? If so, I can refer you to several
- net.personalities...
- --
-