Скачиваний:
21
Добавлен:
09.05.2014
Размер:
354.82 Кб
Скачать

10.1.1 Конфигурация системы

Задание конфигурации системы это процедура указания администраторами

значений параметров, с помощью которых производится настройка системы. Неко-

торые из параметров указывают размеры таблиц ядра, таких как таблица процес-

сов, таблица индексов и таблица файлов, а также сколько буферов помещается в

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

ств, то есть производятся конкретные указания ядру, какие устройства включа-

ются в данную системную реализацию и их "адрес". Например, в конфигурации

может быть указано, что терминальная плата вставлена в соответствующий разъ-

ем на аппаратной панели.

Существует три стадии, на которых может быть указана конфигурация уст-

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

в файлах, которые транслируются и компонуются во время построения ядра. Ин-

формация о конфигурации обычно указывается в простом формате, и программа

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

нистраторы могут указывать информацию о конфигурации после того, как система

уже запущена; ядро динамически корректирует внутренние таблицы конфигурации.

Наконец, самоидентифицирующиеся устройства дают ядру возможность узнать, ка-

кие из устройств включены. Ядро считывает аппаратные ключи для самонастрой-

ки. Подробности задания системной конфигурации выходят за пределы этой кни-

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

ется генерация или заполнение таблиц, составляющих основу программ ядра.

Интерфейс "ядро - драйвер" описывается в таблице ключей устройств вво-

да-вывода блоками и в таблице ключей устройств посимвольного ввода-вывода

(Рисунок 10.1). Каждый тип устройства имеет в таблице точки входа, которые

при выполнении системных функций адресуют ядро к соответствующему драйверу.

Функции open и close, вызываемые файлом устройства, "пропускаются" через

таблицы ключей устройств в соответствии с типом файла. Функции mount и

umount так же вызывают выполнение процедур открытия и закрытия устройств, но

для устройств ввода-вывода блоками. Функции read и write, вызываемые устрой-

ствами ввода-вывода блоками и файлами в смонтированных файловых системах,

запускают алгоритмы работы с буферным кешем, инициирующие реализацию страте-

гической процедуры работы с устройствами. Некоторые из драйверов запускают

эту процедуру изнутри из процедур чтения и записи. Более подробно взаимодей-

ствие с каждым драйвером рассматривается в следующем разделе.

Интерфейс "аппаратура - драйвер" состоит из машинно-зависимых управляю-

щих регистров или команд ввода-вывода для управления устройствами и вектора-

ми прерываний: когда происходит прерывание от устройства, система идентифи-

цирует устройство, вызвавшее прерывание, и запускает программу обработки со-

----------------------------------------

(*) И наоборот, системная функция fcntl обеспечивает контроль над действия-

ми, производимыми на уровне дескриптора файла, но не на уровне устройст-

ва. В других реализациях функция ioctl применима для файлов всех типов.

291

ответствующего прерывания. Очевидно, что "программные устройства", такие как

драйвер системы построения профиля ядра (глава 8) не имеют аппаратного ин-

терфейса, однако программы обработки других прерываний могут обращаться к

"обработчику программного прерывания" непосредственно. Например, программа

обработки прерывания по таймеру обращается к программе обработки прерывания

системы построения профиля ядра.

Администраторы устанавливают специальные файлы устройств командой mknod,

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

номера устройства. Команда mknod запускает выполнение системной функции с

тем же именем, создающей файл устройства. Например, в командной строке

mknod /dev/tty13 c 2 13

"/dev/tty13" - имя файла устройства, "c" указывает, что тип файла - "сим-

вольный специальный" ("b", соответственно, блочный), "2" - старший номер ус-

тройства, "13" - младший номер устройства. Старший номер устройства показы-

вает его тип, которому соответствует точка входа в таблице ключей устройств,

младший номер устройства - это порядковый номер единицы устройства данного

типа. Если процесс открывает специальный блочный файл с именем "/dev/dsk1" и

кодом 0, ядро запускает программу gdopen в точке 0 таблицы ключей устройств

блочного ввода-вывода (Рисунок 10.2); если процесс читает специальный сим-

вольный файл с именем "/dev/mem" и кодом 3,

Подсистема управления файлами

+------------------------------------------------------------+

| open close |

| open close read write ioctl read write |

| mount umount |

+--+-----+----+-----+-----+------------+-----+-----+-----+---+

| | | | | | | +-+-----+---+

| | | | | | | | функции |

| | | | | | | | работы с |

| | | | | | | | буферным |

| | | | | | | | кешем |

| | | | | | | +-----+-----+

+--+-----+----+-----+-----+-+ ++-----+---------+-----+

| Таблица ключей устройств | | Таблица ключей уст- |

| посимвольного ввода-вывода| | ройств ввода-вывода |

| | | блоками |

+--+-----+----+-----+-----+-+ +--+------+--------+---+

+--+-----+----+-----+-----+-+ +--+------+--------+---+

|open close read write ioctl| Точки | open close strategy|

| | входа | |

| Драйвер | для | Драйвер |

| | драй- | |

|программа обработки преры- | веров | программа обработки |

| ваний от устройства | |прерываний от устройст|

+------------+--------------+ +-----------+----------+

+--------+----------+ +---------+---------+

| Вектор прерывания | | Вектор прерывания |

+--------+----------+ +---------+---------+

+-------------------+----------------+

|

Прерывания от устройств

Рисунок 10.1. Точки входа для драйверов

292

ядро запускает программу mmread в точке 3 таблицы ключей устройств посим-

вольного ввода-вывода. Программа nulldev - это "пустая" программа, использу-

емая в тех случаях, когда отсутствует необходимость в конкретной функции

драйвера. С одним старшим номером устройства может быть связано множество

периферийных устройств; младший номер устройства позволяет отличить их одно

от другого. Не нужно создавать специальные файлы устройств при каждой заг-

рузке системы; их только нужно корректировать, если изменилась конфигурация

системы, например, если к установленной конфигурации были добавлены устройс-

тва.

Соседние файлы в папке материалы к собеседованию