- •2 Пара. Архитектура ос. Организация ядер в Windows и Unix, уровни ос Архитектура компьютерной системы
- •Архитектура операционной системы
- •Основные компоненты ос
- •3. 1. Ядро и вспомогательные модули ос
- •3. 2. Ядро и привилегированный режим
- •3. 3. Многослойная структура ос
- •3. 6. Микроядерная архитектура
- •Типы архитектур ядер операционных систем
- •Монолитное ядро
- •Модульное ядро
- •Гибридное ядро
- •Микроядро
- •Экзоядро
- •Наноядро
- •Архитектура ядра Windows nt 5.0
- •Архитектура системы
- •Режим ядра
- •Исполняемая часть
- •Подсистемы среды и библиотеки dll
- •Архитектура unix
- •Архитектура операционной системы unix
- •Ядро операционной системы unix
- •Ядро в Linux
- •-Обработка прерываний в ядре
Архитектура unix
Стандартизация
Несмотря на многообразие версий UNIX, основой всего семейства являются принципиально одинаковая архитектура и ряд стандартных интерфейсов (в UNIX стандартизовано почти всё - от расположения системных каталогов и файлов до интерфейса системных вызовов и списка драйверов базовых устройств). Опытный администратор без особого труда сможет обслуживать другую версию, тогда как для пользователей переход на другую систему и вовсе может оказаться незаметным. Для системных же программистов такого рода стандарты позволяют полностью сосредоточиться на программировании, не тратя время на изучение архитектуры и особенностей конкретной реализации системы.
Многозадачность
В системе UNIX может одновременно выполняться множество процессов (задач), причем их число логически не ограничивается и может меняться в ходе работы системы. Благодаря специальному механизму управления памятью, каждый процесс существует в собственном изолированном адресном пространстве, что гарантирует безопасность и независимость от других процессов. Различные системные операции позволяют процессам порождать новые процессы, завершают процессы, синхронизируют выполнение этапов процесса и управляют реакцией на наступление различных событий.
Архитектура операционной системы unix
Важную часть системных программ составляют демоны. Демон - это процесс, выполняющий определенную функцию в системе, который запускается при старте системы и не связан ни с одним пользовательским терминалом. Демоны предоставляют пользователям определенные сервисы, примерами которых могут служить системный журнал, веб-сервер и т. п. Аналогом демонов в операционной системе Windows NT и более поздних версиях являются системные службы.
Операционная система UNIX обладает классическим монолитным ядром, в котором можно выделить следующие основные части:
Файловая подсистема: Доступ к структурам ядра осуществляется через файловый интерфейс.
Управление процессами: Сюда входит управление параллельным выполнением процессов (планирование и диспетчеризация), виртуальной памятью процесса и взаимодействием между процессами (сигналы, очереди сообщений и т. п.).
Драйверы устройств: Драйверы устройств делятся на символьные и блочные по типу внешнего устройства. Для каждого из устройств определен набор возможных операций (открытие, чтение и т. д.). Блочные устройства кэшируются с помощью специального внутреннего механизма управления буферами. Подробнее об этом сказано в разделе «Устройства и драйверы».
Ядро операционной системы unix
Благодаря тому, что в UNIX аппаратно-независимая часть отделена явно, операционные системы этого семейства могут быть с минимальными затратами перенесены на новые аппаратные платформы.
Видно, что ядро операционной системы UNIX является классическим для многозадачной многопользовательской операционной системы.
Ядро в Linux
Команда разработчиков - более или менее неформальное объединение. И теоретически каждый желающий имеет шанс принять участие в разработке ядра путем посылки своих дополнений (patch). Хотя практически все эти патчи проходят многоступенчатый отбор, прежде чем попасть к самому Линусу, который и принимает окончательное решение - включать их в официальную версию ядра, или нет.
Бытует мнение, что ядро Linux - одно-единственное. Это правда, но не вся правда. Действительно, ядро Линуса - каноническое. Однако практически, кроме текущей его ветки (в настоящее время - 2.6), в которой периодически выходят новые версии (2.6.X) в каждый момент времени развивается и дополняется минимум одна предшествующая ветка (на данный момент 2.4). А одна из еще более старых веток (ныне - 2.2) поддерживается на уровне исправления ошибок. Ошибки, разумеется, имеют место быть и в текущей ветке, где они активно выявляются и исправляются, что образует отдельную "корректирующую" ветку (2.6.xx.y).
Далее, существуют т.н. ядра майнтайнеров. Разумеется, в основе всех их - каноническое ядро, но - с патчами, ответственными за реализацию дополнительных функций, не входящих в официальное ядро. Собственно, ядра майнтайнеров и распространяются исключительно в виде патчей к основному дереву исходников ядра. Со временем большинство патчей майнтайнеров включается в состав официального ядра. Основные майнтайнерские ветки перманентно существуют параллельно канонической ветке Линуса.
Существуют проекты дополнения ядра узкоспециальными функциями, такими, как обеспечение повышенной безопасности, поддержки виртуализации и паравиртуализации, и другие. Разрабатываемые в их рамках патчи обычно не включаются в основное дерево, и они сосуществуют с ним в качестве отдельных веток.
Кроме этого, существуют еще и ядра дистрибьюторов - в комплект всех распространенных дистрибутивов, таких, как RHEL, Suse, Mandriva, Ubuntu и так далее, входят заточенные под них ядра собственной выделки (обычно в нескольких вариантах), дополняющие или подменяющие каноническое ядро. Они основаны на патчах майнтайнеров или специализированных проектов, но включают и собственные функции, обеспечивающие оптимальную работу "своего" дистрибутива.
Таким образом, перед пользователем открывается широкий выбор. С одной стороны, он может воспользоваться ядром, идущим в комплекте с его дистрибутивом по умолчанию. С другой, если дистрибутив предлагает на выбор несколько вариантов сборки ядра, пользователь может выбрать наиболее для него подходящее. С третьей же стороны, никто не запрещает ему, взяв за основу каноническое ядро, собрать собственную конфигурацию. В том числе - и дополнив его необходимыми (или желательными) функциями из патчей майнтайнеров или специализированных проектов.