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

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

  • Загрузка драйвера WiFi приводит к неустойчивости всей системы. Как отлаживать?
  • Модуль ядра VirtualBox, устанавливающий проблему
  • Почему kworker потребляет столько ресурсов на Linux 3.0.0-12-server?
  • Добавление файлов в образ initramfs - надежный?
  • Есть ли какие-либо онлайн-хранилища ячеек или сайты для обмена (возможно, для ноутбуков)
  • Выберите ядро ​​для определенного оборудования
  • Загрузка зашифрованного корневого раздела происходит после обновления системы
  • vga_switcheroo не в / sys / kernel / debug в 2.6.35-22 (kubuntu maverick)
  • Как просмотреть и изменить размер памяти ядра?
  • Отладка модуля ядра
  • Debian: установка прошивки blob для USB-адаптера Intel Wifi
  • Загрузка внешнего модуля в подписанное ядро?
  • 2 Solutions collect form web for “Почему пользовательское пространство медленнее ядра?”

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

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

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

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

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

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

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

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

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

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