Работает ли printf в режиме ядра или в пользовательском режиме?

#c #operating-system #printf #cpu

#c #операционная система #printf #процессор

Вопрос:

Функция printf в C не является системным вызовом, но она должна работать с системными вызовами, чтобы вывести строку.

Таким образом, можем ли мы сказать, что printf работает в режиме ядра (привилегированный режим процессора)?

Комментарии:

1. Если бы вы могли так сказать, вы могли бы сказать, что любой вызываемый код printf также выполняется в режиме ядра.

Ответ №1:

Printf должен выполнять системные вызовы для вывода строк, поскольку он непривилегирован. Если бы он выполнялся в привилегированном режиме, ему вообще не требовались бы системные вызовы.

Ответ №2:

Нет, просто потому, что что-то вызывает программу в режиме ядра, не означает, что это также программа в режиме ядра. Программы, использующие printf, по-прежнему выполняются в пользовательском режиме, printf просто вызывает ОС (которая является программой в режиме ядра) для выполнения частей printf.

Ответ №3:

printf это функция в C библиотеке, которая загружается и запускается в пользовательском процессе, в пользовательском режиме.

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