- •Введение
- •1. Общие вопросы функционирования ос
- •1.1. Цели и свойства операционной системы
- •1.2. Ресурсы, находящиеся под управлением ос
- •Виды операционных систем
- •1.4. Категории ос
- •1.5. Типы операционных систем
- •2. Hardware (Аппаратная часть эвм) и ее влияние на операционную систему
- •3. Организация операционных систем
- •3.1.Структурная организация операционных систем
- •3.2. Среда времени выполнения
- •1. Функции, общие для нескольких прикладных программ.
- •2. Системные функции.
- •3.Глобальные функции.
- •3.3. Структура среды выполнения
- •4. Процессы и примитивы
- •5. Организация диспетчеров
- •5.1. Диспетчирование и состояние процессов.
- •Алгоритмы управления обработкой очередей
- •6. Особенности реализации управления задачами в системах реального времени
- •Требования к ос реального времени
- •Обобщенная структура специализированной ос реального времени
- •6.3. Выбор приоритетов вычислительных процессов и их взаимосвязь с системой прерываний
- •1.Прерывания:
- •2.Системные вп и инициирующие события:
- •3.Проблемные вп и события их инициализации:
- •Словарь терминов
3.3. Структура среды выполнения
Одна из наиболее общих характеристик среды выполнения - четкое распределение ее функций по уровням. Основные принципы структурной организации ОС были сформулированы Дейкстрой (Dijkstra E.W.) при описании мультипрограммной системы T.H.E.
Одновременное функционирование нескольких программ обеспечивается двумя механизмами: механизмом переключения процессоров с программы на программу и механизмом координации использования ресурсов конкурирующими программами пользователей. Соответственно нижний функциональный уровень ОС включает механизмы диспетчирования и временного запрещения доступа, или замков.
Переключение процессора с одной программы на другую осуществляется без специального запроса со стороны выполняющейся программы, хотя в большинстве ОС есть возможность непосредственного вызова диспетчера. Диспетчер передает управление либо по истечении времени, либо при возникновении какого-либо внешнего по отношению к выполняющейся программе события, например, по завершению операций ввода/вывода либо при вводе конкретного запроса с операторской консоли.
Диспетчер обрабатывает очередь активных задач, в которой любой готовой к выполнению программе соответствует элемент определенной структуры. Каждый такой элемент используется для представления на уровне диспетчера информации о некоторой программе. Программа, способная получить управление представлена в очереди диспетчера специальной записью, содержащей сведения о ее статусе и возможностях.
Механизм временного запрещения доступа применяется для упорядочения обслуживания запросов на все вычислительные ресурсы системы, исключая Пр. В различные моменты времени программы, находящиеся на высоких уровнях системной иерархии, могут вызываться для передачи программам пользователей определенных ресурсов и соответственно последующего их освобождения. Часто необходимо, чтобы в течение некоторого интервала времени, пока идет обновление существенной для ОС информации (например, специальных таблиц), всем другим программам доступ к этой информации закрыт.
Пример: два процессора выполняют задачи А и В соответственно. Обе задачи запросили участок памяти. Программа - распределитель памяти может выполняться одновременно на обоих процессорах. Пусть в какой-либо момент она обращается к таблице доступной памяти для поиска соответствующего свободного участка. Необходимо, чтобы программа - распределитель, обслуживающая заявку программы В, не получала доступ к таблице, пока таблицу обрабатывает и изменяет программа - распределитель, обслуживающая заявку программы А. Для обеспечения поставленного условия с таблицей связывается замок, который, будучи установлен определенным образом, закрывает доступ к данной таблице.
В настоящее время символами P и V принято обозначать операции, связанные с временным запретом на доступ (Дейкстра назвал их P- и V-семафорами). В простейшем случае семафор имеет один двоичный разряд, в который записывается текущий сигнал семафора 0 и 1. Если на время работы обрабатывающей программы с некоторым ресурсом доступ к нему со стороны других программ нужно запретить (закрыть замок), то эта обрабатывающая программа выполняет P-операцию над семафором, устанавливая его сигнальный разряд в 0 и запрещая тем самым доступ к ресурсу. По окончании работы с ресурсом программа выполняет V-операцию, устанавливая сигнальный разряд в 1 и тем самым снимая запрет (открывая замок).
В многопроцессорной системе необходимо иметь унифицированный механизм выполнения P- и V-операций. Его отсутствие может создать следующую ситуацию: Пр1, обратившись к семафору, убеждается в том, что он открыт, и пытается записать 0 в сигнальный разряд, но еще до того, как сигнал успел измениться, к семафору обращается Пр2, и, найдя семафор открытым, пытается захватить соответствующий ресурс. Для обработки таких ситуаций существуют специальные алгоритмы, но в большинстве мультипроцессорных систем обращение к семафору и изменение его состояния осуществляется с помощью единого механизма, реализуемого одной непрерывной командой. Процессор, обращаясь к сигнальному разряду семафора, к которому до этого с командой проверить и установить (test-and-set или compare-and-swap) уже обратился другой процессор, получает доступ к семафору только по завершении выполнения над ним предшествующей единой операции. Такой способ поддержки целостности P- и V-операций реализуется аппаратно.
Использование P- и V-операций имеет смысл и в однопроцессорных системах в связи с наличием диспетчера и механизма прерываний. Смысл: до выполнения P-операции фиксируется прерывание (т.е. ресурс захвачен программой) управление передается диспетчеру, и следующей программе, обратившейся за ресурсом, доступ будет запрещен. В некоторых ОС предусмотрена немедленная передача управления программе, захватившей ресурс. Иногда семафоры закрываются программами, работающими в режиме запрещения прерываний.
Дейкстра предложил следующую структуру среды выполнения:
Уровень 4 |
Программа управления заданиями |
1.Прикладные процессы 2.Интерпретация языка программирования |
Уровень 3 |
Программа управления устройствами |
1.Установление соответствия между логическими и физическими устройствами 2.Буферизация |
Уровень 2 |
Программа связи с оператором |
1.Поддержка связи с оператором 2.Управление системной консолью |
Уровень 1 |
Страничный супервизор |
1.Управление памятью 2.Поддержка виртуальной памяти |
Уровень 0 |
Ядро ОС |
1.Управление выполнением процесса 2.Обеспечение синхронизации |
Рис.3.3.1. Уровни ОС T.H.E. (Дейкстра)
Функции управления памятью включаются в систему в следующих случаях:
Пользовательская (или любая другая программа) для запросов дополнительных областей памяти применяет специальные макрокоманды среды выполнения.
Пользовательская (или любая другая) программа при необходимости получает дополнительное пространство посредством механизма "виртуальной" памяти, проецирующего ее на "реальную" память.
С представлением ОС в виде иерархической структуры связаны две очень важные идеи. Первая их них состоит в том, что программам, относящимся к более высоким уровням, предоставляется возможность пользоваться услугами программ, относящихся только к более низким уровням, а вторая - в том, что при переходе к более низким уровням соответствующие функции должны выполняться все быстрее и быстрее. Обращение программы высокого уровня к функциям низких уровней не должно вызывать существенных задержек в ее работе.
Общие принципы иерархического построения систем:
Функции более низких уровней для более высоких неотличимы от аппаратных и обладают четкими интерфейсами.
Функции более высокого уровня могут обращаться только к своим нижним соседям по иерархии и не имеют информации о более глубокой структуре системы.
Каждый уровень работает только со своими структурами данных.
Преимущества, вытекающие из принципа модульности, т.е. четкого разбиения ОС на независимые программные единицы, каждая из которых имеет фиксированные входы и выходы и реализует некоторый набор однотипных специфических функций, иногда ошибочно связываются с иерархической структурой системы.
На современном этапе предлагают различные варианты иерархии. Например, систему можно построить так, что на нижнем уровне окажется лишь монитор (диспетчер + механизм обработки прерываний). При этом функции синхронизации переместятся на более высокий уровень и будут применяться для более тонкой синхронизации, чем использование P- и V-операций. В другом варианте на нижний уровень помещается только механизм управления УВ/В. Это выгодно, если применяемая аппаратура требует подготовки достаточно объемных программ для выполнения элементарных аппаратных функций. Этот же способ годится для систем реального времени, где диспетчер представляет собой не самый удобный набор базисных функций. Мэдник и Донован (Madnick and Donovan) считают целесообразным обобщить уровень 3 иерархической структуры и возложить на него ответственность за управление процессами. На этом уровне создаются и уничтожаются управляющие блоки, содержащие информацию о выполняющихся программах. На уровне 2 находится механизм управления памятью, на 4 уровне - физическое управление в/в, на 5 уровне - файлами и логическими устройствами. Если процессу нужна память, то программа управления процессами обращается к другому элементу того же уровня - программе управления памятью.
Различные варианты появляются как следствие попыток учесть конкретные особенности различных ОС, не нарушая их общей иерархической организации. Однако при построении любой иерархической системы четкое разграничение функций, доступных на каждом уровне, приводит к возникновению существенных проблем. Эти проблемы в большинстве случаев можно решить путем дублирования одинаковых функций на разных уровнях, а также введением служебных внутриуровневых связей.
