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