The microkernel concept that was once theoretically cool but impractical may now be a more reasonable real-world solution. With Microsoft working on Windows 7 and reportedly Midori, have hardware performance improvements finally made the microkernel practical?
The news is full of talk about Microsoft's Midori, a research project to make Windows more distributable and reliable
. But Microsoft has many other research projects and directions for Windows in the works.
One thing that has been clear for a while about operating system design at Microsoft is that it will be changing the Windows kernel to make it smaller and more efficient. This work, which has been ongoing for a while, represents a return to a philosophy Microsoft adopted long ago for the original Windows NT but abandoned after it failed in real-world conditions.
Microkernels were a hot topic back in the early '90s, I remember. There was a futuristic next generation of OS/2 in the works called Workplace OS that was supposedly microkernel-based. Various other operating system vendors had used the term microkernel in their marketing, but very few actual products in use were generally acknowledged to implement the design.
The idea behind the microkernel is that the kernel, or most privileged parts of the operating system, should be stripped down only to those parts that really require such access. All other functions run in user mode, communicating with each other through interprocess communication. These include what are usually thought to be privileged code, such as device drivers, file systems and network stacks.
I had a conversation back in '94 with Jim Allchin of Microsoft and asked him what Microsoft thought of microkernels as an operating system philosophy. I don't remember his exact words, but his point was that there was no value in following a philosophy for its own sake. They made real products for real people to use, so practical considerations were important. What he was talking about was the performance burden of the microkernel model and how much of it was worthwhile.
The segregation of processes and privilege modes vastly increases the number of privilege transitions and task switches and creates a heavy performance burden. This performance burden was, at least rumors said, the death of IBM's Workplace OS. The Wikipedia article on Workplace OS
says that the product was released for PowerPC, but I don't think that's true. My memory was that it never even reached beta and was dropped because the performance of alpha versions was so awful that only massive improvements in hardware performance could save it, and those didn't seem to be coming soon. I remember reading once that the system took 45 minutes to boot.
The original designs of Windows NT tried to use a microkernel model, but the company lost the purity of its focus once the performance issues became more clear. It was in NT 4.0, if I'm not mistaken, that Microsoft put the NT graphics code back into kernel mode, and this made a huge difference in workstation performance, albeit at the cost of some system stability, or at least at risk to system stability.
Here we are, 14 years after the death of Workplace OS and Microsoft's return to the monolithic kernel and what do you know, hardware performance improvements have been considerable. Single processors have multiple cores; single servers have dozens of cores. Microsoft has a recent history of over-reliance on hardware improvements, which has been a problem for Vista, but it's a core philosophy of the company to plan for the next generation of hardware, not the current one. This approach has generally worked well for it.
So what about Windows 7? Will it have a microkernel? In this video Microsoft Distinguished Engineer Eric Traut discusses Windows 7 and the MinWin kernel
and briefly demos MinWin. Other reports have indicated that MinWin will be the kernel in Windows 7. But Traut says more than once that it's an internal project and that Microsoft has no specific productization plans. In fact, as far as I can see he doesn't actually demo Windows 7 (although the placeholder EULA for it is already up and running
Traut also says that MinWin is where Microsoft wants to go with Windows and points to Windows Server 2008 Server Core as an example of this philosophy, albeit hardly a microkernel. MinWin consumes about 40MB on disk and the only user interfaces are through a terminal and its HTTP server. Server Core consumes about 1.5GB, but comparatively little of that is in the kernel and in memory it's far smaller, especially depending on the server role.
MinWin isn't exactly a microkernel in the classic sense, but there's a lot in common in the philosophies. Windows has been putting more into user mode for example. Look for major changes to show up over the long term though. The changes in Windows 7 will seem incremental.
Security Center Editor Larry Seltzer has worked in and written about the computer industry since 1983.
Check out eWEEK.com's
for the latest security news, reviews and analysis. And for insights on security coverage around the Web, take a look at eWEEK.com Security Center Editor Larry Seltzer's blog Cheap Hack.