I don't want this to turn into a Linux vs Windows war (although it's been a long time since that has happened in Channel9).. but I was talking about hardware platform support.
Linux is designed to be extremely modular at build time, if you ever build your own Linux kernel you literately go through a menu of options on what you want to include in it. Last time I played with this, I remember seeing weird stuff like "HAM Radio Support". 
So you can build a version of Linux that plays nicely on a router with a sub-100Mhz processor and 1 MB of Flash. You don't even have to built multi-user support or networking, that's a build option. You can also build versions of Linux that run very well on big iron POWER7 supercomputers, with kernel-level support for their unique architecture. But in the end of the day, it's the same unified codebase.
Linux was just designed like this from early on. So it makes a good OS for unique applications. Obviously phone is not as unique, but Linux has been on phones for a very long time as well, definitely predating Android. So the work to get Linux to work on phones has already been done. Google got to use that engineering without having to produce their own kernel. In fact, Google engineers mostly got to play with the fairly simple Java programming language to build most of Android. The architecture of Android is the closest thing to a "managed" OS that exists in production, the holy grail of some ideas. There is a small userspace that is unmanaged but almost all the apps, the shell, etc. are all written in Java.
So they were able to put out an OS much faster than Microsoft did. And ultimately I think this is why Android is winning (or already won).
Linux implements the POSIX API to a great degree. So does Windows, at least the networking side of things which is a HUGE part of the POSIX API. I often stumble on MSDN pages when I do low level programming on Linux. These pages have helped me (ironically?).
But Linux is not an UNIX operating system, it just happens to have good compatibility with traditional UNIX (generally speaking, better than Windows).
This is a common misunderstanding about Linux. Apple Mac OS X however, is a true UNIX. I'm not sure about iOS, but I doubt it.
Also the kernel design is not what makes UNIX. UNIX is an interface at this point, that is, an API. What makes something UNIX is official conformance to this API. All Mac OS X would need to do to "not be UNIX" is move some of their files around and maybe rename a function or two. Nothing in the design makes UNIX.
The so called monolithic design used by Linux is pretty standard in many operating systems.. even Mac OS X which uses Mach actually modified it considerably and their new kernel is called XNU. I do not think XNU qualifies as a microkernel. WinNT certainly does not qualify as a microkernel. The microkernel vs monolithic design is an old debate and I don't think it's really accepted that microkernels are simply better, they have their own problems related to performance and maintainability.
Thread Closed
This thread is kinda stale and has been closed but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.