Двухуровневая архитектура. В центре находится ядро системы (kernel). Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные и системные программы от особенностей ее архитектуры. Ядро имеет набор услуг, предоставляемых прикладным программам. К услугам ядра относятся: операции ввода вывода (открытия, чтения, записи и управления файлами), создание и управление процессами, их синхронизации и взаимодействия. Все приложения запрашивают услуги у ядра посредством системных вызовов. Второй уровень составляют приложения или задачи, как системные, так и прикладные, обеспечивающие пользовательский интерфейс UNIX.Одно из основных достижений ОС UNIX состоит в том, что система обладает свойством высокой мобильности. Смысл в том, что вся операционная система, включая ядро, просто переносится на различные аппаратные платформы. Все части системы, не считая ядра, являются полностью машинно-независимыми. Эти компоненты аккуратно написаны на языке Си, и для их переноса на новую платформу требуется только перекомпиляция исходных текстов в коды целевого компьютера. В самом ядре можно выделить машинно-зависимые и машинно-независимые компоненты. Основная часть ядра не зависит от архитектурных особенностей целевой платформы. Однако сравнительно небольшая часть ядра является машинно-зависимой и написана на языке ассемблера целевого процессора. При переносе системы на новую платформу требуется переписывание этой части ядра с использованием языка ассемблера и учетом специфических черт целевой аппаратуры. Машинно-зависимая часть традиционного ядра ОС UNIX включает следующие компоненты: раскрутка и инициализация системы на низком уровне (пока это зависит от особенностей аппаратуры);первичная обработка внутренних и внешних прерываний; управление памятью (в той части, которая относится к особенностям аппаратной поддержки виртуальной памяти); переключение контекста процессов между режимами пользователя и ядра; связанные с особенностями целевой платформы части драйверов устройств.
Ядро состоит из трех основных подсистем:Файловая подсистема, Подсистема управления процессами и памятью, Подсистема ввода/вывода.
Функции ядра ОС UNI: Инициализация системы − функция запуска и раскрутки. Ядро системы обеспечивает средство раскрутки (bootstrap). Управление файлами − функция, реализующая абстракцию файловой системы, - иерархии каталогов и файлов. Файловые системы ОС UNIX поддерживают несколько типов файлов. Файлы обычно хранятся на устройствах внешней памяти; доступ к ним обеспечивается средствами ядра. Управление процессами и нитями − функция создания, завершения и отслеживания существующих процессов и нитей. Обмен данными (коммуникационные средства) − функция, обеспечивающая возможности обмена данными между процессами. Управление памятью − функция отображения практически неограниченной виртуальной памяти процессов в физическую оперативную память компьютера, которая имеет ограниченные размеры. Программный интерфейс − функция, обеспечивающая доступ к возможностям ядра со стороны пользовательских процессов на основе механизма системных вызовов, оформленных в виде библиотеки функций.
Файловая подсистема управляет файлами, размещает записи файлов, управляет свободным пространством, доступом к файлам и поиском данных для пользователей. Процессы взаимодействуют с подсистемой управления файлами, используя специальные обращений кОС (open(), close(), read(), write(), stat(), chown() и chmod()).Важной функцией файловой подсистемы в UNIX является контроль прав доступа к файлам и каталогам. Поскольку большинство прикладных функций выполняется через интерфейс файловой системы, права доступа к файлам определяют привилегии пользоателя в системе.
Подсистема управления процессами отвечает за синхронизацию процессов, взаимодействие процессов, распределение памяти и планирование выполнения процессов.
Подсистема управления процессами контролирует:Создание и удаление процессов.Распределение системных ресурсов (памяти, вычислительных ресурсов) между процессами.Синхронизацию процессов.Межпроцессное взаимодействие.
Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. В случае если для всех процессов недостаточно памяти, ядро перемещает части процесса или нескольких процессов во вторичную память (область жесткого диска), освобождая ресурсы для выполняющегося процесса. Управление виртуальной памятью процесса также входит в задачи модуля управления памятью.
Подсистема ввода-вывода выполняет запросы подсистем к периферийным устройствам. Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами устройств – специальными модулями ядра, непосредственно обслуживающими внешние периферийные устройства.