Darwin

From Mac Guides

Jump to: navigation, search
This article contains out of date information that doesn't reflect recent events or releases.
You can help by updating it.
Hexley, the mascot of Darwin.
Enlarge
Hexley, the mascot of Darwin.

Darwin is a free, open-source, Unix-like operating system first released by Apple Computer in 2000. It is also the core set of components upon which Mac OS X is built.

In April 2002 the Internet Software Consortium (ISC) and Apple founded OpenDarwin.org, a community to foster cooperative Darwin development. OpenDarwin creates its own releases of the Darwin OS. A notable subproject of OpenDarwin is DarwinPorts, which has the goal of assembling a next-generation collection of ports to Darwin.

The Darwin developers decided to adopt a mascot in 2000, and chose Hexley the platypus over other contenders, such as an Aqua (GUI), Darwin fish, Clarus the dogcow, and an orca. Apple Computer does not sanction Hexley as a logo for Darwin.


Contents

Kernel design

Like most modern kernels, Darwin's is a hybrid, containing features of both monolithic and microkernels, attempting to make the best use of both technologies, such as the message passing capability of microkernels enabling larger portions of the OS to benefit from protected memory, as well as retaining the speed of monolithic kernels for certain critical tasks.

The design allows many parts of the kernel to be migrated out into userland, whereby they will be more easily debugged as they will be smaller, isolated programs, instead of being small parts entwined in a larger chunk of code. The migration of select kernel code into userspace has the additional benefit of making the system more robust; if a userspace driver crashes, it will not crash the kernel.

The kernel XNU, is derived from a number of sources, particularly Mach 3.0 and FreeBSD 5.x.

Mach

The core of the xnu kernel, Mach, provides kernel threads, message-passing (used in inter-process communication), protected memory, virtual memory management, real-time support, kernel debugging support, and console I/O. The Mach component also allows the OS to host binaries for multiple distinct CPU architectures within a single file (example x86 and PowerPC) due to its use of the Mach-O binary format.

BSD

The BSD portion of the kernel provides the POSIX API (BSD system calls), the process model, basic security policies, user ids, permissions, the networking code, the virtual filesystem code (including a filesystem independent journalling layer), cryptographic framework, System V IPC, and some of the locking primitives.

I/O Kit

This is the device driver framework, written in a subset of C++. Due to its object-oriented design, device drivers can be written more quickly while using less code; features common to any class of driver are provided within the framework itself. The I/O Kit is multi-threaded, Symmetric multiprocessing (SMP) safe, and allows for hot pluggable devices and automatic, dynamic device configuration.

Many drivers can be written to run from user-space, which further enhances the stability of the system; if a userspace driver crashes, it will not crash the kernel.

Protecting shared resources

In order to run safely on multiprocessor machines, access to shared resources (files, data structures etc.) must be serialized so that threads or processes do not attempt to modify the same resource at the same time. Atomic operations, spinlocks, critical sections, Mutual exclusion(mutexes), and serializing tokens are all possible methods that can be used to prevent concurrent access. Like both Linux and FreeBSD 5, Darwin employs a fine-grained mutex model to achieve higher performance on multiprocessor systems.

Supported processors

Currently, Darwin runs on x86 Intel and AMD) based computers, as well as PowerPC based machines, both single processor and Symmetric multiprocessing(SMP) models.

Development and distribution

Version management

The Darwin developers use a version control system called Concurrent Versions System(CVS) to manage changes to the Darwin source code.

Quality control

Like most modern operating systems, Darwin employs a built-in kernel debugger to help the developers find kernel bugs.

License

In July 2003 Apple released Darwin under version 2.0 of the APSL license, which the Free Software Foundation (FSF) approved as a free software license. Previous releases had taken place under an earlier version of the APSL that did not meet the FSF's definition of free software, although it met the requirements of the Open Source Definition.

Releases

A table of Darwin releases, with their corresponding Mac OS X releases: [1]

Darwin release Mac OS X release
Darwin 1.3.1 Mac OS X 10.0 to 10.0.4
Darwin 1.4.1 Mac OS X 10.1
Darwin 5.1 Mac OS X 10.1.1
Darwin 5.2 Mac OS X 10.1.2
Darwin 5.3 Mac OS X 10.1.3
Darwin 5.4 Mac OS X 10.1.4
Darwin 5.5 Mac OS X 10.1.5
Darwin 6.0 Mac OS X 10.2
Darwin 6.1 Mac OS X 10.2.1
Darwin 6.2 Mac OS X 10.2.2
Darwin 6.3 Mac OS X 10.2.3
Darwin 6.4 Mac OS X 10.2.4
Darwin 6.5 Mac OS X 10.2.5
Darwin 6.6 Mac OS X 10.2.6
Darwin 6.7 Mac OS X 10.2.7
Darwin 6.8 Mac OS X 10.2.8
Darwin 7.0 Mac OS X 10.3
Darwin 7.1 Mac OS X 10.3.1
Darwin 7.2 Mac OS X 10.3.2
Darwin 7.3 Mac OS X 10.3.3
Darwin 7.4 Mac OS X 10.3.4
Darwin 7.5 Mac OS X 10.3.5
Darwin 7.6 Mac OS X 10.3.6
Darwin 7.7 Mac OS X 10.3.7
Darwin 7.8 Mac OS X 10.3.8
Darwin 7.9 Mac OS X 10.3.9
Darwin 8.0 Mac OS X 10.4
Darwin 8.1 Mac OS X 10.4.1
Darwin 8.2 Mac OS X 10.4.2
Darwin 8.3 Mac OS X 10.4.3
Darwin 8.3.1 (Intel based OS X) Mac OS X 10.4.3
Darwin 8.4 Mac OS X 10.4.4
Darwin 8.4.1 (Intel based OS X) Mac OS X 10.4.4
Darwin 8.5 Mac OS X 10.4.5
Darwin 8.5.1 (Intel based OS X) Mac OS X 10.4.5
Darwin 8.6 Mac OS X 10.4.6
Darwin 8.6.1 (Intel based OS X) Mac OS X 10.4.6
Darwin 8.7 Mac OS X 10.4.7
Darwin 8.7.1 (Intel based OS X) Mac OS X 10.4.7

Notice that the version number jumps from Darwin 1.4.1 to 5.1. This was presumably done to continue the NeXTSTEP versioning (which left off at NeXTSTEP 3.3; OpenStep is considered version 4.0).

External links

General information

Documentation

Technology references

This article includes material taken from Wikipedia under the terms of the GFDL. Please note: as a derivative of a GFDL-licensed work, contributions to this article are also made available under the terms of the GFDL.