Самодел 2 (1114717), страница 5
Текст из файла (страница 5)
Достоинства:
+ невозможно добраться до «чужой» памяти
+ оптимальное распределение памяти
+ свопинг – освобождение памяти
Недостатки:
– нужна аппаратная организация таблицы
– при смене программы ОС должна менять содержимое всей таблицы
1.4. Операционная система
Операционная система – это комплекс программ, обеспечивающий контроль за существованием, распределением и использованием ресурсов ВС (некоторые из ресурсов ВС, как мы знаем, являются программными или логическими/виртуальными и создаются под контролем операционной системой).
Любая ОС оперирует некоторым набором базовых сущностей (понятий) на основе которых строится логика функционирования системы. Например, подобными базовыми понятиями могут быть задача, задание, процесс, набор данных, файл, объект.
Одним из наиболее распространенных базовых понятий ОС является процесс.
Интуитивно определение процесса достаточно просто, но определить процесс строго, формально, достаточно сложно. Поэтому существует целый ряд определений процесса, многие из которых системно-ориентированы.
Процесс – это совокупность машинных команд и данных, исполняющаяся в рамках ВС и обладающая правами на владение некоторым набором ресурсов. Эти права могут быть эксклюзивными, когда ресурс принадлежит только этому процессу. Некоторые из ресурсов могут разделяться, т. е. одновременно принадлежать двум и более процессам, в этом случае мы говорим о разделяемых ресурсах.
Разделяемые ресурсы – ресурсы, которые могут одновременно принадлежать двум или более процессам. Бытовой пример: чтение несколькими людьми общей книги
Возможно два варианта выделения ресурсов процессу:
предварительная декларация использования тех или иных ресурсов – процесс заранее передает системе перечень ресурсов, которые будут им использованы в работе.
динамическое пополнение списка принадлежащих процессу ресурсов по ходу выполнения процесса при непосредственном обращении к ресурсу (относится как к ОЗУ, так и к внешним устройствам).
Реальная схема зависит от конкретной ОС. На практике возможно использование комбинации этих вариантов. Для простоты изложения будем считать, что модельная ОС имеет возможность предварительной декларации ресурсов, которые будут использованы процессом.
Любая ОС должна удовлетворять следующим свойствам:
-
надежность
надежное функционирование системы и минимизация ошибок
-
защита
ОС должна обеспечивать конфиденциальность обрабатываемых данных, защиту от внешних и внутренних вторжений
-
эффективность
система должна удовлетворять критериям эффективности - набору условий, по которым это оценивается. В каждой системе это качество оценивается относительно требований. Например, в ноутбуке важна возможность использования энергосберегающих технологий и т.д.
-
предсказуемость
функционирование системы должно быть организовано таким образом, чтобы пользователь знал, что произойдет при возникновении какого-либо события, например, при отключении питания. Этот пункт может частично пересекаться с надежностью.
Структура ОС.
Ядро – резидентная (постоянная в памяти) часть ОС, работающая в режиме супервизора (обычно работает в режиме физической адресации).
В ядре размещаются программы обработки прерываний, программные реализации ее возможностей и драйверы наиболее «ответственных» устройств (драйверы ОЗУ, файловой системы и прочие необходимые). Это могут быть драйверы и физических, и виртуальных устройств. Еще могут быть резидентные/нерезидентные драйверы – драйвера второстепенных устройств, динамически подключаемые при уже работающей системе. Например, драйвер принтера будет подключен, если поступит запрос на печать. В некоторые ноутбуки можно в один момент времени включить или CD-ROM, или Floppy. На этот случай в системе предусмотрено отключение текущего устройства, чтобы безопасно заменить его на другое. При этом происходит выгрузка/загрузка драйверов этих устройств. Динамически подгружаемые драйверы устройств могут работать как в режиме супервизора, так и в пользовательском режиме.
Вообще говоря, в ядре можно что-то частично менять, но как правило это оказывается не так просто – придется пересобрать и перекомпилировать ядро, а это трудоемкая задача.
A PI (программно-аппаратный интерфейс) – набор функций, предоставляемых системному программисту, разрабатывающему прикладные программы, и ориентированные на организацию взаимодействия результирующей программы и вычислительной системы.
« Системный вызов» - обращение к ОС за предоставление той или иной функции (возможности, услуги, сервиса). Пример: создание/завершение процесса, создание канала взаимодействия между процессами и т.д. При системном вызове основной исполняемый код – часть кода ядра.
Здесь буфер реализован в ОЗУ => ускоряет работу, минимизируя количество обращений к внешним устройствам. Но это не надежно: в случае отключения питания буфер сбросится, и на устройство ничего не запишется, несмотря на то что команды записи на него были.
Это пример ОС с монолитным ядром. Такими операционными системами были Mach, ранние UNIX. Рассмотрим альтернативу этой архитектуры:
М икроядерная система – система, в которой одновременно работают несколько микроядер, каждое из которых реализует определенные возможности ОС (управление нитями, управление памятью, управление сообщениями, управление портами). Микроядро унифицирует работу с подключением драйверов, количество драйверов и их состав ограничены только физически. В одной системе могут быть разные драйвера одного устройства, например, драйвера разных файловых систем.
Достоинства микроядерной архитектуры:
+ гибкость, модульность
+ оптимизация системы под конкретные задачи
+ унификация потоков данных и управляющей информации
+ эффективность
+ скорость
Логические функции ОС
-
управление процессами
Создание процессов, выделение процессу ресурсов, обеспечение взаимодействия процессов, обеспечение защиты процессов от несанкционированного доступа.
-
управление ОП
Блок управления, обеспечивающий работу с ОП, учет и использование ОП, организация виртуальной памяти, обеспечение свопинга. Процесс может занимать в памяти только одну страницу.
-
планирование
Очень важная функция: планирование распределения времени работы процессора между процессами; планирование внешних обменов. Бывает, что возникает очередь на обмен, тогда появляется необходимость выбора стратегии, по которой эта очередь будет обслуживаться. При обработке прерывания могут поступать следующие прерывания, то есть будет образовываться очередь прерываний. Тогда надо выбирать стратегию обработки возникших прерываний. Проблема свопинга: когда и какой процесс вытолкнуть/втолкнуть в память.
-
управление устройствами и ФС
Унификация способов доступа к данным, контроль доступа и пр.
Это примерное деление на функции ОС, можно придумать и другое.
Типы операционных систем
-
Пакетная ОС
-
Системы разделения времени
-
ОС реального времени
Рассмотрим их поподробнее.
Пакетная ОС.
Речь идет о мультипроцессной ОС. Пусть существует совокупность программ, для выполнения которых требуются большие ресурсы. Такую совокупность будем называть пакетом.
Время, которое ОС затрачивает на переключение между процессами минимизировано. Переключение выполнения процессов происходит только в одном из случаев:
-
Выполнение процесса завершено
-
Возникло прерывание или запрос на обмен
-
Был фиксирован факт ошибки (остановка/зацикливание процесса)
Если произошло одно из этих событий, происходит переключение с одного процесса на другой. То есть переключение происходит по мере необходимости.
Системы разделения времени
Система дает процессу квант времени на выполнение. Квант времени ЦП – некоторый фиксированный ОС промежуток времени работы ЦП
Выбор следующего процесса при переключении – это вопрос планирования.
Переключение выполнения процессов происходит только в одном из случаев:
-
Выполнение процесса завершено
-
Возникло прерывание или запрос на обмен
-
Был фиксирован факт ошибки (остановка/зацикливание процесса)
-
Исчерпался выделенный квант времени
Причем если процесс зациклился, то нельзя гарантированно сказать, какое из событий (фиксация факта зацикливания или исчерпание кванта) произойдет раньше. Например, один или несколько квантов процесс может проработать полностью, а на очередном зафиксируется зацикливание.
Объединение процессов в категории:
-
Счетные (гиганты)
-
Отладочные
-
Интерактивные задачи пользователя (редактор, компилятор, игрушка; иллюзия того, что пользователь использует всю систему)
-
Системные процессы
Каждая категория имеет свой приоритет, который может меняться во времени. Например, рассмотрим сутки: рабочий день, вечер, ночь.
– рабочий день
интерактивные пользователи должны работать интерактивно; если нужно выполнить отладочный процесс, то он должен подождать только системные (наивысший приоритет); счетные процессы выполняются фоново
– вечер
интерактивные процессы выполняются с наименьшим приоритетом, системные и отладочные – с наивысшим, монстры – в фоновом режиме
– ночь
работа с монстрами
Если система работает по определенной стратегии и появляется более приоритетная задача, то выполняемое прерывается и стартует нужное.
Для разных категорий процессов могут быть определены разные кванты времени выполнения.
ОС реального времени
Вообразим себе систему, управляющую процессом кипячения молока. Компьютерноуправляемая кастрюля считывает данные датчиков. Существует некоторый интервал времени между закипанием молока и его убеганием. Если этот интервал меньше интервала обработки данных, то молоко убежит. Значит, наша система должна быть такова, чтобы эти интервалы времени были сбалансированы подобающим образом.
Системы реального времени являются специализированными системами, в которых все функции планирования ориентированы на обработку некоторых событий за время, не превосходящее некоторого предельного значения.
Основное качество такой ОС – некоторые события должны обрабатываться за гарантированный интервал времени, не превосходящий определенное время, то есть должны быть детерминированы.
Возникает проблема решения задач реального времени. (Таких, как в примере с молоком, аналогичный пример можно привести с расплавленной сталью.)
ОС многомашинных и многопроцессорных ассоциаций
Сетевые ОС
Сетевая ОС – ОС, которая может работать на сетевом компьютере, реализующем протоколы сетевого взаимодействия, обеспечивающих формирование распределенных приложений.
То есть сетевая ОС позволяет работать с сетевыми приложениями (например, e-mail, перемещения файлов, браузеры).
Распределенные ОС
Распределенная ОС – ОС, работающая на компьютерах сети, при этом на каждом компьютере свое ядро ОС, но на них функционируют распределенные возможности сети.
Пример – распределенная файловая система.