Technology Overview

Mac OS X is a UNIX-based operating system with modern GUI and application support frameworks layered on top. The lowest layer, Darwin, includes the kernel, device drivers and driver support frameworks, a BSD personality layer, and various libraries and command-line utilities.

The Darwin layers of Mac OS X are open source. This serves two main purposes: to provide a resource for other open source development efforts (such as Linux and BSD variants) to make their software available on Mac hardware and to provide source code to aid developers writing device drivers and other low-level technologies for Mac OS X.

In addition to being part of Mac OS X, Darwin is a standalone, BSD-based operating system. (BSD, short for Berkeley Software Distribution, is a family of UNIX variants descended from Berkeley’s version of UNIX.)

Darwin is also occasionally used to refer to the Darwin Streaming Server, also known as the QuickTime Streaming Server (QTSS). For more information on QTSS, see the QuickTime Streaming Documentation.

Start Here

For more information about how Darwin fits into Mac OS X, you should read Mac Technology Overview.

For a better understanding of Darwin as a standalone operating system, you should read a book on system administration, such as UNIX System Administration Handbook by Nemeth and others.

Choose a Learning Path

There are five primary areas of learning related to Darwin: the kernel and device drivers, tools, porting, the Darwin OS components, and system administration.

The Kernel and Device Drivers

The first thing you should do before starting to write a device driver is to find out whether your driver should be in the kernel or not. Many drivers and other services are traditionally provided outside the kernel in Mac OS X. The document Should You Program in the Kernel? explains how to decide whether your driver or service needs to be in the kernel.


To learn about Apple’s tools, including its open source tools, read Tools & Languages Starting Point.


To learn about porting software to Mac OS X, read Getting Started With Porting. If you are planning to port a 64-bit tool to Mac OS X, or if you plan to transition a 32-bit command-line tool to a 64-bit environment, read 64-Bit Transition Guide.

The Darwin OS Components

Look at the Open Source topic page to learn about Apple-created open source technologies.

System Administration

To learn about system administration, look at the ADC topic page for Mac OS X. For additional information about security, including documentation on Mac OS X's support for access control lists (ACLs), see Security Overview.

Next Steps

The Darwin Reference Library includes the following high-level resource pages, which can be bookmarked for easy access.

These additional websites may also be helpful: