Загружаемые модули linux имеют следующие отличительные особенности

Статья: Модульная структура

Ядра большинства версий операционной системы UNIX являются монолит­ными. Напомним, что монолитное ядро — это ядро, которое виртуально включа­ет в себя все возможности операционной системы в виде одного большого блока кода, который запускается как единый процесс в едином адресном пространстве. Все функциональные компоненты такого ядра имеют доступ ко всем его внут­ренним структурам данных и ко всем программам. При внесении изменений в любую из частей типичной монолитной операционной системы все ее модули и подпрограммы необходимо повторно компоновать и переустанавливать, а перед тем как изменения вступят в силу, систему нужно будет перезагрузить. В ре­зультате все модификации, такие, как добавление драйвера нового устройства или новых функций файловой системы, усложняются. Особенно остро эта про­блема стоит в системе Linux, глобальную разработку которой выполняют объединенные на добровольных началах группы независимых программистов.

Для решения этой проблемы система Linux организована в виде набора относительно независимых блоков, которые называются загружаемыми модулями (loadable modules) [GOYE99]. Загружаемые модули Linux имеют две отличитель­ные особенности.

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

Стековая организация. Модули организованы в виде определенной иерархиче­ской структуры. Отдельные модули могут выполнять роль библиотек при обращении к ним модулей более высоких уровней в рамках этой структуры; они
сами также могут обращаться к модулям на более низких уровнях.

Динамическое связывание [FRAN97] облегчает настройку системы и эконо­мит память, которую занимает ядро. В системе Linux программа пользователя или сам пользователь может загружать или выгружать модули с помощью ко­манд insmod и rmmod. Само ядро управляет работой отдельных функций и по мере надобности загружает нужные модули или выгружает те, нужда в которых уже отпала. Кроме того, стековая организация позволяет задавать зависимости модулей, что дает два основных преимущества.

1. Код, являющийся общим для набора однотипных модулей (например, драй­
веры похожих устройств), можно поместить в один модуль, что позволяет
сократить количество повторений.

2. Ядро может проверить наличие в памяти нужных модулей, воздерживаясь
от выгрузки модуля, который нужен для работы других, зависимых от него, и загружая вместе с новым требуемым модулем все необходимые допол­нительные модули.

На примере, приведенном на рис. 2.18, показаны структуры, которые ис­пользуются операционной системой Linux для управления модулями. На рисун­ке приведен список модулей ядра после загрузки модулей FAT и VFAT. Каждый модуль задается двумя таблицами: таблицей модулей и таблицей символов. В таблицу модулей входят перечисленные ниже элементы.

• next. Указатель на следующий модуль. Все модули организованы в виде
связанного «писка. Этот список начинается псевдомодулем (на рис. 2.18 он
не показан).

Читайте также:  Linux добавить переменную окружения навсегда

• ref. Список модулей, которые используются данным модулем.

• symtab. Указатель на таблицу символов данного модуля.

• size. Размер модуля в страницах памяти.

• addr. Начальный адрес модуля.

• state. Текущее состояние модуля.

• *cleanup(). Указатель на программу, которая запускается при выгрузке
данного модуля.

Рис. 2.18. Пример списка модулей ядра операционной системы Linux

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

• size. Полный размер таблицы.

• n_symbols. Количество символов.

• references. Список модулей, зависящих от данного.

На рис. 2.18 модуль VFAT загружается после модуля FAT и зависит от него.

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

Написано много книг по операционным системам, в которых также описы­вается и архитектура компьютера. В [SILB00], [NUTT00] и [CROW97] речь идет об основных принципах (с использованием результатов исследований нескольких важнейших операционных систем).

