Что такое ядро?

Эксперименты с ядром

Обычно первый шаг в оптимизации FreeBSD – конфигурирование ядра (kernel). Новичков в администрировании UNIX слово ядро может устрашить. Ведь ядро – это одна из тех скрытых частей системы, которые не предназначены для дилетантского вмешательства простых смертных. Действительно – в некоторых версиях UNIX непосредственные манипуляции с ядром немыслимы. Компания Microsoft вообще замалчивает факт наличия ядра в своих операционных системах, как бы ставя под сомнение наличие мозгов у пользователей.1 Хотя опытные пользователи могут получить досту п к ядру тем или иным способом, тем не менее такая возможность не предназначена для широких масс. Впрочем, в мире UNIX с открытым исходным кодом вмешательство в работу ядра считается приемлемым и даже ожидаемым способом улучшить производительность системы. Вероятно, если есть такая возможность, это наилучший способ и для настройки других систем.

Ядро FreeBSD можно настраивать динамически, или изменять на лету. При необходимости можно изменять большинство аспектов системной производительности. Далее будет обсуждаться интерфейс sysctl ядра и его применение для модификации рабочего ядра.

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

Ядро FreeBSD имеет модульную архитектуру, что позволяет загружать и выгружать целые участки ядра, включая или выключая целые под-

Здесь я мог бы добавить массу комментариев, но все они будут слишком мягкими. У меня есть кое-какие принципы, и вы об этом знаете.

системы по мере необходимости. Это очень удобно на данном этапе развития сменных устройств, таких как PC-карты и устройства USB. Загружаемые модули могут оказывать воздействие на производительность и поведение системы, а также на поддержку аппаратных устройств.

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

Ядро (kernel) имеет много разных определений. Значительная их часть абсолютно сбивает с толку. Некоторые определения являются технически корректными, но непонятными для начинающих пользователей, тогда как другие совершенно неправильные. Следующее определение не претендует на полноту, но оно понятно и удовлетворяет нашим целям: ядро – это интерфейс между аппаратным и программным обеспечением.

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

Описывать работу ядра легко (по крайней мере, в этой упрощенной манере), но ее трудно выполнять. При взаимодействии с аппаратными средствами различные программы опираются на различные интерфейсы ядра, а аппаратные средства предоставляют свои ресурсы разными способами. Ядро должно справляться со всем этим. Например, ядро поддерживает несколько десятков типов сетевых карт, причем карты каждого типа предъявляют свои требования, которые ядро должно удовлетворить. Если ядро окажется не в состоянии обслуживать сетевую карту, система не сможет подключиться к сети. Программы запрашивают память различными способами, и если программа запрашивает память способом, который не поддерживается ядром, возникает затруднение. При загрузке ядро получает сведения об аппаратных средствах, и их дальнейшая работа определяется полученными сведениями. Значит, этим процессом надо управлять. Некоторые устройства идентифицируют себя довольно дружественным, по отношению к ядру, способом, а другие накрепко блокируются при попытке узнать, что это за устройства и для чего они предназначены.

Фактически, ядро и его модули – это файлы в каталоге /boot/kernel. Файлы, находящиеся за пределами этого каталога, не являются частями ядра; эти файлы и программы называются пользовательским пространством (userland), то есть они предназначены для пользователей, даже если они во время работы обращаются к ядру.

Поскольку ядро – это всего лишь набор файлов, вы можете создавать свои, альтернативные ядра, предназначенные для особых случаев. В системе, где была выполнена сборка собственного ядра, можно обнаружить каталог /boot/kernel.old, где находится ядро, работавшее до того, как была выполнена установка текущего ядра. Я предпочитаю хранить ядро, установленное вместе с системой в каталоге /boot/kernel.in- stall. Вы также можете создавать свои собственные ядра. Команда FreeBSD стремится к тому, чтобы сделать настройку и установку ядра как можно проще. Самый простой способ изменить ядро – это использовать интерфейс sysctl.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий