[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

On Thu, 1 Jan 2004, Ronald Chmara wrote:

> 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.

It's not really that clean of an abstraction in practice. VM is Mach + I/O
kit, SMP is Mach + I/O kit. Threading is Mach, and the BSD layer just
provides a pthreads-compatible thread implementation built on Mach threads
(just like BSD processes are built on Mach tasks). etc.

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

I think a Heinz 57 mutt would be more appropriate ;-)

> >> 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. :-)

Yes and no. You normally want some sort of OS personality on top of Mach. It
doesn't have to be BSD, though, and there's enough in the Mach in OS X you
could do work w/o it (IPC, memory, processes, etc. are Mach. Device drivers
are IO Kit, not BSD. What more do you want, beyond a sane API, and that's
what the BSD layer is really providing. Well, that, and saving them from
having to implement their own networking). The way OS X Mach is implemented
doesn't allow you as an end user to swap out the BSD personality, but that's
not inherent to Mach itself, just OS X's modified version of it.

Similarly, it is technically possible to strip NT down to the NT
pseudo-microkernel + the NT POSIX layer, and omit the GUI entirely. I've
used embedded data collection machines which were NT-based in just that

> 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,  

*shrug* I've productively used Unix as a desktop for years. I don't find OS 
X Aqua a productive work environment....

> > 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.

You're kinda being contradictory here. Either OS X is riding on BSD, or it's
riding on Mach. If it's tied to BSD, the port to Linux is relatively
non-difficult. If it's tied to Mach, like you say, it's difficult.

I agree that porting to Linux isn't likely. The licensing would get
horrendously complicated for little / no gain, and Apple has years of
experience and developers invested in Mach.

> 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.

It's fairly clear that Apple has ported OS X to x86. They just don't, and
likely won't, ship it.

> (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.

Mach can run w/o BSD. See, for one example, MkLinux.

Also, the OS X Mach is not exactly microkernelish, at least in the usual
senses. My understanding is that in OS X Mach, core Mach + BSD + IO Kit
components are all in the same address space rather than using message
passing as a "real" microkernel would do.... Conceptually, it's not much
different from, say, Solaris. In Solaris, you have three components: unix,
genunix, and device drivers. At boot time / device driver load time, all
three get linked into a single address space to form a monolithic kernel 
and to together supply OS functionality.

> 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.

Actually, the Mach microkernel is inherently multiprocessor, both within a 
single box and in "multicomputer" architectures....

There are probably others on this list with much more experience with / 
knowledge of Mach than I, though, so I'll shut up now.