Почему пользовательское пространство медленнее ядра?

Я слышал, что файловые системы на базе FUSE, как известно, медленны, потому что они реализованы в программе пользовательского пространства. Что это о пользовательском пространстве, которое медленнее ядра?

  • Безопасное изменение конфигурации ядра Linux программно
  • Что такое linux долгосрочные ядра поддержки?
  • Какая информация находится в битах управления доступом таблицы страниц?
  • YUM не будет обновлять KERNEL
  • Удаление образа спасения из / boot на Fedora
  • Потребность в структуре thread_info в Linux 2.6 Ядро
  • Где хранятся глобальные переменные ядра?
  • Генерировать основные ошибки страницы
  • 2 Solutions collect form web for “Почему пользовательское пространство медленнее ядра?”

    Код выполняется с той же скоростью, независимо от того, находится ли он в ядре или на земле пользователя, но есть вещи, которые код ядра может делать непосредственно, в то время как пользовательский код земли должен прыгать через обручи. В частности, код ядра может напрямую сопоставлять память приложения, поэтому он может напрямую копировать содержимое файла между памятью приложения и внутренними буферами или копировать аппаратное обеспечение. Пользовательский код должен либо сделать дополнительную копию через трубу или сокет, либо выполнить более сложную операцию обмена памятью.

    Кроме того, каждая файловая операция должна проходить через ядро ​​- единственный способ взаимодействия процесса с чем-либо – через системный вызов. Если операция файла выполняется полностью внутри ядра, есть только один переход между пользователем / ядром и один переход ядра / пользователя для выполнения, что довольно быстро. Если операция файла выполняется другим процессом, должен существовать контекстный переключатель между процессами, что требует гораздо более дорогостоящей операции в MMU .

    Производительность по скорости по-прежнему незначительна против большинства времени доступа к аппаратным средствам, но это можно наблюдать, когда аппаратное обеспечение не является узким местом, тем более, что многие аппаратные операции могут выполняться асинхронно, в то время как основной процессор выполняет что-то еще, тогда как контекстные переключатели и копии данных между процессами процессор занят.

    Очень упрощено:

    Ваше приложение хочет прочитать файл

    Приложение запрашивает ядро, файловая система доступа к файлу ядра (в пространстве ядра) проверяет разрешения, обрабатывает дескриптор файла для приложения.

    С файловыми системами пользовательского пространства у вас намного более медленные переключения между ядрами и пользователями:

    Приложение запрашивает ядро ​​для открытия файла, ядро ​​вызывает файловую систему userpace, userpace fs вызывает ядро ​​для доступа к диску, userpace fs отправляет данные в ядро, передает данные ядра в приложение userpace.

    С файловыми системами userpace у вас гораздо больше контекстных переключателей.

    Linux и Unix - лучшая ОС в мире.