операционная система — Как приложения C ++ напрямую обращаются к оборудованию?

Я узнал, что у c ++ есть много низкоуровневого доступа к оборудованию, поэтому мы пишем драйверы на c ++. Но когда мы напишем обычное настольное приложение на c ++, сможет ли оно получить прямой доступ к оборудованию?
Я спрашиваю об этом, потому что настольные приложения работают на уровне приложений. Уровень ОС и уровень OEM находятся между уровнем приложения и оборудованием. тогда как наше приложение, написанное на c ++, может напрямую обращаться к оборудованию?
пожалуйста, кто-нибудь объясните мне, как именно работают приложения на C ++.

Благодарю.

2

Решение

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

Во встроенной системе доступ к оборудованию можно получить напрямую, обычно через указатель. Таким образом, чтобы записать в регистр UART, можно присвоить адрес регистра указателю и разыменовать указатель.

Многие библиотеки компиляторов обеспечивают поддержку различных платформ и встроенных систем. Я использую компилятор IAR для встроенной системы ARM и программирую на C ++. Мы не используем потоки, так как у нас нет терминального ввода / вывода.

Редактировать 1: пример cout
Например, для печати на консоль через cout или же printfкомпилятор предоставляет библиотеку, которая вызывает функции операционной системы для отображения текста.

Функция операционной системы может отправлять текст непосредственно на консоль или может открывать «окно консоли» и отправлять текст в него.

Функции консоли преобразуют текст в растровые изображения и отправляют растровые изображения в графический контроллер.

Графический контроллер отображает растровое изображение на экране.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]