Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS.DOC
Скачиваний:
18
Добавлен:
28.10.2018
Размер:
653.82 Кб
Скачать
    1. Ядро и процессы unix

Резидентная часть в оперативной памяти UNIX-системы называется ядром (Kernel). При начальной загрузке (boot) ядро считывается в память начиная с нулевого адреса.

На диске ядро всегда оформлено как выполняемый файл. При любой перенастройке системы, включении дополнительных внешних устройств и новых драйверов, изменении параметров генерации системы ядро перестраивается и сохраняется в новом файле. Как правило, этот файл располагается в корневом каталоге и носит название, идентифицирующее UNIX-систему (например, /unix или /hp-ux).

Ядро содержит системные программы, выполняющие диспетчерские функции, управление ресурсами ЭВМ, распределение памяти, доступ к дисковым устройствам и другие сервисные функции. Условно ядро ОС UNIX можно представить в виде нескольких тесно взаимодействующих компонент (рис. 3).

По сравнению с другими известными ОС, ядро UNIX минимизировано и не выполняет ни одной функции, непосредственно служащей пользователю. Для обслуживания пользователей применяются многочисленные утилиты, выступающие в качестве посредников между пользователем и ядром. В этом - архитектурная особенность UNIX, которая привлекает к ней внимание разработчиков аппаратных архитектур ЭВМ.

Уровень

пользователя

Уровень

ядра

Рис.3. Структура ядра UNIX

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

Ядро UNIX поддерживает загрузку только нужных страниц. То есть с диска в память загружаются те сегменты программы, которые действительно используются. Допустимо использование страницы, физически один раз загруженной в память, несколькими выполняемыми программами.

Для увеличения объема доступной памяти UNIX осуществляет также разбиение диска на страницы, т. е. на диске может быть выделено до 256 Мбайт «пространства для свопинга» (swap space). В некоторых версиях UNIX в область свопинга выгружается не весь процесс, а только отдельные его части, в которых нет необходимости.

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

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

Для обеспечения отладки ядро UNIX выдает дампы памяти для «посмертного» анализа. Использование дампа и динамических отладчиков позволяет определить причины краха программы.

Рассмотрим работу ядра более подробно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]