SaneBarbarian
@SaneBarbarian
Зеленый

В какой памяти работают системные вызовы Libc?

Разбираюсь с User Space и Kernel Space, узнал что в Кернел спэйсе запускаются процессы самого ядра, ака тот код который загрузился из-под Кернел. Юзерспэйс это память где работают стандартные юзер процессы.
Вопрос в том, что процессы вызваные из Libc (glibc) работают в Kernel или User спэйсе, или и там и там? ( как знаю у нас постоянно при системном вызове идет обращение к libc)
Поправьте меня пожалуйста если плаваю....

Спасибо.
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
процессы вызваные из Libc (glibc) работают в Kernel или User спэйсе

libc -- часть пользовательского процесса. Она обращается к ядру через системные вызовы. Системные вызовы выполняются ядром в kernel space. libc делает дополнительную обработку в user space, например преобразует коды ошибок и обновляет errno.

Например, программа вызывает printf (3), libc в цикле разбирает форматную строчку и вызывает системный вызов write (2), выполнение переключается в режим ядра, ядро выводит символы в stdout текущего процесса, выполнение возвращается в user space, libc проверяет что не было ошибок и либо продолжает цикл до конца форматной строчки, либо обновляет errno и возвращает результат.

Некоторые функции libc выполняются целиком в userspace, например sprintf (3).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы