Операционная система Oberon написана на языке Oberon, о чём подробно рассказывается в учебнике "Проект Оберон". Раз ты спрашиваешь о том, какой язык использовать, значит, ни одного учебника по написанию операционных систем ты не читал - ни Вирта, ни Таненбаума, ни других авторов.
Обычно ядро операционной системы содержит минимальный объем asm-кода, а для написания основной массы кода ядра и драйверов используется "системный" язык программирования: чаще всего C, намного реже C++, в качестве кандидатов можно рассмотреть Rust и Ada...
Для системных утилит можно использовать практически любой язык программирования.