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

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

2 Solutions collect form web for “Почему пользовательское пространство медленнее ядра?”

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

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

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

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

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

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

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

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

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

  • Ошибка: TCA_HTB_PAD не объявлен при создании ядра
  • Ядра разных дистрибутивов Unix и Linux
  • модуль печатает в журнал ядра с задержкой
  • Слияние части ядра - лучший способ?
  • Установите драйвер rtl8188etv / rtl8188eu на Orange-Pi
  • Зачем нам нужны initramfs и initrd
  • Как избежать переполнения буфера кольца printk ядра?
  • Создание последовательной консоли для подключения последовательного USB-устройства
  • Как подделать файловую систему, которая не может быть установлена ​​другими пользователями
  • Почему некоторые операции обработки событий в операционной системе записываются в asm вместо c?
  • Признание таблицы разделов GPT, созданной с разным размером логического сектора
  • cat: write error: Недопустимый аргумент
  • Interesting Posts

    Я не могу убить xfwm4

    Записи рабочего стола в LXDE – как их отладить?

    Обнаружение физических сетевых адресов надежно

    Не могу понять, как вернуться к резервному файлу профиля

    Как определить интерфейс RUNNING без ifconfig?

    Несмотря на то, что правильное разрешение не позволяет катать файл

    Цитирование через unix-даты

    Перекомпилируйте ядро ​​без модулей, которые в настоящее время не используются

    Восстановите RAID1 с существующего диска и добавьте еще один

    Как получить информацию о ходе выполнения однолинейной игры mplayer?

    Стойкая функция blockdev setra для чтения вперед

    Установка статических разрешений для общих папок

    используя awk для создания нового файла, приводит к проблемам с использованием одного конкретного столбца, не может понять, что не так

    понять выход stty -a и изменить ctrl backspace на простое backspace

    Приятно игнорировать псевдонимы?

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