В основном на простом C со вставками на языке ассемблера. Впрочем, справедливости ради, надо сказать, что при написании ядра Linux язык C использовался не в чистом виде, а с набором расширений GNU. Что касается Windows, то и она, как ни странно, большей частью написана на простом C (для облегчения переносимости, так как первые версии Windows NT были предназначены для довольно большого числа архитектур), хотя объектно-ориентированный подход, конечно же, использовался (как никак уже начинались девяностые годы XX века). Код BSD, потомком которой (по большей части) стала Mac OS X, также был написан в основном на C и языке ассемблера.
---
P.S.
Вообще C++ представляет собой объектную реализацию языка C, так что он отличается от своего прародителя чуть большим уровнем абстракции, но в синтаксисе особых различий нет. На C++ писать проще, быстрее, но он менее "прозрачен" для программиста, что, по ряду причин, не есть гуд для написания низкоуровневых модулей.
си пи пи
ми ку ти