- •Введение
- •Понятие операционной системы. Типы операционных систем
- •Функции операционной системы
- •Структура операционной системы. Ос ms dos
- •Файлы и каталоги на дисках
- •Драйверы устройств
- •Базовая система ввода-вывода (bios)
- •Загрузчик операционной системы
- •Ядро ms dos
- •Командный процессор dos
- •Внешние команды dos
- •Файловая структура диска
- •Стартовый сектор
- •Каталоги
- •Область данных
- •Операционные системы Windows
- •Выбор платформы Windows
- •Термины
- •Архитектура Windows Режимы выполнения программного кода
- •Многозадачность
- •Управление памятью в Windows
- •Выполнение приложений
- •Интерфейс прикладного программирования Win32
- •Реестр Windows
- •Операционная система unix
- •Ядро и процессы unix
- •Диспетчер unix
- •Процессы unix
- •Дескриптор и контекст процесса
- •Иерархия процессов
- •Идентификаторы процесса
- •Группы процессов
- •Взаимодействие процессов
- •Процессы-«демоны»
- •Межпроцессные коммуникации unix
- •Сигналы
- •Сигналы unix по мере возрастания их значений:
- •Семафоры
- •Программные каналы (Pipes)
- •Очереди сообщений
- •Разделяемая память
- •Многопользовательская защита в unix
- •Идентификаторы пользователя и группы
- •Код защиты файла
- •Привилегированный пользователь
- •Эффективные и реальные идентификаторы
- •Свопинг и пейджинг в unix
- •Буфер кеш-памяти
- •Управление вводом/выводом
- •Специальные файлы
- •Взаимодействие драйверов с программной и аппаратной средой
- •Файловая система unix
- •Основные системные каталоги
- •Корневой каталог /
- •Каталог /var
- •Каталог /etc
- •Каталог /usr
- •Каталог /home (/export/home)
- •Каталог/opt (/opti, /opt2, ... /optn)
- •Команды управления swap
- •Команда mkfile
- •Специальные файлы
- •Класс устройства
- •Тип и номер
- •Связь физической и логической структур
- •Создание и монтирование файловой системы
- •Дисковые устройства в unix
- •Внутренняя структура файловой системы Распределение дискового пространства
- •Индексные дескрипторы
- •Системные вызовы unix для работы с файлами
- •Стандартные библиотечные функции ввода/вывода
- •Поточные функции ввода/вывода
- •Литература
- •Оглавление
-
Ядро и процессы unix
Резидентная часть в оперативной памяти UNIX-системы называется ядром (Kernel). При начальной загрузке (boot) ядро считывается в память начиная с нулевого адреса.
На диске ядро всегда оформлено как выполняемый файл. При любой перенастройке системы, включении дополнительных внешних устройств и новых драйверов, изменении параметров генерации системы ядро перестраивается и сохраняется в новом файле. Как правило, этот файл располагается в корневом каталоге и носит название, идентифицирующее UNIX-систему (например, /unix или /hp-ux).
Ядро содержит системные программы, выполняющие диспетчерские функции, управление ресурсами ЭВМ, распределение памяти, доступ к дисковым устройствам и другие сервисные функции. Условно ядро ОС UNIX можно представить в виде нескольких тесно взаимодействующих компонент (рис. 3).
По сравнению с другими известными ОС, ядро UNIX минимизировано и не выполняет ни одной функции, непосредственно служащей пользователю. Для обслуживания пользователей применяются многочисленные утилиты, выступающие в качестве посредников между пользователем и ядром. В этом - архитектурная особенность UNIX, которая привлекает к ней внимание разработчиков аппаратных архитектур ЭВМ.
Уровень
пользователя
Уровень
ядра
Рис.3. Структура ядра UNIX
Ядро UNIX содержит важные системные таблицы, в которых находится системная информация для построения связанных, координированных программных цепочек. В этом смысле UNIX - пример программы, структура которой определена данными. В сущности, основная часть работы ядра как раз и сводится к поиску в таблицах и к их модификации.
Ядро UNIX поддерживает загрузку только нужных страниц. То есть с диска в память загружаются те сегменты программы, которые действительно используются. Допустимо использование страницы, физически один раз загруженной в память, несколькими выполняемыми программами.
Для увеличения объема доступной памяти UNIX осуществляет также разбиение диска на страницы, т. е. на диске может быть выделено до 256 Мбайт «пространства для свопинга» (swap space). В некоторых версиях UNIX в область свопинга выгружается не весь процесс, а только отдельные его части, в которых нет необходимости.
Когда системе нужно больше физической памяти, то она с помощью свопинга выводит неактивные страницы на диск. Это позволяет выполнять более объемные программы и обслуживать одновременно больше пользователей. Однако свопинг не исключает наращивания физической памяти, поскольку он снижает быстродействие, увеличивая время доступа. Ядро также поддерживает универсальный пул памяти для пользовательских программ и дискового кеша. При этом для кеша может использоваться вся память, и наоборот, кеш уменьшается при работе больших программ.
Выполняемые программы используют динамически связываемые или разделяемые библиотеки, иначе говоря, выполняемые программы могут совместно использовать библиотечную программу, представленную одним физическим файлом на диске. Это позволяет выполняемым файлам занимать меньше места на диске, особенно тем, которые многократно используют библиотечные функции. Есть также статические связываемые библиотеки для тех, кто желает пользоваться отладкой на уровне объектных кодов или иметь выполняемые программы, которые не нуждаются в разделяемых библиотеках. В UNIX разделяемые библиотеки динамически связываются во время выполнения, позволяя программисту заменять библиотечные модули своими собственными.
Для обеспечения отладки ядро UNIX выдает дампы памяти для «посмертного» анализа. Использование дампа и динамических отладчиков позволяет определить причины краха программы.
Рассмотрим работу ядра более подробно.