Да и нет.
Прежде всего, важно помнить, что независимо от вашего выбора языка, в конце концов, скомпилированный продукт будет на языке ассемблера (или, точнее, машинного кода). Даже интерпретаторы (такие как интерпретатор cpython) в конечном итоге переводят ваши скрипты в машинный код.
Но это, вероятно, чересчур технично и не хватает сути вашего вопроса:
«Могу ли я написать операционную систему на языке более высокого уровня?»
Ответы на это как личные, так и технические.
Во-первых, личная сторона: если вы еще не знаете, как написать операционную систему на смеси ассемблера и языка Си, то у вас нет абсолютно никаких попыток попробовать свои силы в разработке ОС.
Часто у новичков в программировании возникают такие вопросы, потому что они хотят сделать что-то такое же классное, как написание новой ОС, без всякого обучения, необходимого даже для попытки такого проекта. Они задаются вопросом, могут ли языки более высокого уровня обойти все эти грязные занятия.
Так что, если в вашем сердце-сердце это то, что вы ищете, остановитесь сейчас. Остановись, остановись, остановись. Стать хорошим в чем-то - тяжелая работа. Там нет ярлыков. Будьте готовы засучить рукава и получить синдром запястного канала.
Это не мешает идти по пути к возможному дизайну ОС! Если это ваша страсть, то начните с вершины и двигайтесь вниз. Получите книги по сетевым протоколам, управлению памятью, многопоточности и т. Д., Разберитесь с каждой основной подсистемой и познакомьтесь с ней хорошо. Вы не можете написать новый, если не можете использовать старый!
Затем читайте книги по проектированию и внедрению операционной системы, пока вы не мечтаете о методологиях управления процессами.
Помните, что количество необходимых знаний (не только о компьютерных операциях, но и о социальных конструкциях, таких как API) огромно. Это долгое и полезное путешествие. Если вы действительно любите это ремесло, как я, вы будете рады, что вы нашли время, даже если вы никогда не писали ОС.
Теперь технический ответ. Вам понадобится загрузчик, и это должно быть написано на ассемблере. В конце концов, ваш процессор не знает C #. После фазы загрузчика вы можете написать свой код ОС на любом языке, который вам нужен, и он запустится, при условии, что ваш язык может компилироваться в двоичные файлы машинного кода (а не в байт-код!)
Однако даже в нашей нынешней вычислительной среде с «переполнением циклов» операционная система должна быть компактной и эффективной, чего почти невозможно достичь на языке более высокого уровня, особенно на интерпретируемом языке.
Скорее всего, вам нужно будет написать свой собственный компилятор / интерпретатор данного языка в качестве основного компонента вашей ОС. Этот основной компилятор, вероятно, разрешит только ограниченное подмножество языка (и вы начнете загрузку, написав более надежный компилятор на ограниченном подязыке). В противном случае производительность будет ужасной.
Но все это ужасно сложно, и реальное обсуждение проблем требует глубоких знаний, которых вам, вероятно, в настоящее время не хватает. Но если у вас есть желание сделать это, вы можете легко это изменить, и тогда я с радостью буду обсуждать подходы весь день!
Если вам от этого станет легче, я знаю достаточно, чтобы написать операционную систему, и все же сижу и мечтаю, пытаясь выяснить, какую часть ОС я могу написать на python. ;)