Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_СГTУ new v10.doc
Скачиваний:
148
Добавлен:
12.11.2019
Размер:
4.13 Mб
Скачать

2.5. Управление потоками в Windows

Система управления виртуальной памятью контролирует распределение памяти и работу страничной организации. Диспетчер памяти может использовать страницы размером от 4 до 64 кб. Каждый пользовательский процесс получает отдельное 32-битное адресное пространство, предоставляющее процессу 4 Гб памяти (диапазон адресов 232). Часть памяти зарезервирована под ОС так, что каждому пользователю доступны только 2 Гб виртуального адресного пространства.

В страничной организации каждая страница может находится в следующих состояниях:

  1. доступна, т.е. страница используется процессом;

  2. зарезервирована – множество страниц, которые диспетчер отвел под процессы, но которые не учитываются в квоте памяти процесса до их использования;

  3. размещена – страница, для которой диспетчер выделяет память в файле подкачки страниц на диске, в котором располагаются страницы при удалении их из основной памяти.

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

При выполнении процесса (потока) ОС должна принимать 3 типа решений, связанных с планированием: долгосрочное, среднее и краткосрочное (рис.24). Долгосрочное определяет, когда новый процесс должен поступить в систему. Среднесрочное является частью свопинга и определяет, какой из готовых к выполнению процессов будет выполняться процессором следующим.

При краткосрочном планировании планировщик использует ряд критериев. Основные: время отклика системы (для пользователя) и степень использования процессора (для системы) [3]. Они противоречивы. Имеется ряд альтернативных критериев для выбора среди готовых к выполнению потоков.

  1. Первым поступил – первым обслужен. Выбирается поток, ожидающий обслуживания дольше других.

  2. Круговое планирование. Использует кванты времени для ограничения времени непрерывного выполнения потока (они выполняются циклически).

  3. Выбор самого короткого потока. Выбирается поток с минимальным времени работы. Вытеснение потоков не применяется.

  4. Наименьшее остающееся время. Выбирается поток с минимальным ожидаемым временем оставшейся работы. Поток может быть вытеснен.

Рис.24. Уровни планирования загрузки процессора

  1. Наивысшее отношению отклика. Принимаемое решение опирается на оценку нормализованного времени оборота потока по состояниям.

  2. Снижение приоритета. Определяет множество очередей и распределяет в них потоки, основываясь на истории выполнения и других критериях.

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

В Windows NT реализован планировщик с вытеснением и гибкой системой уровней приоритетов, включая круговое планирование на каждом уровне, а для уровней «переменных приоритетов» – динамическое изменение приоритета на основе текущей активности потоков. В Windows NT две группы (класса) приоритетов: реального времени и переменные, по 16 уровней в каждом (рис. 25). При появлении потока (в состоянии готов) с большим приоритетом, чем у выполняющегося потока, выполняющийся поток вытесняется и начинает выполняться поток с большим приоритетом.

Рис. 25 Приоритеты потоков в Windows

В классе РВ все потоки имеют ориентированные приоритеты от 16 до 31, которые никогда не изменяется. Все активные потоки с определенным уровнем приоритета располагаются в круговой очереди данного уровня. Приоритеты потоков в период исполнения остаются постоянными [3].

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

Начальный приоритет потока в классе переменных приоритетов определяется двумя величинами: базовым приоритетом процесса и базовым приоритетом потока (рис.26).

Одним из атрибутов процесса является его базовый приоритет, который может принимать значения от 0 до 15. Каждый объект потока, связанный с объектом процесса, имеет собственный базовый приоритет, который указывает базовый приоритет потока по отношению к приоритету процесса. Он может отличаться от базового приоритета процесса не более чем на 2 уровня в большую или меньшую сторону. Так, например, если базовый приоритет процесса равен 4, а базовый приоритет одного из его потоков равен -1, то начальный приоритет (при создании потока) этого потока равен 3.

15

14

13

12

11

10

9

8

7

6

Наивысший

5

Повышенный

4

Базовый приоритет

Обычный

3

Пониженный

Начальный

2

Наинизший

1

0

Приоритет

процесса

Базовый

приоритет потока

Динамический приоритет


Рис. 26 Пример отношения приоритетов в Windows NT

После активизации потока из класса переменных приоритетов его действительный приоритет (именуемый динамическим приоритетом потока) может колебаться в определенных пределах. Он не может упасть ниже наименьшего базового приоритета потока и не может подняться выше максимально возможного значения приоритета для данного класса, т.е. 15. В приведенном выше примере (рис.26) это диапазон приоритетов от 2 до 15.