
- •Ю.Б. Гриценко
- •Учебное пособие
- •ТОМСК — 2009
- •Ю.Б. Гриценко
- •Учебное пособие
- •Гриценко Ю.Б.
- •ВВЕДЕНИЕ
- •1 ВВЕДЕНИЕ В ОПЕРАЦИОННЫЕ СРЕДЫ, СИСТЕМЫ И ОБОЛОЧКИ
- •1.1 Основные понятия
- •1.2 Классификация операционных систем
- •1.3 Классификация построений ядер операционных систем
- •1.4 Представление об интерфейсах прикладного программирования
- •1.4.1 Общие задачи и функции интерфейсов прикладного программирования
- •1.4.2 Варианты реализации интерфейсов прикладного программирования
- •1.4.3 Характеристики интерфейсов прикладного программирования на различных уровнях реализаций
- •1.4.4 Платформенно-независимый интерфейс POSIX
- •1.5 Основные принципы построения операционных систем
- •Вопросы для самопроверки
- •2 ОБЗОР ПОПУЛЯРНЫХ ОПЕРАЦИОННЫХ СИСТЕМ
- •2.1 Операционные системы фирмы Microsoft
- •2.1.2 Операционная система Windows 2000
- •2.1.3 Операционная система Windows XP
- •2.1.4 Операционная система Windows 2003 Server
- •2.1.5 Операционная система Windows Vista
- •2.1.6 Операционная система Windows 2008 Server
- •2.2 Операционные системы семейства Unix
- •2.2.1 История разработки систем UNIX
- •2.2.2 Примеры различных версий Unix
- •2.2.3 Программное обеспечение X Window
- •2.3 Операционная система OS/2
- •2.3.1 История разработки системы OS/2
- •2.3.2 Особенности архитектуры и интерфейса OS/2 Warp
- •2.3.3 Серверная операционная система OS/2 Warp 4.5
- •2.3.4 Эпоха eComStation
- •2.4 Операционные системы реального времени. Операционная система QNX
- •2.4.1 Общее представление об операционных системах реального времени
- •2.4.2 Особенности архитектура системы QNX
- •2.4.3 Основные механизмы QNX
- •Вопросы для самопроверки
- •3 ИНТЕРФЕЙСЫ ОПЕРАЦИОННЫХ СИСТЕМ
- •3.1 Интерфейс командной строки ОС Windows
- •3.2 Интерфейс командной строки ОС Unix
- •Вопросы для самопроверки
- •ГЛОССАРИЙ
- •СПИСОК ЛИТЕРАТУРЫ
- •КОНТРОЛЬНЫЕ РАБОТЫ
- •Контрольная работа № 1
- •Контрольная работа № 2
18
работающих совместно для выполнения общих приложений и представляющихся пользователю единой системой, например
Windows 2000 Cluster Server, Sun Cluster (базовая ОС — Solaris).
1.3Классификация построений ядер операционных систем
По основному архитектурному принципу ОС разделяются на микроядерные и монолитные операционные системы. В некоторой степени это разделение тоже условно, однако можно в качестве яркого примера микроядерной операционной системы привести систему реального времени QNX, тогда как в качестве примера монолитной ОС можно назвать ОС Windows или ОС Linux. Ядро ОС Windows нельзя изменить, пользователям недоступны его исходные коды и у них нет программы для сборки (компиляции) этого ядра. А вот в случае работы с ОС Linux пользователи могут сами собрать ядро, отвечающее их потребностям, включив в него программные модули и драйверы, которые целесообразно, по их мнению, включить именно в ядро.
Основой модульных и переносимых расширений является микроядро — минимальная стержневая часть операционной системы. Существует мнение, что большинство операционных систем следующих поколений будут обладать микроядрами.
Основная идея, заложенная в технологию микроядра, будь то собственно ОС или ее графический интерфейс, заключается в том, чтобы конструировать необходимую среду верхнего уровня, из которой можно легко получить доступ ко всем функциональным возможностям уровня аппаратного обес-
печения [1]. При такой структуре ядро служит стартовой точкой для создания системы. Искусство разработки микроядра заключается в выборе базовых примитивов, которые должны в нем находиться для обеспечения необходимого и достаточного сервиса. В микроядре содержится и исполняется минимальное количество кода, необходимое для реализации основных системных вызовов.
Остальные функции, характерные для «обычных» (не микроядерных) ОС, обеспечиваются как модульные дополненияпроцессы, взаимодействующие главным образом между собой и
19
осуществляющие взаимодействие посредством передачи сообщений.
Исполняемые микроядром функции ограничены в целях сокращения его размеров и максимизации количества кода, работающего как прикладная программа.
Микроядро включает только те функции, которые требуются для определения набора абстрактных сред обработки прикладных программ и организации совместной работы приложений при обеспечении сервисов и взаимодействия клиентами и серверами. В результате микроядро обеспечивает, как правило, не более пяти различных типов сервисов:
–управление виртуальной памятью;
–управление заданиями и потоками;
–поддержка межпроцессных коммуникаций IPC (InterProcess Communication);
–управление поддержкой ввода/вывода и прерываниями;
–поддержка сервисов набора хоста (Host — главный компьютер; в настоящее время этим термином обозначают любой компьютер, имеющий IP-адрес) и процессора.
Наиболее ярким представителем микроядерных ОС является ОС реального времени QNX (Queue Nicks, с англ.: очередь точных моментов времени, или очередь зарубок). Микроядро QNX поддерживает только планирование и диспетчеризацию процессов, взаимодействие процессов, обработку прерываний и сетевые службы нижнего уровня. Микроядро обеспечивает всего лишь около двух десятков системных вызовов, но благодаря этому оно может быть целиком размещено во внутреннем кэше даже таких процессоров, как Intel 486. Как известно, разные версии этой ОС имели и различные объемы ядер (от нескольких килобайт до нескольких десятков килобайт).
Чтобы построить минимальную систему QNX, требуется добавить к микроядру менеджер процессов, который создает процессы, управляет процессами и памятью процессов. Чтобы ОС QNX была применима не только во встроенных и бездисковых системах, нужно добавить файловую систему и менеджер устройств. Эти менеджеры исполняются вне пространства ядра, так что ядро остается небольшим.
20
Монолитные ОС являются прямой противоположностью микроядерным ОС. В монолитной ОС, несмотря на ее возможную сильную структуризацию, достаточно трудно удалить ка- кой-либо уровень многоуровневой модульной структуры. Добавление новых функций и изменение существующих для монолитных ОС требует глубокого знания всей архитектуры ОС и чрезвычайно больших усилий. Поэтому более современный подход к проектированию ОС, который может быть условно назван «клиент-серверной технологией», позволяет в большем количестве и с меньшими трудозатратами реализовать перечисленные выше принципы проектирования ОС [1].
Модель клиент-сервер предполагает наличие программного компонента, являющегося потребителем какого-либо сервиса, — клиента и программного продукта, служащего поставщиком этого сервиса, — сервера. Взаимодействие между клиентом и сервером стандартизируется, так что сервер может обслуживать клиентов, реализованных разными способами и, может быть, разными разработчиками. При этом главным требованием является использование единообразного интерфейса. Инициатором обмена обычно является клиент, который посылает запрос на обслуживание серверу, находящемуся в состоянии ожидания запроса. Один и тот же программный компонент может быть клиентом по отношению к одному виду услуг и сервером для другого вида услуг. Модель клиент-сервер является скорее удобным концептуальным средством ясного представления функций того или иного программного элемента в какой-либо ситуации, нежели технологией. Эта модель успешно применяется не только при построении операционных систем, но и на всех уровнях программного обеспечения и имеет в некоторых случаях более узкий, специфический смысл, сохраняя, естественно, при этом все свои общие черты.
При поддержке монолитных ОС возникает ряд проблем, связанных с тем, что все функции макроядра работают в едином адресном пространстве. Во-первых, это опасность возникновения конфликта между различными частями ядра; во-вторых — сложность подключения к ядру новых драйверов. Преимущество микроядерной архитектуры перед монолитной заключается в том, что каждый компонент системы представляет собой само-