[ale] OT: Re: posting to Linux mail list

Ronald Chmara ron at Opus1.COM
Thu Jan 1 15:38:54 EST 2004


On Jan 1, 2004, at 11:51 AM, matty91 at bellsouth.net wrote:
> On Wed, 31 Dec 2003, Chris Ricker wrote:
>> On Sat, 20 Dec 2003, aaron wrote:
>>> As I believe I have pointed out before with info like...
>>> <http://developer.apple.com/unix/index.html>
>>> ...there is nothing of "emulation" about it. The integral, low level  
>>> FreeBSD
>>> Unix layer handles the overwhelming majority of OSeX network  
>>> interaction and
>>> program API's. The full FreeBSD kernel (currently FreeBSD 5 with  
>>> OSeX Panther
>>> 10.3.x) is about as far from "rudimentary" as it gets.
>>
>> Not really. All your basic OS functionality (memory management,
>> multitasking, scheduling, etc.) is provided by Mach.

Yes and no...
Mach Kernel pieces: Processor resources, scheduling, memory protection
BSD Kernel pieces: Process model, basic OS security, threading, Posix  
APIs
I/O kit pieces: VM, Hardware drivers, multiprocessor management
BSD subsystem: common unix programs, shells, etc.

See:
http://developer.apple.com/documentation/Darwin/Conceptual/ 
KernelProgramming/Architecture/chapter_3_section_3.html#//apple_ref/ 
doc/uid/TP30000905-DontLinkChapterID_1-TPXREF102

It's not for nothing that their mascot is a duck-billed platypus with a  
trident and holding a devil hat. :-)

>>  The Unix emulation is
>> through the FreeBSD / NetBSD mish-mash OS personality which rides on  
>> top of
>> that.

There's something of a semantic problem, I think, when trying to  
discuss OS X's core OS pieces in comparison to forms of linux, and for  
that matter, NT. Using concepts like "above" or "on top of" can be just  
as misleading as saying "side by side with". Mach is a microkernel that  
is fairly useless without an additional set of software components, as  
compared to a standalone monolithic (or modular) kernel.

One metaphor I like to use is to imagine the linux kernel being written  
by two (or more) totally separate teams, with each team taking  
responsibility for separate areas. Are the linux developers who work on  
the team that does process management merely creating an "emulation" of  
process management "on top of" the other team's work? I suppose in some  
senses they are, and in other senses, they aren't.

>> To me, it's not appreciably different than installing Cygwin on NT and
>> calling that "Unix on the desktop"

Well, NT without cygwin is usable as a standalone OS (well, ok, some  
folks don't find NT usable, but run with me here...). The OS X Mach  
kernel without BSD is not really usable as a standalone OS.

I'd argue that is an appreciable difference. :-)

Extending that thought, the OS X desktops and application API's (Cocoa,  
Carbon, Aqua, and even Xfree86 to some extent) *are* a bit more like  
cygwin on NT. There's a usable OS underneath without adding those  
additional pieces to extend the available features of the system.

>> .... Neither really are, or are "desktop
>> Unix done right" --

Unix is simply not a desktop OS. The API and GUI stuff OS X runs on top  
(Aqua, Cocoa, Carbon) of it's core OS are what makes a OS X desk-toppy,  
IMHO.

>>  they're both command-line unix-like worlds (for the most
>> part, though some aspects of both OS X and cygwin's Unix layer are  
>> just
>> weird)

...Spooky even. :-)

>> side-by-side with basically separate, non-integrated, non-Unix GUI
>> worlds.

Well, to re-iterate, an NT box can work (again, "work" is being used  
loosely here) without cygwin. BSD, OTOH, is so closely tied  
(integrated?) to the Mach microkernel on OS X, that OS X simply cannot  
functionally work without it. (The aqua (graphical) layer of OS X,  
OTOH, isn't really needed.)

>> *shrug* I'm not sure what a really graphical desktop-oriented Unix  
>> would
>> look like (or if it's possible -- how do you GUI an inherently  
>> textual OS?),
>> but OS X ain't it, IMO.

I like OS X because it gives me, in linux terms, "a really sweet window  
manager, and has a hardware and software environment that is closely  
knitted and tuned to work well together". It has enough unix-on-desktop  
features to cover my needs, but as far as non-desktop server features,  
I'd be loathe to port most of my server apps to it,  
3rd-fastest-supercomputer-in-the-world rank not withstanding...
http://www.top500.org/list/2003/11/

As far as a "desktop-oriented unix", I'd agree that not only is OS X  
not the holy grail, I also think the whole concept is a bit bizarre.  
Desktops are single-user machines, so process management would have to  
be cooperative (or user driven in some other way). The GUI interaction  
is more important to the user than background OS work, so the GUI layer  
should be as close as possible to the OS for speed reasons..... Keep  
adding up the features that make make for a great single-user box, and  
all the really great features of unix-y OS's gradually get thrown out  
the window, and we're left with monstrosities like, oh, Mac OS 7 or  
Windows ME.

It's sort of like trying to make "a practical single-user 747", or even  
"a personal aircraft carrier".

> I am starting to wonder if migrating OS X to Linux makes sense. With  
> the
> introduction of the Linux 2.6 kernel, and the scalability and security
> enhancements, I wonder if Apple might consider using the Linux kernel
> instread of the Mach micro kernel?

Highly doubtful, for licensing, massive re-porting, and CPU  
optimization reasons. :-/
....I'd guess that it'd be about as easy as porting NT to a linux  
kernel (or vice versa). They're that different.

>  From a raw resource perspective, Apple
> would gain the development efforts of thousands and thousands of
> developers, though porting it would prob take time.

Those thousands and thousands of developers aren't all buying apple  
hardware for PPC flavors of linux, and if they were, they could just as  
well contribute to darwin, which is also an open-source unix  
project.... :-) Also, the current raw development efforts on linux  
(IMO) aren't really highly focused in areas that make sense to apple's  
business model, i.e. selling more apple boxen.

For some much more detailed arguments on the whole issue, surf any one  
of the million threads on why apple won't port OS X to X86, which is  
analog to why apple has not interest in supporting directly  competing  
OS and hardware technologies.

>  Has anyone studied the
> Mach kernel?

(Tentatively waving hand...) The mach micro kernel is a totally  
different beastie than many other things called kernels (as you may  
have guessed from the first link). I suppose the confusion that created  
this thread might be linked to an assumption that BSD pieces (and I/O  
kit) run *in addition to* the kernel, so people used to larger kernels  
might be under the assumption that the kernel could run *without* any  
additional BSD (or other OS flavor, Mach is not OS-specific)  
components.

> How  does it stack up with other OSs on multiple procs?

Short, vague, not-very-technically-precise answer: It's sometimes a tad  
slower CPU-wise than some other OS builds, which can be made up for by  
getting faster/more CPU's and other hardware optimizations (mobo IO  
channels, backplane throughput, etc.). Mach was built from the ground  
up for the support of multi-processor environments and OS's, and  
sometime suffers a bit on single CPU machines.

The problem with a longer, more technically precise answer is that the  
Mach micro kernel itself isn't actually responsible for multi-processor  
management, that's the responsibility of other pieces. As a kernel, it  
doesn't do a whole lot of things that folks with a history of working  
with larger kernels would expect a kernel to do.

-Bop



More information about the Ale mailing list