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

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

  • Безопасное изменение конфигурации ядра Linux программно
  • Ядро Gentoo не загружается
  • Модули ядра Virtualbox не загружаются при загрузке
  • Как сбрасывать журналы dmesg AKA Kernel в один .txt-файл из загрузки ядра?
  • Как получить SPI для работы с allwinner A20 с ядром 4.4
  • Как исправить ненадежную карту Realtek Wireless на Ubuntu 13.04
  • Как отлаживать вставленный модуль ядра?
  • Высокий уровень softirq при использовании сети контроля скорости
  • 2 Solutions collect form web for “Почему пользовательское пространство медленнее ядра?”

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

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

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

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

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

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

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

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

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

    Interesting Posts

    Инструмент мониторинга без веб-интерфейса

    удаленное подключение к RHEL с X-сервером из Windows

    Как я могу перечислить содержимое архивного архива без его запуска?

    «Список аргументов слишком длинный» при выполнении cut и sed в подоболочке для установки переменной

    Каббал умирает на NixOS в KVM

    Закройте необходимые порты

    Копирование файлов в bash

    Как установить bash на FreeBSD

    Можно ли перемещать содержимое экрана?

    Нечетный синтаксис для команды ssh и bash для запуска

    Список всех пользователей и последний раз, когда они читают почту, переходят на несколько выходных данных

    В чем разница между терминалом root и sudo?

    Скомпилировать программу без доступа sudo

    Как использовать один и тот же адаптер Wi-Fi для подключения к беспроводной сети и одновременно передавать AP?

    При объединении каталогов с одинаково названными файлами, как вы гарантируете замену только меньших + более ранних файлов?

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