Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Статические и динамические приоритеты

Читайте также:
  1. А) Аэродинамические характеристики здания
  2. Динамические диски
  3. Динамические и статистические закономерности в природе
  4. ДИНАМИЧЕСКИЕ И СТАТИСТИЧЕСКИЕ ЗАКОНОМЕРНОСТИ В ПРИРОДЕ.
  5. Динамические и статистические законы
  6. Динамические параметры
  7. Динамические пороги мягкого хэндовера

Статические приоритеты не изменяются. Такие приоритеты используются в ОС РВ (Например в QNX). В пример синхронизации потоков потока присваивается уровень приоритета 10.

attr.param.sched_priority = 10;//установить приоритет потоков

Однако они не реагируют на изменения в окружающей ситуации, которые могут сделать желательной корректировку приоритетов.

Механизмы динамических приоритетов реагирует на изменение в обстановке. Начальное значение приоритета, присвоенное процессу, может действовать в течение некоторого периода времени, после чего назначается новое, более подходящее значение в зависимости от способа формирования данных уровней приоритетов. Новое значение приоритета процесса в процессе его работы может также быть изменено. Механизмы реализации динамических приоритетов значительно сложнее в реализации и связаны с большими издержками по сравнению со статическими приоритетами. Однако предполагается, что эти издержки оправдываются повышением количества одновременно обслуживаемых процессов, более равномерным распределением аппаратных ресурсов, используемых процессами (например процессорное время). Т.е. ОС становится менее приспособленной для решения задач реального времени, т.к. приоритет работы ОС направлен на повышения количества одновременно обслуживаемых процессов. Механизм динамических приоритетов реализован в ОС Windows 2000.

ОС Windows 2000 поддерживает шесть классов приоритетов: idle – простаивающий; below normal – ниже обычного; normal – обычный; above normal – выше обычного; high – высокий и realtime – реального времени. Внутри класса приоритета существуют семь относительных приоритетов потоков: idle – простаивающий; lowest – низший; below normal - ниже обычного; normal – обычный; above normal – выше обычного; nighest – высший и time-critical – критичный по времени.

Для получения приоритета потока необходимо задать класс приоритета процесса и относительный приоритет потока. Причем уровень приоритета потока можно изменять в пределах назначенного приоритета процесса.

hProcess =::GetCurrentProcess(); // Получение дескриптора процесса

::SetPriorityClass(hProcess,HIGH_PRIORITY_CLASS);// установление класса процесса

m_pWDTThread->SetThreadPriority(THREAD_PRIORITY_TIME_CRITICAL); //установка приоритета потока

Планирование по принципу FIFO

При планировании по данному принципу процессор предоставляется потоку (процессу) на столько времени, сколько ему необходимо. Прервать работу потока может только поток с приоритетом большим, чем выполняемый. Т.е. первым всегда выполняется первый поток из очереди готовых к выполнению потоков с наивысшим приоритетом. Рис.1.6.2.

Рис.1.6.2 Планирование по принципу FIFO.

Если выполняемый поток завершает свою работу или добровольно уступает процессор, то ядро анализирует состояние других потоков того же самого приоритета на готовность их к выполнению. Если таких нет, то ядро анализирует потоки с более низким приоритетом.

Поток может добровольно уступить процессор в следующих ситуациях: переходит в режим ожидания, блокируется на семафоре, ожидает приема сообщения и т.д. В таких случаях может выполняться поток с более низким приоритетом.

Круговое циклическое планирование

Данный тип планирования аналогичен планированию по наивысшему приоритету, с то той лишь разницей, что потоку выделятся время работы, называемое квантом. Когда ядро выполняет алгоритм кругового циклического планирования оно засекает время. Если поток не блокируется в течение выделенного ему кванта времени, то квант исчезает. Тогда ядро проверят наличие другого готового к выполнению потока с тем же самым приоритетом. Если такой поток обнаруживается, то ядро активирует его, если такого потока нет, то ядро снова ставит на выполнение предыдущий поток (т.е. ядро выделяет потоку для работы еще один квант времени).


Дата добавления: 2015-12-08; просмотров: 171 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.008 сек.)