There have been experimental operating systems written in a variety of languages, including C# (Singularity, SharpOS), Java (JavaOS, JX), and Lisp (various Lisp machines).
Why then are C (and to a lesser degree C++) the dominant languages used for developing an operating system kernel? Is there something about C that makes it especially well-suited for use in kernel programming, or is it more for historical reasons?