Драйверы и ядро
Категория: Драйверы и ядро | Автор: admin | 27-12-2009, 05:02

UNIX-систему можно разбить на три основных уровня:

  • аппаратные средства;
  • ядро операционной системы;
  • пользовательские программы.

 

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

  • процессы (защита адресных пространств, разделение времени и ресурсов процессора);
  • сигналы и семафоры;
  • виртуальную память (выгрузка,  подкачка, отображение виртуальных адресов в физической памяти);
  • файловую систему (файлы, каталоги, пространство имен);
  • межзадачное взаимодействие (каналы и сетевые соединения).

 

Ядро содержит драйверы устройств, которые управляют отдельными элементами аппаратного уровня; остальная часть ядра в основном не зависит от внешних устройств. Взаимосвязь ядра и драйверов устройств аналогична связи между ядром и процессами пользовательского уровня. Когда процесс просит ядро прочитать первые 64 байта файла /etc/passwd, ядро транслирует эту просьбу в команду драйвера устройства, например "выбрать блок 3348 из устройства 3". Драйвер представляет эту команду в виде последовательности двоичных кодов, которые посылаются в управляющие регистры устройства.

Ядро написано преимущественно на языке С, но для низкоуровневой обработки частично использовался язык ассемблера. Много лет назад объектный код ядра UNIX имел довольно умеренные размеры (обычно гораздо меньше половины мегабайта). За последние годы на уровне ядра были реализованы сетевые и многопотоковые функции, а стоимость микросхем памяти сильно упала, поэтому теперь ядро занимает от 400 Кбайт до более чем 15 Мбайт.

Просмотров: 2938 | | Комментариев: 0
  Типы ядер
Категория: Драйверы и ядро | Автор: admin | 27-12-2009, 05:07

Все UNIX-системы позволяют пользователю предоставить ядру явную информацию о том, какие аппаратные средства присутствуют в системе. Некоторые ядра могут самостоятельно искать устройства.

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

Как и в Solaris, в HP-UX поддерживается относительно небольшой и четко определенный круг аппаратных устройств. Как правило, система самостоятельно находит устройства без особого вмешательства пользователя.

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


Просмотров: 2912 | Подробнее... | Комментариев: 0
  Зачем нужно конфигурировать ядро
Категория: Драйверы и ядро | Автор: admin | 27-12-2009, 05:09

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

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

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

 

 

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

Компилировать ядро не так уж сложно. Сложнее восстановить его работ, если что-то было сделано не так.


Просмотров: 2715 | | Комментариев: 0
  Конфигурирование ядра в Solaris
Категория: Драйверы и ядро | Автор: admin | 27-12-2009, 05:13

На этапе загрузки ядро Solaris опрашивает системную шину на предмет наличия устройств и инициализирует драйвер для каждого найденного устройства. Ядро поддерживает концепцию загружаемых модулей и загружает код только для тех устройств, которые реально присутствуют (если не поступило других указаний).

Благодаря средствам автоматического конфигурирования в Solaris редко возникает необходимость создавать собственное ядро. В идеальном мире ядро Solaris правильно идентифицировало бы свою аппаратную среду в 100% случаев. К сожалению, нестандартные или просто дефектные устройства (либо драйверы ОС Solaris) могут превратить процедуру автоконфигурирования в источник нескончаемых мучений.

Учитывая сказанное, давайте рассмотрим, как конфигурировать ядро Solaris на случай, если это когда-нибудь понадобится.


Просмотров: 3781 | Подробнее... | Комментариев: 0
  Построение ядра HP-UX
Категория: Драйверы и ядро | Автор: admin | 27-12-2009, 05:15

В HP-UX применяется старый подход к построению ядра: все драйверы включаются в одно большое ядро. Имеется также сложный и запутанный конфигурационный файл. К счастью, административная утилита SAM позволяет существенно упростить весь процесс. Настоятельно рекомендуем начать осваивать процедуру построения ядра именно с этой утилиты. Ее графический интерфейс прост: достаточно выбрать команду в меню, и ядро будет построено. Единственный недостаток заключается в том, что нужно быть готовым после активизации команды "Process new kernel" немедленно перегрузиться.

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

Конфигурирование ядра HP-UX осуществляется посредством файла /stand/system. Предварительно необходимо скопировать этот файл под другим именем; мы воспользуемся именем system.example. Файл system обычно генерируется утилитой SAM, поэтому он труден для понимания и в нем отсутствуют комментарии. Единственный способ узнать, что означают все эти загадочные команды и переменные, — использовать саму утилиту SAM. Но можно просто загрузить ее и распечатать копию окна с конфигурационными параметрами. Это позволит получить список имен настраиваемых переменных, а также краткое описание их назначения с указанием стандартных значений.


Просмотров: 3380 | Подробнее... | Комментариев: 0


 
Логин
Пароль
 

 
Locations of visitors to this page