Низкоуровневое системное программирование на C ++

StackOverflow https://stackoverflow.com/questions/4250692

  •  27-09-2019
  •  | 
  •  

Вопрос

Я уже некоторое время использую C ++, и я начал интересоваться системным программированием более низкого уровня, таким как драйверы и прочее.Даже какая-нибудь примитивная операционная система могла бы стать очень интересным проектом!

Я понятия не имею, с чего я мог бы начать.Есть ли какие-нибудь не слишком сложные вещи, с которых я мог бы начать, и есть ли что-нибудь в C ++, чего я должен стараться избегать, например, исключений в коде, критичном к производительности?

Моя текущая ОПЕРАЦИОННАЯ система - Windows 7, если это имеет большое значение.

Это было полезно?

Решение

Написание драйверов устройств Windows в C ++ не невозможно, существует не так много функций CRT, которые вы могли бы использовать, чтобы попасть в беду. Новый оператор неисправна, например, вам не нужно бояться std :: bad_alloc. Если вы не замените его, это вырезает довольно большой полос стандартных классов библиотеки C ++.

Но это не совсем точка драйвера устройства, довольно важно, чтобы вы делали его как можно меньше. C ++ окупается, когда вы пишете сложный код. Вы явно делаете нет Хотите написать сложный код в драйвере устройства. Отладка это Redrum.

Линус действительно любит C в ядре. Там есть веская причина для этого.

Другие советы

Посмотри на osdev.org. (Много вопросов, которые будут высказаться в ваш разум при рассмотрении рассмотрения ваших собственных ОС, ответы здесь).

C ++ не предоставляет не совсем все инструменты, которые вам нужно будет реализовать полную операционную систему в нем. Есть несколько вещей, которые не могут быть сделаны в C ++. Эти вещи обрабатывают и повышают прерывания, контролирующие MMU, контролируют доступ к инструкциям CPU Supervisor и горстки других небольших шансов и заканчивается.

К счастью, эти вещи недостаточно, чтобы их можно было написать на языке сборки, доступ к которому C ++.

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

У меня есть услышанный недавно выпущенная операционная система Symbian с открытым исходным кодом написана с использованием C и C ++.Не уверен, какие части этого выполнены с помощью C ++, поскольку я не читал базу кода.Подумайте о том, чтобы разобраться в этом.

Kerneltrap.org есть несколько очень хороших дискуссий о том, почему ядро Linux не имеет C ++ в своей кодовой базе.Подумайте о том, чтобы прочитать и это тоже.

Symbian OS написана в варианте C ++. Конечно, есть код сборки для низкоуровневых вещей, но все это завернут. Вы не можете использовать исключения, а для драйверов в реальном времени вы не можете делать нормальные вещи, такие как динамическое распределение памяти, даже в C.

рекомендую C Язык программирования и ассемблер. Я не уверен, может ли можно с низким уровнем с C ++.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top