Correct me if I'm wrong, but I always assumed the only reason for this was a historical one.
My understanding is there is (or has been a big debate raging as to whether C++ should be allowed in the Linux Kernel.
The closest I can seem to come up with at the moment is
[quote=http://kernelbook.sourceforge.net/kernel-hacking.pdf]Using C++ in the kernel is usually a bad idea, because the kernel does not provide the necessary runtime
environment and the include files are not tested for it. It is still possible, but not recommended. If you
really want to do this, forget about exceptions at least.
[/code]
The target platform(s) for the OS is likely to have some effect on the decision, for instance it would be foolish to write a portable lite OS aimed at micro controllers in C++ since that particular group of processors are the ones where you still find C compilers but no C++ compilers in some instances.
Other reasons I can see for using C rather than C++ are complexity. It is easy to think of the difference between C and C++ as small, C++ is just C with classes. But this is wrong (and is also what leads to the vast number of C programmers who think they can program C++ when in fact all they know is the slightly altered syntax). C++ is actually vastly more complex than C, which is of course one of the reasons it is more powerful.
C++ does not have all the problems and pits falls that C does, but that doesn't mean it is perfect, it has it's own problems and pitfalls and it is just as it is possible to shoot yourself in the foot with C if it is not used correctly so it is equally possible to do it with C++ if not used correctly just in more interesting and esoteric ways.
However because C is less complex than C++ it is (IMO necessarily) easier to test the codes hardness or robustness which say in military project would have a high importance.
I readily admit that none of these sound like particularly strong reasons for using C rather than C++ for an OS (apart from lack of a C++ compiler for the platform in question) but I can only say that I have had contact with 5 - 10 OSs during my career so far and without exception all of them were written in C.
However if you search for OSs written in C++ using Google you will find some although they appear relatively new projects, not particularly well developed.
I imaging that history is something to do with this, OSs have been around longer than C++ (and C for that matter) the ones people know well have had time to develop and mature. Perhaps it is simply that when the foundations of these OSs (1991 for Linux) where laid down C++ was not mature enough to be considered as a option for writing the OS. Maybe in 10 years time OSs in C will be the exception rather than the rule.
Anyone Want to start a "Lets Write and Operating System in C++" thread?