Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Особенности архитектуры: UNIX, Linux и Windows



Базовая архитектура UNIX

UNIX является примером довольно простой архитектуры ОС. Большая часть функциональности этой системы находится в ядре, ядро общается с прикладными программами с помощью системных вызовов (см рис 2.5).

Рисунок 2.5 – Базовая архитектура UNIX

 

Система состоит из трех основных компонентов: подсистемы управления процессами, файловой подсистемы и подсистемы ввода-вывода.

Подсистема управления процессами контролирует создание и удаление процессов, распределение системных ресурсов между ними, межпроцессовое взаимодействие, управление памятью.

Файловая подсистема обеспечивает единый интерфейс доступа к данным, размещенных на дисковых накопителях и к периферийным устройствам. Такой интерфейс является одной из важнейших особенностей UNIX. Одни и те же системные вызовы используют как для обмена данными с диском, так и для вывода на терминал или принтер (программа работает с принтером так же, как и с файлом). При этом файловая система переадресовывает вызовы соответствующим модулям подсистемы ввода-вывода, и те – непосредственно периферийным устройствам. Кроме того, файловая подсистема контролирует права доступа к файлам, которые в значительной степени определяет привилегии пользователя в системе.

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

Современные UNIX-системы несколько отличаются по своей архитектуре.

Ø В них выделен отдельный менеджер памяти, отвечающий за поддержку виртуальной памяти.

Ø Стандартом для реализации интерфейса файловой подсистемы является виртуальная файловая система, которая абстрагирует этот интерфейс и дает возможность организовать поддержку разных типов файловых систем.

Ø В этих системах поддерживается многопроцессорная обработка, а так же многопотоковость.

Базовые архитектурные решения, такие как доступ ко всем устройств ввода-вывода через интерфейс файловой системы или организация системных вызовов, остаются неизменными во всех реализациях UNIX.

Архитектура Linux

В ОС Linux можно выделить три основные части:

Ø ядро, которое реализует основные функции ОС (управление процессами, памятью, вводом-выводом и т.д.);

Ø системные библиотеки, которые определяют стандартный набор функций для использования в применениях ( выполнение таких функций не требует перехода в привилегированный режим);

Ø системные утилиты (прикладные программы, которые выполняют специализированные задачи).

Назначение ядра Linux и его особенности

Linux реализует технологию монолитного ядра. Весь код и структуры данных ядра находятся в одном адресном пространстве. В ядре можно выделить несколько функциональных компонентов:

Ø Планировщик процессов – отвечает за реализацию многозадачности в системе (обработка прерываний, работа с таймером, создание и завершение процессов, переключение контекста).

Ø Менеджер памяти – выделяет отделбное адресное пространство для каждого процесса и реализует поддержку виртуальной памяти.

Ø Виртуальная файловая система – предоставляет универсальный интерфейс взаимодействия с разными файловыми системами и устройствами ввода-вывода.

Ø Драйверы устройств – обеспечивают непосредственную работу с периферийными устройствами. Доступ к ним реализуется через интерфейс виртуальной файловой системы.

Ø Сетевой интерфейс – обеспечивает доступ к раелизации сетевых протоколов и драйверов сетевых устройств.

Ø Подсистема межпроцессового взаимодействия – предлагает механизмы, которые дают возможность разным процессам в системе обмениваться данными между собой.

Некоторые из этих подсистем являются логическими компонентами системы, они загружаются в память вместе с ядром и остаются там постоянно. Компоненты других подсистем (например, драйверы устройств) выгодно реализовать так, что бы их код мог загружаться в память по требованию. Для решения данной задачи Linux поддерживает концепцию модулей ядра.

Модули ядра

Ядро Linux дает возможность по требованию загружать в память и выгружать из нее отдельные секции кода. Такие секции называются модулями ядра и выполняются в привилегированном режиме.

Модули ядра дают ряд преимуществ:

1. Код модулей может загружаться в память в процессе работы системы, что упрощает настройку компонентов ядра, прежде всего драйверов.

2. Есть возможность изменять набор компонентов ядра во время выполнения: те из них, которые в этот момент не используются, можно не загружать в память.

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

Поддержка драйверов в Linux состоит из трех компонентов:

1. Средства управления модулями дают возможность загружать модули в память и реализовывать обмен данными между модулями и остальной частью ядра.

2. Средства реализации драйверов позволяют модулям сообщать остальной части ядра о том, что новый драйвер стал доступным.

3. Средства разрешения конфликтов дают возможность драйверам устройств резервировать аппаратные ресурсы и защищать их от случайного использования другими драйверами.

Один модуль может зарегистрировать несколько драйверов, если это необходимо (например, для двух разных механизмов доступа устройства).

Модули могут быть загружены заранее – во время старта системы (загрузочные модули) или в процессе выполнения программы, которая вызывает их функции. После загрузки код модуля находится в том же адресном пространстве, где и остальной код ядра. Ошибка в модуле является критичной для системы.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-28; Просмотров: 1944; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.011 с.)
Главная | Случайная страница | Обратная связь