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

Да, это возможно. Но требует большого количества усилий достигнуть того, что Вы хотите.

Для получения дополнительной информации можно проверить Звукопоглощающий щит проект Linux.

GoboLinux является бесплатной операционной системой и операционной системой с открытым исходным кодом, наиболее яркой чертой которой является перестройка традиционной файловой системы Linux. Вместо того, чтобы следовать Стандарту Иерархии Файловой системы как большинство подобных Unix систем, каждая программа в системе GoboLinux имеет свое собственное дерево подкаталога, где все ее файлы (включая настройки, специфичные для той программы), могут быть найдены. Таким образом программа "Нечто" имеет все свои определенные файлы и библиотеки в/Programs/Foo. По словам разработчиков GoboLinux, это приводит к более чистой системе.

3
20.12.2014, 23:56
2 ответа

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

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

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

4
27.01.2020, 21:16

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

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

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

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

Applications просит ядро ​​открывать файл, ядро ​​вызовов файловую систему пользователей, пользовательские вызовы ядра для доступа к диску, Userspace FS отправляет данные в ядро , ядра заказывает данные о приложении пользователя.

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

1
27.01.2020, 21:16

Теги

Похожие вопросы