Существует несколько языков, которые вы можете использовать "из коробки" для написания ОС, например C ++, D, сборка.
Если вы хотите использовать такой язык, как C #, Java или VB, вам понадобится среда исполнения (включая JIT-компилятор в некоторых из этих случаев). Это означает, что вам придется НАПИСАТЬ эти среды выполнения, и вы не сможете сделать это на языке, подобном Java. Тогда вам придется написать код времени выполнения на языке, подобном C / C ++ / Assembly, а время выполнения может загрузить код Java / VB.
Альтернативой является написание нового компилятора для C # / Java / VB, который будет компилироваться в машинный код или сборку. Это будет работать, но у вас будет много проблем с использованием таких языков, как VB или Java на уровне OS / Executive, поскольку они не позволяют вам осуществлять доступ к памяти, как это делает C / C ++. Ни один из них не позволяет запускать инструкции процессора напрямую.