Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 02.docx
Скачиваний:
41
Добавлен:
26.09.2019
Размер:
1.41 Mб
Скачать

Архитектура 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 и так далее, входят заточенные под них ядра собственной выделки (обычно в нескольких вариантах), дополняющие или подменяющие каноническое ядро. Они основаны на патчах майнтайнеров или специализированных проектов, но включают и собственные функции, обеспечивающие оптимальную работу "своего" дистрибутива.

Таким образом, перед пользователем открывается широкий выбор. С одной стороны, он может воспользоваться ядром, идущим в комплекте с его дистрибутивом по умолчанию. С другой, если дистрибутив предлагает на выбор несколько вариантов сборки ядра, пользователь может выбрать наиболее для него подходящее. С третьей же стороны, никто не запрещает ему, взяв за основу каноническое ядро, собрать собственную конфигурацию. В том числе - и дополнив его необходимыми (или желательными) функциями из патчей майнтайнеров или специализированных проектов.

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