Микропроцессорное программное управление. Архитектура IXA. Зарубин А.А. - 21 стр.

UptoLike

Составители: 

Рубрика: 

21
Требование 3. ОС должна обеспечивать предсказуемые механизмы синхронизации задач
Задачи разделяют данные (ресурсы) и должны сообщаться друг с другом,
следовательно, должны существовать механизмы блокирования и коммуникации.
Требование 4. Должна существовать система наследования приоритетов
На самом деле, именно этот механизм синхронизации и тот факт, что различные
нити используют одно и то же пространство памяти, отличают нити от процессов.
Процессы не разделяют одно и то же пространство памяти. Так, например, старые версии
UNIX не являются многонитевыми. Старый UNIX - многозадачная ОС, где задачами
являются процессы, которые сообщаются через потоки (pipes) и разделяемую память. Оба
эти механизма используют файловую систему, а ее поведение - непредсказуемо.
Комбинация приоритета нити и разделение ресурсов между ними приводит к
другому явлению: классической проблеме инверсии приоритетов. Это можно
проиллюстрировать на примере, где есть как минимум три нити. Когда нить низшего
приоритета захватила ресурс, разделяемый с нитью высшего приоритета, и сначала
выполняется нить среднего приоритета, выполнение нити высшего приоритета будет
приостановлено, пока не освободится ресурс и не отработает нить среднего приоритета. В
этой ситуации время, необходимое для завершения нити высшего приоритета, зависит от
нижних приоритетных уровней, - это и есть инверсия приоритетов. Ясно, что в такой
ситуации трудно выдержать ограничение на время исполнения.
Чтобы устранить такие инверсии, ОСРВ должна допускать наследование
приоритета, т.е., повышение уровня приоритета нити до уровня нити, которая ее
вызывает. Наследование означает, что блокирующая ресурс нить наследует приоритет
нити, которую она блокирует (разумеется, это справедливо лишь в том случае, если
блокируемая нить имеет более высокий приоритет).
Иногда утверждают, что в грамотно спроектированной системе такая проблема не
возникает. В случае сложных систем с этим нельзя согласиться. Единственный способ
решения этой проблемы состоит в увеличении приоритета нити вручную прежде, чем
ресурс окажется заблокированным. Разумеется, это возможно в случае, когда две нити
разных приоритетов претендуют на один ресурс. В общем случае решения не существует.
Требование 5. Поведение ОС должно быть известно
Наконец, следует рассмотреть временные ограничения. Времена выполнения
системных вызовов и временные характеристики поведения системы в различных
обстоятельствах должны быть известны разработчику, поэтому производитель ОСРВ
должен приводить следующие характеристики:
Латентную задержку прерывания (т.е. время от момента прерывания до момента
запуска задачи): она должна быть предсказуема и согласована с требованиями
приложения. Эта величина зависит от числа одновременно "висящих" прерываний;
максимальное время выполнения каждого системного вызова. Оно должно быть
предсказуемо и не зависимо от числа объектов в системе;
максимальное время маскирования прерываний драйверами и ОС.
Следующие пункты также должны быть известны разработчику:
системные уровни прерываний;
уровни прерываний драйверов устройств, их временные характеристики и т.д.
Когда все указанные характеристики ОС известны, можно представить себе
разработку СРВ на ее базе. Естественно, требования по производительности к
разрабатываемой системе должны быть согласованы с возможностями выбранной ОСРВ и
аппаратуры.