Понимание аппаратных средств printf

Я задавался вопросом, были ли какие-либо ресурсы, доступные онлайн, который объясняет, что происходит с чем-то, как printf C, который объясняет, что продолжается на очень низком уровне (BIOS/вызовы ядра)

12
задан tipu 16 March 2010 в 19:59
поделиться

4 ответа

Linux:

printf () ---> printf ( ) в библиотеке C ---> write () в библиотеке C ---> системный вызов write () в ядре.

Чтобы понять интерфейс между пространством пользователя и пространством ядра, вам необходимо знать, как работают системные вызовы .

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

Краткий справочник по системным вызовам Linux (ссылка в формате pdf) может быть полезен, поскольку он определяет, где в исходном коде ядра вы можете начать поиск.

27
ответ дан 2 December 2019 в 04:33
поделиться

Что-то вроде printf или конкретно printf? Это несколько расплывчато.

printf выводит в поток stdout FILE *; то, с чем это связано, зависит от системы и, кроме того, может быть перенаправлено на любое другое потоковое устройство, для которого ОС предоставляет подходящий драйвер устройства. Я работаю во встроенных системах, и чаще всего stdout по умолчанию направляется на UART для последовательного ввода-вывода - часто это единственное поддерживаемое устройство потокового ввода-вывода, и его нельзя перенаправить.В ОС с графическим интерфейсом пользователя для приложений консольного режима вывод «рисуется» графически в определенном системой шрифте терминала в окно, в Windows, например, это может включать вызовы GDI или DirectDraw, которые, в свою очередь, обращаются к драйверу устройства видеооборудования. В современной ОС для настольных ПК вывод символов консоли вообще не задействует BIOS, кроме, возможно, начальной начальной загрузки.

Короче говоря, обычно существует огромное количество программного обеспечения между вызовом printf () и оборудованием, на котором он выводится.

4
ответ дан 2 December 2019 в 04:33
поделиться

По определению, вызовы BIOS и ядра зависят от платформы. Какая платформа вас интересует? Несколько ссылок на информацию, связанную с Linux, уже были размещены.

Также обратите внимание, что printf может даже не привести к вызову BIOS или ядра, поскольку на вашей платформе может не быть ядра или BIOS (встроенные системы - хороший пример этого).

1
ответ дан 2 December 2019 в 04:33
поделиться

Это очень зависит от платформы. С аппаратной точки зрения внутренняя реализация printf () может быть направлена ​​на последовательный порт, несерийный ЖК-дисплей и т. Д. Вы действительно задаете два вопроса:

  1. Как printf () интерпретирует аргументы и формат. строка для генерации правильного вывода?

  2. Как вывод передается от printf () на ваше целевое устройство?

Вы должны помнить, что ОС, ядро ​​и BIOS не требуются для работы приложения. Встроенные приложения обычно имеют printf () и другие подпрограммы ввода-вывода, которые записывают в символьный кольцевой буфер. Затем прерывание может опросить этот буфер и манипулировать оборудованием вывода (ЖК-дисплей, последовательный порт, лазерное шоу и т. Д.), Чтобы отправить буферизованный вывод в правильное место назначения.

1
ответ дан 2 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: