|
Интервью с Джонатаном Корбетом TanaT Xakep, номер #054, стр. 054-080-4 JC: Ядро делает все то, что не может быть выполнено в пространстве пользователя. Это означает контроль над доступом к ресурсам: ядру, файловой системе, устройствам и т.д. Некоторые задачи, которые могут быть выполнены на более высоком уровне, внесены в ядро для увеличения производительности. Например, сетевое взаимодействие. Иногда пользователи сами добавляют некоторые функции в ядро по той же причине. Например, сетевой сервер TUX (доступен как отдельный пакет) предоставляет сетевые услуги прямо на уровне ядра (с впечатляющей скоростью, надо сказать). Критерием является интерфейс системных вызовов: пользовательский уровень и ядро общаются между собой вызовами типа open() (функция служит для открытия файла и доступа к данным), fork() (основная функция API процессов, используется для создания нового процесса) и т.п. Х: То есть ядро контролирует работу файловой системы? JC: Да. Хотя возможно реализовать файловую систему на более высоком уровне, этого никто не делает. Опять же из соображений производительности. Скорость файловой системы составляет скорость всей системы в целом. Поэтому поддержка файловых систем, которыми пользуются наиболее часто, включена в ядро. Х: Считается, что ядро Linux не содержит никаких решений для ускорения работы графических сред. Конечно, оболочек для Linux довольно много. Но сегодня можно выделить сверхпопулярные GNOME и KDE. Почему не включить в ядро Linux поддержку этих графических сред? Для увеличения производительности. Почему третьи лица не выпускают ядра с поддержкой графических оболочек? JC: Ну, например, ядро 2.5 имеет встроенный слой буфера кадров. Он используется для доступа к видеоустройствам. Хотя не ясно, насколько эффективен данный метод, ведь и Х-сервер предоставляет хороший низкоуровневый доступ к видеоустройствам. Перенос Х-сервера в ядро увеличил бы его до гигантских размеров. Это также означало бы, что любые ошибки и проблемы безопасности в Х-сервере (это довольно большое приложение само по себе) могут с легкостью положить на лопатки всю систему. К тому же выгоды от такого переноса не очень ясны. Поэтому никто и не хочет так делать. Если говорить о GNOME и KDE, то они являются приложениями более высокого уровня, чем Х-сервер. Поэтому у них еще меньше причин попасть на уровень ядра. Х: Возвращаясь к файловой системе: зачем Linux поддерживает несколько разделов? Windows, к примеру, использует один большой NTFS или FAT32 раздел, а Linux минимум два: Linux native и swap. Чем это обусловлено? JC: Linux может работать и без swap, а Windows может использовать swap. Здесь нет никакого различия. Swap это лишь способ расширить оперативную память. Инсталляция Linux может разбить файловую систему на несколько разделов (а может и не разбивать). Существует несколько причин, почему следует так сделать: - Если в одном разделе не хватит места, это никак не отразится на остальных; - Если каким-либо образом один раздел будет поврежден, другие останутся целыми; - Вы можете использовать разные файловые системы в разных разделах. Например, ext3 для основной файловой системы, XFS для раздела, содержащего огромные научные базы данных. |