Почему люди не используют С++ для создания операционных систем

Почему Linux, MacOS и другие операционные системы написаны на C, а не на С++? Не С++ C с новыми функциями?

Ответы

Ответ 1

Очень короткий ответ заключается в том, что совершенно не создавались совершенно новые операционные системы любого значения, поскольку С++ достигла зрелости в конце 90-х годов. И использование С++ само по себе не является достаточной достаточной причиной для полной перезаписи существующей успешной ОС.

Ответ 2

С++ широко используется для операционных систем. В ней записаны большие части Windows.

Но ОС не одна монолитная блоба. В нем есть разные слои и компоненты. Несколько битов и частей в значительной степени должны быть записаны в сборке, потому что нет никакого портативного способа их реализации: это низкоуровневая обработка процессора и другого оборудования, которое абстрагируется от языков программирования более высокого уровня.

Затем есть слой, который может быть написан на языке более высокого уровня, но он просто не может полагаться на другой код. Он предоставляет несколько базовых услуг, которые необходимы для следующего уровня, и поэтому он должен просто работать сам по себе.

С++ можно использовать там, но есть некоторые ограничения. С++ требует, чтобы библиотека времени выполнения выполняла довольно немного функциональности (например, обработку исключений), которая может быть недоступна (или что может быть нежелательно сделать доступным на этом уровне), и поэтому C может быть лучшим решением там, (Хотя альтернативный вариант - использовать С++, но просто избегайте функций, которые полагаются на эту недостающую функциональность)

Но чем больше вы получаете, тем больше абстракций и сервисов ОС и библиотек времени исполнения могут быть доступны, а языки более высокого уровня станут подходящими.

Так что С++ может быть и широко используется в операционных системах. Просто не на каждом уровне.

Ответ 3

Если вы посетите osdev.org, вы обнаружите, что многие люди действительно используют С++ для Разработка ОС. На самом деле есть страницы в wiki, специально посвященный чтобы продемонстрировать основы этого. Многие операционные системы для хобби (мои собственные включены) написаны на С++ с достаточной степенью успеха, насколько это возможно.

Однако основные операционные системы, такие как windows, linux и osx, были в основном написаны до того, как С++ считался зрелым. Не имеет смысла модифицировать код для поддержки нового языка (хотя, честно говоря, нетрудно получить большинство С++, поддерживаемых на земле ядра, исключения и rtti - единственные реальные неприятности).

Некоторые люди могут сказать, что, поскольку нет тривиального получения rtti и исключений в ядре, тогда нет большого преимущества для использования С++. Я не согласен, С++ - отличный язык для разработки ядра. шаблоны - отличный инструмент для написания эффективного общего кода. Даже такие вещи, как связанные с безопасным типом списки, очень легко реализовать с помощью С++ без необходимости чего-либо, кроме шаблонов. Кроме того, многие вещи в ядрах по своей сути являются объектно-ориентированной задачей, в то время как вы можете четко моделировать эти вещи с помощью хорошо, почему бы не использовать язык, который более легко моделирует их. Это лишь некоторые из преимуществ.

Ответ 4

Вопрос: "Какие новые возможности С++, по вашему мнению, позволят разработать более быструю или более безопасную или оптимизированную или отличную ОС и?

Второй вопрос: "Какая основная ОС была разработана , поскольку С++ действительно достигла совершеннолетия?"

(Обратите внимание, что одним из возможных ответов является Be, который, я думаю, использовал С++... Ah, wikipedia говорит, что API был С++, что не совсем одно и то же.)

Ответ 5

С++ раньше был "c + новыми функциями". Но это было давно. Конечно, это зависит в некоторой степени от вашего компилятора С++, но язык развился и теперь содержит важные синтаксические различия. "c + новые функции" упрощают ситуацию.

Но ваш вопрос посылка также ошибочен - Linux и OS X, как сообщается, обе имеют значительное количество не только кода C, но также и С++ и raw assembly в них.

Ответ 6

Изначально С++ не используется по соображениям производительности. На этом этапе все эти ОС были разработаны на C + asm и переписаны на С++, и никто не будет. Также С++ не так очевиден, как C. В частности, из-за этого Linus Torvals не нравится С++. http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918

Ответ 8

Я понимаю, что eCos полностью написан на С++ и предоставляет интерфейсы C.