[comp.sys.amiga.tech] MACH on an Amiga?

karl@sugar.hackercorp.com (Karl Lehenbauer) (06/29/90)

In article <137720@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes:
>In article <5936@sugar.hackercorp.com> I wrote:
>>As I understand it, they have.  The micro-kernel contains no Unix code, only
>>the support for threads and memory management.

>Ok, let's get something straight before anyone goes off into limbo. MACH
>is _not_ UNIX. It never was, and probably won't ever be. 

Right, by "only the support for threads and memory management" I meant just
that:  Mach itself provides little more, if anything, than support for
threads and memory management through external VM pagers.

Mach is interesting because it provides a single multiprocessing model 
(threads, message passing and shared memory) capable of supporting most
of the multiprocessing architectures out there (VM-capable MMU required),
those being divided into machines which entirely share an address space,
machines which have a partially shared address space (some private memory)
and machines that communicate through an interface rather than shared memory
(i.e. networked machines).

They've done some really clever stuff.  Your tasks can share memory over a
network by taking page faults that are translated into requests for pages
from another machine.  It's really easy to do mapped files (for the people
who don't know what this is, files are mapped into your address space, and
fetching memory within the range of where the file is mapped causes a page
fault and the system reads that part of the file behind your back, so you
can treat files as if they're entirely present in memory, do pointer arithmetic
on them, stuff like that), Mach (at least the version with Unix) has support
for mapped files, and CMU's studies show that letting the pager handle file
I/O improves performance (you would still want read-ahead when you detected
sequential access of a file, etc, of course, but a clever pager could easily
do that...)

>It is an
>Operating System that has the capability of running many UNIX programs
>once they have been recompiled. 

Actually, Mach can't run any UNIX programs without UNIX running underneath
it; Mach provides far fewer services than Unix, like no disk I/O.

The Mach distributions prior to the (forthcoming?) micro-kernel 
distribution included BSD Unix, and required both BSD and AT&T source
licenses.

From the documentation I received from Carnegie-Mellon about Mach, I remember
something about it being "100% bug-for-bug compatible with BSD," and that
it would run BSD binaries for the same architecture, unmodified.

BTW, in the most recent Sun Observer magazine, Bill Joy took some potshots at
Mach, saying that message-based OS architectures had been tried in the 60s on
mainframes and were a dead end, but considering all the pathologies that were
indigenous to computing in that era, I don't think it's fair to dismiss
message-based execs on that basis, nor am I able to guess which 60s-era
OS he could have been talking about.

I think the Amiga message-based system software has been quite successful, for
example.  You don't see DNET-like things on the PC or Mac much.
-- 
-- uunet!sugar!karl
-- Usenet access: (713) 438-5018