Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС управление процессами

.pdf
Скачиваний:
7
Добавлен:
28.05.2015
Размер:
1.21 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение высшего профессионального образования

Ульяновский государственный технический университет

Операционные системы:

архитектура и управление процессами

Составитель: ст. преп. П. С. Макаров

Ульяновск

2008

УДК 681.3 (076) ББК 32.97я7

О-11

Рецензент канд. тех. наук, директор компьютерно-демонстрацион- ного центра УлГТУ Валюх В. В.

Одобрено секцией методических пособий научно-методического совета университета

Операционные системы: архитектура и управление процессами : О-11 методические рекомендации / сост. П. С. Макаров. – Ульяновск : УлГТУ,

2008. – 77 с.

В пособии представлена тема «Архитектура и управление процессами» учебного курса «Операционные системы».

Курс предназначен и читается на факультете информационных систем и технологий УлГТУ студентам 2 курса специальности 220100 «Электронные машины, комплексы, системы и сети» как основной курс.

Материалы курса представляютсобойиллюстрациипрезентациискомментариями.

УДК 681.3 (076) ББК 32.97я7

© П. С. Макаров, составление, 2008 © Оформление. УлГТУ, 2008

2

ВВЕДЕНИЕ

Характерной особенностью нашего времени являются процессы информатизации фактически всех сфер человеческой деятельности, которые интенсивно развиваются. Развиваются и средства проведения занятий, методика проведения лекций. Все чаще и больше лекционная часть курса проходит с применением проекционного оборудования, когда студентам демонстрируются слайды и преподаватель дает объяснения, используя данный материал.

Вкурсе «Операционные системы» также используются презентационные технологии. Именно поэтому в данном пособии выбран схожий подход: читателю предъявляется рисунок – слайд лекции и даются комментарии к слайду. По схожему принципу выстроены учебные пособия на авторизированных учебных курсах компании Microsoft Windows.

Вданной части курса читатель ознакомится с темой «Архитектура и управление процессами». Операционная система − это интерфейс между аппаратной частью и прикладными программами, с одной стороны, и пользователем ЭВМ, с другой. Это наиболее важная функция любого компьютера.

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

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

3

Архитектура операционной системы

Рис. 1

• •••••••• • •••••• •

• • •• • • • ••• •• •• •• • Æ ,

.

,

,

.

:

1. ,

.

2. ,

.

3. , .

Рис. 2

4

Модули ОС не реентерабельны. Кроме планировщика типичная ОС включает в себя много других модулей − подсистему ввода/вывода, файловую систему или системы, диспетчер памяти и ряд менее важных. Практически все эти модули работают с разделяемыми ресурсами и не могут быть реентерабельными.

Монолитное ядро. Одно из первых решений этой проблемы состояло в том, чтобы запретить переключение задач во время работы нереентерабельных модулей ОС. При этом все модули ОС собираются в конгломерат, называемый ядром (kernel). Ядро можно назвать привилегированной задачей, но оно не является процессом в полном смысле этого слова, потому что планировщик не может отобрать у ядра процессор. В ядре собраны все нереентерабельные модули системы, а часто и многие реентерабельные. Сам планировщик также является частью ядра.

Исполняя системный вызов, пользовательская программа передает управление ядру. При входе в ядро планирование процессов прекращается. Ядро или исполняет запрос, или ставит его в очередь на исполнение и передает управление планировщику. Планировщик переставляет текущий процесс в конец очереди (если он остался активным), программирует таймер, задавая в качестве интервала квант времени, и передает управление следующему активному процессу.

Процесс может потерять управление двумя способами − по истечении кванта времени или при исполнении системного вызова. В первом случае он всегда остается в очереди активных, во втором может остаться, а может и не остаться, в зависимости от сделанного вызова. Запросы ввода/вывода и синхронизации с другими процессами часто приводят к переводу процесса в состояние ожидания. Ядро может потерять управление только при аппаратном прерывании. Прерывания обрабатываются специальными программами − драйверами устройств. Драйверы являются частью ядра и не имеют права исполнять обычные системные вызовы. Ни один пользовательский процесс не может получить управление, пока какой-то из модулей ядра активен.

Такая архитектура называется монолитным ядром.