В [VAHA96] рассматривается внутреннее устройство операционной системы UNIX, приводится сравнительный анализ нескольких ее вариантов. Полное и точное описание версии UNIX SVR4 со множеством технических подробностей представлено в [GOOD94]. Настоятельно рекомендуем популярное в академиче­ских кругах издание по UNIX 4.4BSD [MCKU96], вышедшее в Беркли. Собрание статей по операционной системе UNIX, представляющее большой интерес, было опубликовано в июле-августе 1987 года в журнале Bell System Technical Journal и в октябрьском издании 1984 года журнала AT&T Bell Laboratories Technical Journal. Эти статьи были переизданы [АТТ87а, АТТ87Ь]. В [GRAH95] дается в сжатой форме полное описание операционной системы Solaris 2.x.

О внутреннем устройстве операционной системы Linux подробно рассказано в [ВЕСК98] и [CARD97].

О внутреннем устройстве операционной системы Windows 2000 пока что написано немного. Прекрасное описание внутреннего устройства Windows NT можно найти в [SOLO98].

АТТ87а AT&T. UNIX System Readings and Examples. Volume 1, — Englewood
: Cliffs, NJ: Prentice Hall, 1987. ‘•

ATT87b AT&T. UNIX System Readings and Examples. Volume II. — Englewood Cliffs, NJ: Prentice Hall, 1987.

BECK98 Beck M. et al. Linux Kernel Internals. — Reading, MA: Addison-Wesley, 1998.

CARD97 Card R., Dumas E., Mevel F. The Linux Kernel Book. — New York: Wiley, 1997.

CROW97 Crowley C. Operating Systems: A Design-Oriented Approach. — Chicago: Ir-win, 1997.

GOOD94 Goodheart В., Сох J. The Magic Garden Explained: The Internals of UNIX System V Release 4. — Englewood Cliffs, NJ: Prentice Hall, 1994.

GRAH95 Graham J. Solaris 2.x: Internals and Architecture. — New York: McGraw-Hill, 1995.

MCKU96 McKusick M., Bostic K., Karels M., Quartermain J. The Design and Imple­mentation of the 4.4BSD UNIX Operating System. — Reading, MA: Addison-Wesley, 1996.

Читайте также:  Восстановление системы альт линукс

NUTTOO Nutt G. Operating Systems: A Modern Perspective. — Reading, MA: Addi­son-Wesley, 2000.

SILBOO Silberschatz A., Galvin P., Gagne G. Applied Operating System Concepts. — I
Reading, MA: Addison-Wesley, 2000.

SOLO98 Solomon D. Inside Windows NT. — Redmond, WA: Microsoft Press, 1998. j

VAHA96 Vahalia U. UNIX Internals: The New Frontiers. — Upper Saddle River, NJ: I
Prentice Hall, 1996.

2.1.Предположим, у нас есть многозадачный компьютер, в котором каждое задание имеет идентичные характеристики. В течение цикла вычисления одного задания
Т половину времени занимает ввод-вывод, а вторую половину — работа процес­сора. Для выполнения каждого задания требуется N циклов. Допустим, что для
планирования используется простой алгоритм циклического обслуживания и что
ввод-вывод может выполняться одновременно с работой процессора. Определите
значения следующих величин.

• Реальное время, затрачиваемое на выполнение задания.

• Среднее количество заданий, которое выполняется в течение одного цикла Т.

• Доля времени, в течение которого процессор активен (не находится в режи­ме ожидания).

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

а. В течение первой половины периода выполняется ввод-вывод, а в течение второй — работа процессора.

б. В течение первой и четвертой четвертей выполняется ввод-вывод, а в течение второй и третьей — работа процессора.

2.2. Перегруженной операциями ввода-вывода называется такая программа, которая, будучи запущена сама по себе, тратит больше времени на ввод-вывод, чем на
работу процессора. Программой, преимущественно использующей процессор,
называется программа, в которой соотношение затрат времени изменяется в
пользу процессора. Предположим, что в алгоритме краткосрочного планирова­ния предпочтение отдается тем программам, которые в течение недавнего времени использовали процессор меньше других. Объясните, почему в этом алго­ритме отдается предпочтение программам, перегруженным операциями ввода-
вывода, хотя тем программам, которые преимущественно используют процессор,
тоже отводится некоторое процессорное время.

