The crazy thing I did to fix Yosemite performance

Michael Crawford mdcrawford at
Mon Nov 3 11:55:23 PST 2014

There's lots of good stuff for developers.

I'm at work so I can't really take the time to look up all the links and titles.

The OS X kernel - "xnu"? - is a massive fork off of *BSD.  The two
main differences are that it links _statically_ to Mach, not so much
for use as a microkernel, but to avail itself of such primitives as
message passing and low-level memory management.  For example system
calls are generally implemented by a userspace wrapper library that
passes Mach messages into the kernel, rather than calling a trap - a
sort of "illegal instruction" that results in a processor exception
that switches the CPU to supervisor mode.

There is a very good book on Mac OS X Internals.  I think that's the
title but my memory is hazy.  I used to own a copy but left it on my
desk when I was fired from Microsoft, as a way of pointing out to my
manager - who knew nothing _whatsoever_ about the Mac - that my take
on the way we should develop our product was correct, and he was
blowing smoke. has lots of good tutorials.  You'll just
have to wade through all the corporate propaganda that's aimed at the
hip, new generation of iGadget coders, but the stuff is all still
there, like the "Hello I/O Kit" tutorial that explains how to write a
simple device driver.

The other main way that xnu differs from *BSD is that Apple (or maybe
NeXT I'm not sure) replaced the device driver architecture -
originally written in C - with the I/O Kit, which is written in the
badly named "Embedded C++", a strictly limited subset of C++.

In many ways I regard EC++ as a huge PITA - Bjarne hates it too - but
otherwise I like I/O Kit coding quite a lot.  It's a whole lot easier
to write OS X drivers than those for Linux, Windows or most embedded

The man pages are there for most command-line programs.  They weren't
included in the very earliest releases of OS X, which made UNIX fans
howl in derision.

Actually a great many of Apple's own engineers are UNIX coders.  I
myself helped a bit with the QA of A/UX 2.0 in 1989 and 1990.  I was
doing the QA for MacTCP running on Systems 6 and 7, so my manager
suggested I beta test the A/UX build of MacTCP, which was
binary-compatible with Mac OS apps, but in reality was a wrapper
around Berkeley sockets via the UNIX kernel system call interface.

Back to work... :-/
Michael David Crawford
mdcrawford at

   Available for Software Development in the Portland, Oregon Metropolitan

On Mon, Nov 3, 2014 at 11:40 AM, Jeff Singleton <gvibe06 at> wrote:
> On 11/3/14 1:33 PM, Dave Horsfall wrote:
>> OK, I'm going to bite.  Does there exist a resource for Unix geeks to get
>> used to Apple's way of doing things?  I've read the Dummy's Guide, but
>> it's not much more than helping Windoze lusers.
> I don't think there is a single guide...most of what I learned has been in
> pieces over the years. The method I used this time to backup/restore comes
> from an app I used way back that essentially was a GUI for doing the same
> process. I just chose to do things manually this time.
> _______________________________________________
> macports-users mailing list
> macports-users at

More information about the macports-users mailing list