В чем была причина невытеснения старых ядер Linux?

Да, благодаря FUSE , который позволяет реализовывать файловые системы программами пользовательского уровня. Существует множество файловых систем FUSE, реализующих файлы, хранящиеся не в секторах на диске, а в альтернативных представлениях существующих файловых систем, файлов на удаленной машине, файлов в архиве и т. Д.

Вы можете использовать archivemount для монтирования определенного архива в каталог. Архивы можно изменять.

mkdir foo
archivemount foo.tar.gz foo
ls foo
echo hello >foo/new-file
fusermount -u foo
rmdir foo
tar tf foo.tar.gz

Вы можете использовать avfs для доступа ко всем архивам без необходимости выполнять определенные действия для каждого архива. Avfs создает представление всего дерева каталогов в разделе ~ / .avfs , где каждый архив имеет сопутствующий каталог ARCHIVE-FILE # , который, по-видимому, содержит содержимое файла. Содержимое архива доступно только для чтения.

mountavfs
ls ~/.avfs$PWD/foo.tar.gz\#

15
24.12.2017, 15:38
1 ответ

В контексте ядра Linux, когда люди говорят о вытеснении, они часто имеют в виду способность ядра прерывать себя — по сути, переключать задачи во время выполнения кода ядра. Допустить, чтобы это произошло, довольно сложно, что, вероятно, является основной причиной того, что ядро ​​заняло много времени, чтобы сделать его вытесняемым.

Поначалу большую часть кода ядра все равно нельзя было прервать, так как он был защищен большой блокировкой ядра. Эта блокировка постепенно исключалась из все большего и большего количества кода ядра, что позволяло выполнять несколько одновременных параллельных вызовов ядра (, что становилось все более важным по мере того, как системы SMP становились все более распространенными ). Но это еще не сделало само ядро ​​вытесняемым; , который потребовал еще большей разработки, кульминацией которого сталPREEMPT_RTнабор исправлений, который в конечном итоге был объединен с основным ядром (и в любом случае был способен вытеснять BKL ). В настоящее время ядро ​​можно настроить так, чтобы оно было более или менее вытесняемым, в зависимости от характеристик пропускной способности и задержки, которые вам нужны; подробности см. в соответствующей конфигурации ядра .

Как видно из пояснений к конфигурации ядра, вытеснение влияет на пропускную способность и задержку, а не на параллелизм. В системах с одним ЦП -вытеснение по-прежнему полезно, поскольку оно позволяет обрабатывать события с более коротким временем реакции; однако это также приводит к снижению пропускной способности (, поскольку ядро ​​тратит время на переключение задач ). Вытеснение позволяет любому заданному ЦП в системе с одним или несколькими ЦП быстрее переключаться на другую задачу. Ограничивающим фактором для многопроцессорных -систем является не вытеснение, а блокировки,большой или другой :каждый раз, когда код берет блокировку, это означает, что другой ЦП не может начать выполнение того же действия.

27
20.08.2021, 11:27

Теги

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