- •Архитектура операционной системы
- •1. Монолитные системы
- •2. Многоуровневые системы
- •3. Виртуальные машины
- •Архитектура, основанная на ядре
- •Режим ядра и пользовательский режим
- •Типовые средства аппаратной поддержки ос
- •Машинно-зависимые компоненты ос
- •Микроядерная архитектура
- •Процессы и потоки
- •Реализация процессов
- •Назначение потоков
- •Реализация потоков
- •Планирование Процессов
- •Пример 1. Планирование в Windows 2000
- •Пример 2. Планирование в unix
- •Цели планирования
- •Схемы планирования
- •Взаимодействие процессов и потоков
- •Состояние состязания
- •Критические области
- •Взаимоисключение с активным ожиданием
- •Семафоры
- •Мьютексы
- •Мониторы
- •Взаимные блокировки
- •Основные направления решения проблемы тупиков
- •Предотвращение тупиков
- •Обнаружение тупика
- •Восстановление после тупика
- •Организация мультизадачности ос
- •Опрос (проверка флагов)
- •Исключения
- •Прерывания
- •Классификация прерываний
- •3 Класса прерываний:
- •Механизм прерываний
- •Приоритеты прерываний
- •Организация памяти
- •Функции ос по управлению памятью
- •Стратегии управления памятью
- •Фрагментация памяти
- •Способы борьбы с фрагментацией:
- •Типы адресов памяти
- •Учет свободных и занятых областей памяти
- •Учет памяти с помощью битовых карт
- •Учет памяти с помощью связных списков
- •Виртуальная память
- •Файлы подкачки
- •Вопросы по модулю №1
В
ведение
в операционные системы стр.
Архитектура операционной системы
Архитектура ОС – это структурная организация ОС на основе различных программных модулей.
Не существует единой архитектуры ОС, у каждой ОС своя архитектура. В настоящее время сложились общие универсальные подходы к структурированию ОС, однако они существовали не всегда. Организация ОС может сильно отличаться от системы к системе.
Рассмотрим 3 типа архитектуры, которые применялись на практике в разных системах.
1. Монолитные системы
В такой системе структура как таковая отсутствует. Система написана в виде набора процедур, каждая из которых может вызывать другие. Для построения монолитной ОС нужно скомпилировать все процедуры, а потом связать их в единый файл с помощью компоновщика.
2. Многоуровневые системы
Многоуровневые системы – это системы, организованные в виде иерархии уровней. Первая ОС такого типа – это операционная система THE, созданная в 1968 г. в Голландии Дейкстрой и его студентами. Такая система включала 6 уровней. Позднее эта же схема была применена и улучшена в ОС MULTICS. Такую систему можно рассматривать как набор концентрических колец. Каждое внутреннее кольцо является более привилегированным, чем внешнее. Процедура внешнего кольца, вызывает процедуру внутреннего при помощи «системного вызова», о котором речь пойдет позже.
3. Виртуальные машины
Самая известная ОС, реализующая виртуальные машины – это VM/370 фирмы IBM.
ОС, реализующая виртуальные машины – это система с разделением времени, создающая для пользователей виртуальные машины – точные копии всего оборудования, но с меньшим количеством ресурсов. Каждая виртуальная машина может использовать все возможности целого компьютера (система команд, прерывания, аппаратура ввода-вывода и пр.) Поэтому на каждой виртуальной машине может работать любая ОС, т.е. на одной ЭВМ одновременно могут работать различные ОС.
Основная часть такой ОС – «монитор виртуальной машины». Он работает с оборудованием и предоставляет верхнему слою ПО несколько отдельных копий оборудования – виртуальных машин.
Идея виртуальных машин широко используется в современных ОС. Например, в ОС Windows виртуальная машина используется для запуска программ MS DOS.
Виртуальная машина работает так: в своем адресном пространстве она выполняет команды, не требующие обращения к операционной системе. Если же нужно обратиться к ОС, происходит прерывание с переключением управления на монитор виртуальной машины.
Кроме того, виртуальные машины используются для работы программ Java. Программы Java выполняются на JVM (Java Virtual Machine) – виртуальных машинах Java.
Архитектура, основанная на ядре
Архитектура, основанная на ядре, стала классической и получила наибольшее распространение. Такую архитектуру используют все популярные современные ОС: все версии UNIX, Windows NT, OS/2.
В ОС на ядре все программные модули разделяют на две группы:
ядро – модули, выполняющие основные функции ОС;
модули, выполняющие вспомогательные функции ОС.
Ядро – основная часть ОС. Без него ОС является полностью неработоспособной. Отличительная особенность ядра – работа в привилегированном режиме, т.е. в режиме, защищенном от вмешательства пользователя. Ядро – движущая сила всех вычислительных процессов в системе. Крах ядра равносилен краху всей системы.
Наиболее общие функции ядра:
управление устройствами компьютера, прерываниями и памятью;
организация вычислительных процессов.
Вспомогательные модули ОС
Вспомогательные модули делятся на следующие группы:
утилиты – программы, решающие отдельные самостоятельные задачи управления и поддержки ОС (например, программа сжатия, форматирования, редактирования, дефрагментации дисков);
системные обрабатывающие программы – системные редакторы (не знаю, что это за редакторы), компиляторы, компоновщики и отладчики;
библиотеки процедур.
Системный вызов – это процедура ядра, реализующая некоторую его функцию.
Все вспомогательные программы обращаются к функциям ядра посредством системных вызовов. Обращение к ядру помимо системных вызовов невозможно. Системный вызов очень похож на вызов подпрограммы. Пример системного вызова:
CreateProcess – создание процесса в Win32 API в Windows.
Рисунок 2.1 – Общая структура ядра ОС.
Четкой границы между системными и обычными приложениями нет. Решение о том, является ли какая-либо программа частью ОС, принимает производитель ОС.
Но, между слоями ядра и пользовательскими программами всегда располагается слой «интерфейса системных вызовов».
Некоторая программа может существовать какое-то время как пользовательское приложение, а потом стать частью ОС (и наоборот). Пример – WEB-браузер фирмы Microsoft Internet Explorer, который сначала был самостоятельным приложением, а потом стал частью ОС Windows NT и 95/98.
Архитектура ОС, основанная на ядре, обеспечивает легкую расширяемость. Так как добавить в ОС новую функцию, достаточно создать новое приложение, не трогая ядро системы.
Функции ОС, выполняемые ядром, являются наиболее часто используемыми. Поэтому скорость выполнения этих функций определяет производительность всей системы. Для обеспечения максимальной скорости выполнения вех операций ядра, его модули (или большая их часть) постоянно находятся в ОП резидентно, если это предусмотрено программистами.