5

• •••••••• • • •

1. ·

2.

Рис. 3

Проблемы с задачами РВ. Основным недостатком монолитного ядра являются проблемы, возникающие при реализации систем реального времени. Действительно, процессы РВ должны получать управление в течение гарантированного интервала времени. И этот интервал должен быть, по возможности, небольшим. А время работы некоторых модулей ОС может быть довольно долгим, например, время поиска файла в директории. Поэтому, если мы хотим реализовать ОС реального времени с хорошим временем реакции, мы должны присваивать процессам РВ более высокий приоритет, чем у ядра. Но если процесс имеет более высокий приоритет, чем ядро, то он может получить управление во время работы нереентерабельного модуля системы.

Микроядро. Решением данной проблемы является архитектура, в которой нереентерабельный модуль ОС рассматривается как единый (цельный) критический ресурс. Обращения к нереентерабельным модулям, например, к подсистеме ввода/вывода, реализуются при этом не как вызовы, а как установка запроса в очередь, то есть обработка запроса начинается не сразу же после вызова, а, возможно, через некоторое время. Поэтому мы можем поставить запрос в очередь практически в любой момент, в том числе и во время исполнения обработчика запросов.

Мы не можем ставить запрос во время других операций над этой же очередью, но время извлечения/вставки элемента из/в очередь равно времени исполнения трех-четырех команд, и на это время можно просто запретить прерывания.

6

Развитие этой идеи и согласование ее с концепцией гармонически взаимодействующих процессов привело в 80-е годы к архитектуре, известной как микроядро (microkernel). Микроядро − это минимальная функционально полная часть операционной системы, которая обычно состоит из планировщика и базовых средств передачи данных между процессами синхронизации.

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

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

• •••••••• • •••••• •

 

 

 

 

Рис. 4

Отличие архитектур. Основное отличие монолитного и микроядра со-

стоит в том, что в системе на основе микроядра системные и пользовательские

7

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

Достоинства и недостатки. Модули микроядерных ОС хорошо структурированы − диспетчер памяти, файловые системы, драйверы устройств и т.д. − должны взаимодействовать друг с другом в выделенных точках и с использованием хорошо определенного интерфейса, в полном соответствии с концепциями структурного и модульного программирования. Кроме прочего, это свойство микроядерных систем позволяет естественно использовать их в распределенных средах.

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

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

Примеры реализаций. Первой из известных коммерческих ОС, последовательно реализующих архитектуру микроядра, была система QNX. Эта система имеет микроядро размером около 10 Кбайт, включающее средства планирования и диспетчеризации процессов, межпроцессного взаимодействия, обработки прерываний и сетевые службы сетевого уровня, что обеспечивает передачу сообщений между процессами как в пределах одной машины, так и между машинами в локальной сети. Микроядро QNX состоит из 14 системных вызовов и может полностью поместиться во внутренний кэш процессора.

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

Микроядро использует ряд других современных и будущих ОС, напри-

мер, UNIX System V R4, Workplace OS фирмы IBM, проект HURD и разрабаты-

ваемая новая версия BSD UNIX.

Существует несколько общедоступных (public domain) реализаций многопроцессорного микроядра, например, разработанное в Университете Беркли

8

микроядро Mach. Системы WPOS и HURD разрабатываются именно на основе этого ядра.

•••••••••••• • •••••• •

• •• • •••••

.

, . .

-

.

.

• •• ••• ••••

. ,

,

, -

.

Рис. 5

• ••••••• ••••••••••

••••••••••• • ••••••

Рис. 6

9

Принцип модульности

Модуль − функционально значимый элемент системы, обладающий установленным межмодульным интерфейсом. Последний предполагает возможность замены его любым другим модулем, обладающим таким же интерфейсом.

Принцип модульности дает максимальный эффект, если он распространяется на ОС, прикладные программы и аппаратуру.

Принцип функциональной избирательности

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

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

Принцип генерируемости

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

Использование принципа модульности упрощает настройку ОС.

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

Единственной ОС, генерируемой в полном смысле является ОС Linux. В ней можно сгенерировать ядро, оптимальное для данного компьютера, и указать набор подгружаемых драйверов и служб.

Принцип функциональной избыточности

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

10