Для выполнения на компьютере какой-либо программы необходимо, чтобы она имела доступ к ресурсам компьютера

Вид материалаДокументы
Подобный материал:
1   ...   8   9   10   11   12   13   14   15   16

Для 1 – цель: предоставление для всех процессов одного и того же времени ожидания доступности процессора.

Для 2, 3, 4 – недостаток: нужно знать расчетное время (либо знать заранее, либо оценить).

42. Планирование процессов в ОС семейства Windows.

Для каждой программы, которая должна быть выполнена, создаётся свой процесс. С точки зрения процесса его работа состоит в выполнении определённого набора команд; последовательность выполнения этих команд задаётся адресами, которые заносятся в счётчик команд.

Планирование в Windows осуществляется на уровне потоков.

Поскольку решения, принимаемые в ходе планирования, касаются исключительно потоков, система не обращает внимания на то, какому процессу принадлежит тот или иной поток. Так, если у процесса А есть 10, у процесса В — 2 готовых к выполнению потока, и все 12 имеют одинаковый приоритет, каждый из потоков теоретически получит 1/12 процессорного времени, потому что Windows не станет поровну делить процессорное время между двумя процессами.

В Windows существует 32 уровня приоритета, от 0 до 31. Они группируются так: 31 - 16 уровни реального времени; 15 - 1 динамические уровни; 0 - системный уровень, зарезервированный для потока обнуления страниц (zero-page thread).

При создании процесса, ему назначается один из шести классов приоритетов:

Real time class (значение 24), High class (значение 13), Above normal class (значение 10), Normal class (значение 8), Below normal class (значение 6), и Idle class (значение 4).

Уровни приоритета назначаются с учетом двух разных точек зрения - Windows API и ядра Windows.

Windows API сначала упорядочивает процессы по классам приоритета, назначенным при их создании [Real-time (реального времени), High (высокий), Above Normal (выше обычного), Normal (обычный), Below Normal (ниже обычного) и Idle (простаивающий)], а затем — по относительному приоритету индивидуальных потоков в рамках этих процессов [Time-critical (критичный по времени), Highest (наивысший), Above-normal (выше обычного), Normal (обычный), Below-normal (ниже обычного), Lowest (наименьший) и Idle (простаивающий)].

Базовый приоритет каждого потока в Windows API устанавливается, исходя из класса приоритета его процесса и относительного приоритета самого потока. Если у процесса только одно значение приоритета (базовое), то у каждого потока их два: текущее и базовое. Решения, связанные с планированием, принимаются на основе текущего приоритета. В определенных обстоятельствах система может на короткое время повышать приоритеты потоков в динамическом диапазоне (1-15). Windows никогда не изменяет приоритеты потоков в диапазоне реального времени (16-31), поэтому у таких потоков базовый приоритет идентичен текущему.

Обычно базовый приоритет процесса (а значит, и базовый приоритет первичного потока) по умолчанию равен значению из середины диапазонов приоритетов процессов (24, 13, 10, 8, 6 или 4). Однако базовый приоритет некоторых системных процессов (например, диспетчера сеансов, контроллера сервисов и сервера локальной аутентификации) несколько превышает значение по умолчанию для класса Normal (8). Более высокий базовый приоритет по умолчанию обеспечивает запуск потоков этих процессов с приоритетом выше 8.

Можно повысить или понизить приоритет потока любого приложения в динамическом диапазоне; однако, чтобы задать значение из диапазона реального времени, должна быть привилегия Increase Scheduling Priority. Многие важные системные потоки режима ядра выполняются в диапазоне приоритетов реального времени. Поэтому, если потоки слишком долго выполняются с приоритетом этого диапазона, они могут блокировать критичные системные функции (например, в диспетчере памяти, диспетчере кэша или драйверах устройств).

43. Планирование процессов в ОС семейства Unix и ОС Linux.

В классических Unix-ах стратегия планирования многоуровневая с применением RR в пределах очередей каждого приоритета + односекундное вытеснение. Приоритет процесса пересчитывается 1 раз в секунду. В порядке снижения приоритетов вся базовая система приоритетов выглядит так: самый высокий приоритет – программа свопинга (страничного обмена); управление блочными устройствами ввода/вывода; управление файлами; управление файлами; управление символьными устройствами ввода/вывода; пользовательские процессы.

Каждый процесс имеет два атрибута приоритета: текущий приоритет, на основании которого происходит планирование, и относительный приоритет, называемый также поправкой приоритета - nice number, который задается при порождении процесса и влияет на текущий приоритет.

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

Основной смысл такого планирования состоит в том, что время процессора(ов) делится на кванты фиксированного размера, а процессоры, готовые к выполнению, выстраиваются в кольцевую очередь. Очевидно, что чем больше процессоров в системе, тем меньше процессов остается в очереди на исполнение, поскольку они распределяются на любые свободные в данный момент ЦПУ. Кроме того, в ОС UNIX был внедрен механизм легковесных процессов (light-weight processes) или нитей управления. Фактически, нити - это процессы, исполняющиеся в одной и той же виртуальной памяти обычного (обладающего виртуальной памятью) процесса. Механизм нитей позволяет еще больше поднять эффективность работы SMP систем, так как позволяет распараллеливать выполнение даже в рамках одного процесса. Синхронизация выполнения нитей достигается при помощи механизма замков (lock).