2.3. В компьютере есть кэш, основная память и диск, который используется для ор­ганизации виртуальной памяти. Если слово, к которому производится обращение, находится в кэше, для доступа к нему требуется 20 ns. Если это слово находится в основной памяти, но отсутствует в кэше, то оно сначала загружается в
кэш за 60 ns, а затем к нему производится обращение. Если нужного слова нет в
основной памяти, то чтобы найти его на диске и загрузить в основную память,
требуется 12 ms; еще 60 ns нужны, чтобы скопировать его в кэш, и только затем
к этому слову производится обращение. Результативность обращений к кэшу
равна 0.9, а результативность обращений к основной памяти — 0.6. Найдите
среднее время, которое требуется для доступа системы к нужному ей слову.

Читайте также:  Обновить драйвера видеокарты линукс

2.4. Сравните стратегии планирования, которые могли бы использоваться для опти­мизации системы разделения времени и многозадачной пакетной системы.

2.5. В чем заключается предназначение системных вызовов и как они соотносятся с опе­рационной системой и с концепцией работы в режиме ядра и режиме пользователя?

2.6.Одним из основных модулей ядра операционной системы OS/390 для мейнфреймов IBM является System Resource Manager (SRM). Этот модуль распределяет
ресурсы между адресными пространствами (процессами). Именно этот модуль
делает операционную систему OS/390 одной из самых интеллектуальных. Ника­кие другие операционные системы для мейнфреймов, а тем более другие виды
операционных систем не могут выполнять функций, аналогичных тем, которые выполняет модуль SRM. В концепцию ресурсов входят: процессор, реальная память и каналы ввода-вывода. SRM собирает статистику относительно исполь­зования процессора, каналов и различных ключевых структур данных; на осно­ве анализа собранной статистики обеспечивается оптимальная производитель­ность системы. Может производиться дополнительная настройка модуля для различных целей, в соответствии с которыми модуль динамически изменяет конфигурацию и характеристики производительности выполнения заданий. Мо­дуль SRM, в свою очередь, составляет отчеты, на основании которых подготов­ленный оператор может улучшить производительность и изменить настройку системы с целью улучшения обслуживания клиентов.

В этой задаче идет речь об одном из видов деятельности модуля SRM. Реальная па­мять подразделяется на блоки одинакового размера, которые называются кадрами. Компьютер может содержать многие тысячи кадров, в каждом из которых может находиться блок виртуальной памяти, называющийся страницей. Управление к мо­дулю SRM переходит с частотой примерно 20 раз в секунду; при этом происходит проверка каждой из страниц памяти. Если данная страница не запрашивалась и не изменялась, показания счетчика увеличиваются на 1. Время от времени модуль SRM усредняет эти числа и определяет среднее время, в течение которого система не ис­пользует данную страницу кадра памяти. Для чего можно использовать эти данные, и что для этого должен предпринять модуль SRM?

1 Краткое рассмотрение страничной организации памяти приведено в последую­щих разделах данной главы; более подробно этот материал изложен в главе 7, «Управление памятью».

2 Заштрихованная область представляет аппаратное обеспечение

4 Следует отметить, что процессы, как правило, обладают каждый своим отдельным адресным пространством, а у потоков адресное пространство общее.

5 Фирме IBM удалось собственными усилиями разработать операционную систему OS/2. Как и Windows NT, OS/2 Warp является современной многозадачной многопоточной операционной системой.

6 Только 16-битовые приложения OS/2. — Прим. ред

7 Здесь и в предыдущем пункте имеются в виду только 16-битовые приложения OS/2.

8 Подробнее об этой модели в приложении к W2K можно узнать, например, из кни­ги Оберг Р. Технология СОМ+. Основы и программирование. — М.: Издательский дом «Вильяме», 2000

9 Более полное генеалогическое дерево приведено в [MCKU96].

Источник

Оцените статью
Adblock
detector