Intereting Posts
.htaccess для перенаправления URL-адреса с hashtag Как удалить первый символ в определенном столбце, используя sed Сброс конфигурации xmodmap после времени Переименование пакетного файла с использованием файла сопоставления Проблема с grep, egrep в solaris Почему sed меняет разрешения файла на cifs, установленном share? gpg не позволит мне изменить мою кодовую фразу AWK: Как поместить поле ($ 1) внутри регулярного выражения, чтобы выбрать все префиксы? Не удается установить ПК BSD есть ли способ перечислить все «идентификаторы индексов» (ключи) в переменной ассоциативного массива bash? # чтения / записи для LVM и «регулярного» разделения? Изменение размера окна терминала для командной строки ipython Как использовать панель Cinnamon при использовании Awesome Window Manager в Cinnamon? Как очистить каталог / tmp при перезагрузке? Gnome – окна всегда открываются вверху слева

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

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

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

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

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

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

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

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

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

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

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