22

Does Darwin have any features that are specific to it? Do other Unixe(s) have features that Darwin lacks?

8 Answers 8

20

OS X is the only remaining operating system based on the Mach microkernel which is also still commercially relevant. There are a few ongoing research projects and obsolescent OSes that no doubt are still being used in production settings on old machines, but nothing you can go out and buy on a new machine today.

OS X has the usual assortment of kernel feature incompatibilities that any *ix has. The biggest one I most recently had to work around is a lack of System V message queues. (msgget(2) and friends.) We had to replace our message queue code — which was written for a "real" System V variant and later ported to Linux — with TCP/IP to get our software to run on OS X. For our application, the differences between these two IPC methods mattered at the time we made the choice to go with message queues, but due to later architectural changes, it ended up not being a big deal to switch to TCP/IP.

11

When it comes right down to it, isn't Darwin just a thin BSD layer on top of Mach 2.0?

I used to use NeXTStep, I don't know how much current MacOSX departs from NeXTStep, but...

Mach 2.0 offered a different set of abstractions at the kernel level:

  1. A "task": that's an address space + a set of "ports", possibly with a thread running in it.
  2. Threads. This was the schedulable unit of execution. A task (address space) could have more than 1 running in it. I believe that Mach-O files (Mach's executable file format) could specify more than one thread at process run time: no main() function that started more Cthreads, the OS would start one.
  3. Ports. These aren't like TCP or UDP ports. They were typed, ordered streams of messages. Rather RPC-like. You made up a protocol spec file, then ran that through a compiler to get server and client side stubs, marshalling and unmarshalling routines, etc.
  4. User level memory pagers. You could set up a task+thread to handle paging of other tasks' address spaces.

The original CMU Mach folks used these abstractions to emulate BSD Unix processes, MS-DOS processes, and in a fabulous fit of freakiness, VMS tasks. Each VMS task took 2 Mach tasks, plus many threads. Somebody used to sell a Mac OS (pre-OSX) emulator for NeXTStep that used the user-space-pagers to good effect.

The old CMU Mach publications page: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

The VMS-on-Mach paper: http://www.sture.ch/vms/Usenix_VMS-on-Mach.pdf

1
  • 3
    Mac OS X (and thus Darwin) uses Mach 3.0.
    – bahamat
    Sep 5, 2011 at 18:21
5

This isn't quite an answer but, DTrace is an awesome system debugging tool that exists for Solaris, Darwin/OS X, and *BSD, but not Linux.

2
4

Darwin has a relatively small set of supported file system types. Apart from specials like devfs and network types like webdav, the list is:

  • HFS/HFS+
  • UFS/FFS
  • ISO-9660/UDF/CDDA
  • NTFS
  • FAT

Of this list, only UFS was designed for Unix, although HFS+ has been upgraded to support all necessary Unix functionality. As of Mac OS X 10.6, UFS cannot be used for the root partition, although this restriction probably doesn't apply to Darwin. By default, HFS+ is case-insensitive, although case sensitivity can be requested at creation time. Although Mac OS X will run on a case-sensitive partition, many high-profile Mac applications will not (eg Adobe CS).

For a while, Apple was planning to supersede HFS with ZFS, and even shipped ZFS with some versions of Mac OS X, but sadly this experiment eventually failed because of unresolvable licensing issues.

1
  • I believe OS X's/macOS's NTFS write support is reported to still be buggy, as it remains experimental and was never stabilized, as I recall. Nov 17, 2018 at 17:55
3

I think it's best to describe Darwin as just another flavour of UNIX. Solaris is one. HP/UX is another. There are lots more, maybe not as "high-profile" but they're there. And with every flavour comes its own specifics. That's why there are flavours in the first place. Some company thinks up something which would help selling it (or simply working with it or even administrating it) and creates it and gives it its own name.

1
  • 2
    UNIX (in all caps) is a registered trademark of The Open Group in many countries; for something to be "UNIX" (in all caps), certification is required. Darwin isn't another "flavour of UNIX" -- but Mac OS X 10.10 on Intel x86-64 is certified as another UNIX.
    – user314104
    Oct 17, 2014 at 13:56
0

If I've heard right Darwin, as released by Apple, no longer functions as an independent operating system, so I'd point out that the biggest difference it has is OS X on top of it. :D

Although the integration between the old Mac OS, new Mac OS X, and NeXT stuff is sometimes laughable, little utilities like diskutil and hdiutil are great. Maybe it is some old Mach kernel architects left over from NeXT who use these little things and care about them who have made sure XCode such a good tool, too.

-1

Darwin is based on FreeBSD. One cool feature that is not present in other Unix operating systems (in my experience) is the Berkeley Packet Filter, aka /dev/bpf. This is a very versatile device you can use for packet capturing.

1
  • 1
    Darwin isn't really based upon FreeBSD, though it borrows some userland things from it. Other comments here explain that better. bpf(4) isn't solely Darwin and FreeBSD/NetBSD/OpenBSD, and I've got a feeling that someone might have even implemented it for earlier Linux kernels. SCO (in-)famously had it in their Unixware offering.
    – jrg
    Sep 2, 2010 at 20:32
-11

Fist that comes to my mind is all tools that OSX have in console.. there are tons of more useful commands that unix have. Diskutil it's like partition magic in shell, this tool have so much options for disk operations that fdisk is really just 10% of what this beast have... btw osx supports really great Software Raid support you can have JBOD, Strip and Mirror software raid types.. does really unix have this? in your dreams!! ;D

SystemProfiler - great tool which display all hardware id's,names,models,sn's and stuff like that in a VERY comfortable way.

darwin kernel isn't totally transparent like in unix.

darwin have killall util =P unix don't, only skill

different file system also.. HFS, HFS+

maybe latter i'll remember more =)

8
  • 2
    Do you mean Darwin has 'killall' and other Unix variants don't? That's not true.
    – kbyrd
    Aug 10, 2010 at 23:44
  • 2
    this answer is suspect of trolling. It is not necessary to be so defamatory in your statements about *nix other than os X. Also, last time I EVER USED *NIX killall was absolutely present in my PATH. Also also, linux has system profilers. Do your homework. Don't be a déuche. edit: I use and am very fond of OS X.
    – Eli Frey
    Aug 11, 2010 at 2:53
  • 2
    I have killall on linux, so it's not unique to darwin Aug 11, 2010 at 3:08
  • 2
    This answer is vague and inaccurate. What useful features does fdisk lack? Linux RAID (mdadm) does have concatenation (LINEAR), striping (RAID0) and mirroring (RAID1), among others. Linux also supports both HFS and HFS+. Aug 11, 2010 at 4:13
  • 3
    BTW: Linux-killall and Solaris-killall are quite different Aug 11, 2010 at 21:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .