![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Если операционная система поддерживает концепции потоков в рамках одного процесса, она называется многопоточной. Многопоточные приложения имеют ряд преимуществ.
Задачи
Как уже говорилось, СРВ — это программно-аппаратный комплекс, осуществляющий мониторинг какого-то объекта и/или управление им в условиях временнЫх ограничений. Возникающие на объекте события подлежат обработке в СРВ. Будем сопоставлять каждому типу события задачу.
ЗАДАЧА (TASK) — блок программного кода, ответственный за обработку тех или иных событий, возникающих на объекте управления.
Задача может быть «оформлена» в виде:
РАБОТА ЗАДАЧИ (JOB) — процесс исполнения блока программного кода в ходе обработки события.
Каждая работа задачи характеризуется следующими временными параметрами:
· данные.
Виды задач: процессы, потоки (нити).
Процесс – отдельно загруженный программный модуль, который во время исполнения имеет в памяти все свои независимые области для кода и данных.
Потоки могут пользоваться общими участками кодов и данных в рамках одного программного модуля.
Преимущества потоков:
1) Способность размещаться внутри одного программного модуля => экономия внешней и внутренней памяти.
2) Позволяет эффективно организовать межзадачный обмен сообщениями.
3) Как правило, контекстов меньше, чем потоков, следовательно, время переключения между потоками меньше, чем между процессами.
Недостатки потоков:
1) Они не могут быть загружены динамически (при добавлении нового потока надо будет произвести соответствующие изменения в исходном тексте и перекомпилировать всю программу).
2) Преимущество процесса: процессы могут динамически загружаться, следовательно, функции программы могут быть расширены; процессам соответствуют отдельные программные модули, которые могут быть разработаны различными исполнителями/фирмами.
3) Потоки имеют доступ к областям данных друг друга, это может привести к ситуации когда некорректно работающий поток может испортить общие данные.
4) Преимущество процесса: процессы защищены от взаимного влияния, обращение к данным приводит к обработке прерывания.
Вывод: реализация механизмов управления программами и потоками, возможность их взаимного существования и взаимодействия определяется конкретное ПО СРВ.
Основные свойства задач.
Вся важнейшая информация с точки зрения СРВ характеризуется в управляющем блоке. Характеризуются параметры: имя и номер задачи, верхняя и нижняя граница стека, ссылка на очередь сообщений, статус (состояние), приоритеты задачи и т.д.
Приоритет задачи – целое число, которое показывает важность задачи по отношению к другим задачам.
В СРВ различают динамические (изменяются во времени) и статические (постоянные во времени) приоритеты.
Контекст задач – набор данных, содержащих всю нужную информацию для возобновления выполнения программы с точки ее прерывания.
Обычно контекст характеризуется в управляющем блоке, содержит следующие данные: счетчик команд, указатель стека, некоторые регистры, характеризующие состояние программы.
Планировщик задач в случае необходимости сохраняет контекст текущей активной задачи и восстанавливает его при назначении прерванной задачи к выполнению.
Статус/состояние задачи – задача:
- Активна;
- Готова к выполнению;
- Блокирована;
- Пустая (задача выполняется когда в системе нет других готовых к выполнению задач, имеет низший приоритет);
- Многократный запуск задач (многозадачная СРВ позволяет запускать несколько копий одной и той же задачи, каждая создает свой управляющий блок, для нее выделяется своя область памят).
Режимы планирования задач.
Планирование является центральной частью ОСРВ.
Функции планировщика – определять какая из задач должна выполняться в системе в каждый момент времени.
Принцип работы планировщика.
1) Цикличность работы алгоритмов – каждая задача выполняется циклически.
2) Разделение времени – каждой задаче отводится определенное число квантов времени, после истечения заданного интервала управление передается следующей готовой к выполнению задаче с наивысшим приоритетом, но задачи с низшим приоритетом могут никогда не выполняться, следовательно, нужно заблокировать задачи с высоким приоритетом – метод равнодоступности, реализуется принцип адаптивной приоритетности, приоритет задачи, выполняющейся слишком долго, уменьшается. Данный метод применяется в основном в многопользовательских системах, в системах мягкого разделения времени. В СРВ – многорежимность (жесткое разделение времени).
3) Кооперативная многозадачность – задача выполняется пока она сама не передаст управление другой задаче – редко применяется в СРВ.
4) Приоритетная многозадачность с вытеснением – более часто используется в СРВ; высокоприоритетная задача может вытеснить выполняемую задачу с низким приоритетом.
Синхронизация задач в СРВ.
Взаимная согласованность задач во времени является важным принципом СРВ. Способы реализации межзадач общения в СРВ разнообразны.
В большинстве СРВ их элементы способны передавать/принимать синхронные и асинхронные сообщения.
Часть ОП в СРВ называется «почтовый ящик».
- Новое сообщение стирает старое (даже когда старое сообщение не обработано);
- Новое сообщение – в конец очереди сообщений
- Стандартный подход – FIFO.
Связь между процессами в ОСРВ.
Для ОСРВ характерна развитость механизмов синхронизации процессов и передачи данных между ними. К таким механизмам относятся семафоры, мьютексы, события, сигналы, средства для работы с разделяемой памятью, каналы данных (pipes), очереди сообщений. Многие из подобных механизмов используются и в ОС общего назначения, но их реализация в ОСРВ имеет свои особенности - время исполнения системных вызовов почти не зависит от состояния системы и в каждой ОСРВ есть, по крайней мере, один быстрый механизм передачи данных от процесса к процессу.
Семафор – средство синхронизации доступа к ресурсам.
Участки программ, где происходит обращение к разделяемым ресурсам, называется критичной секцией. Чтобы гарантировать, что критичная секция используется в каждый момент времени только одним потоком, используют механизм, подобный семафорам, который называется mutex – сигнализирует другим потокам, что критическая секция уже кем-то выполняется. «Смертельный захват» - зависание программы, в СРВ – причина: задачи не поделили ресурсы. Циркулярный захват – более двух задач.
Алгоритмы планирования задач в СРВ должны находиться в соответствии с методами управления доступам ко всем ресурсам и должны соответствовать критериям оптимального функционирования системы.
Инверсия (девальвация) – эффект похож на «смертельный захват», но более сложный.
1 – приоритет высокий
2 – среднеприоритетная задача
3 – низкоприоритетная задача
В определенный момент времени первая и вторая задача блокированы в ожидании внешнего события (информация от датчиков). Пусть третья задача получила управление и захватила семафор А и не успела его отдать, так как была прервана первой задачей. В свою очередь первая задача была блокирована при попытке захватить семафор А, так как семафор А захвачен третьей задачей.
Если к этому моменту вторая задача находится в состоянии готовности, то управление будет передано ей. В такой ситуации вторая задача может использовать процессор времени бесконечно долго, следовательно, самая приоритетная задача первая не сможет работать.
Дата публикования: 2015-10-09; Прочитано: 1763 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!