I know that many of the same programs run flawlessly on top of both kernels. I know that historically, the two kernels came from different origins. I know philosophically too that they stood for different things. My question is, today, in 2011, what makes a Unix kernel different from a Linux one, and vice versa?
There is no unique thing named "the Unix kernel". There are multiple descendants of the original Unix kernel source code trunk that forked branches from it at different stages and that have evolved separately according to their own needs.
The mainstream ones these days are found in Operating Systems created either from System V source code: AIX, HPUX, Solaris or from BSD source code, OpenBSD, FreeBSD and Mac OS/X.
All of these kernels have their particular strengths and weaknesses, just like Linux and other "from scratch" Unix like kernels (minix, Gnu hurd, ...).
Here is a non exhaustive list of the areas where differences can be observed, in no particular order:
- CPU architecture support
- Availability of drivers
- File systems supported
- Virtualization capabilities
- Scheduling features, (alternate scheduling classes, real-time, ...)
- API stability between versions
- Open/Close source, license used
- Security (eg: privilege granularity)
- Memory management