#c #operating-system #printf #cpu
#c #операционная система #printf #процессор
Вопрос:
Функция printf в C не является системным вызовом, но она должна работать с системными вызовами, чтобы вывести строку.
Таким образом, можем ли мы сказать, что printf работает в режиме ядра (привилегированный режим процессора)?
Комментарии:
1. Если бы вы могли так сказать, вы могли бы сказать, что любой вызываемый код
printf
также выполняется в режиме ядра.
Ответ №1:
Printf должен выполнять системные вызовы для вывода строк, поскольку он непривилегирован. Если бы он выполнялся в привилегированном режиме, ему вообще не требовались бы системные вызовы.
Ответ №2:
Нет, просто потому, что что-то вызывает программу в режиме ядра, не означает, что это также программа в режиме ядра. Программы, использующие printf, по-прежнему выполняются в пользовательском режиме, printf просто вызывает ОС (которая является программой в режиме ядра) для выполнения частей printf.
Ответ №3:
printf
это функция в C
библиотеке, которая загружается и запускается в пользовательском процессе, в пользовательском режиме.
В тот момент, когда он вызывает системный вызов для вывода выходных данных на терминал, процессор передает управление ядру и одновременно переворачивает привилегированный бит.