Особенности реализации многозадачности ОС Windows

Автор работы: Пользователь скрыл имя, 14 Октября 2009 в 17:38, Не определен

Описание работы

Содержание
Введение 3
Глава I. Многозадачность и виды многозадачности 5
1.1. Многозадачность и многопоточность 5
1.2. Особенности реализации многозадачности в DOS 6
1.3. Presentation Manager и последовательная очередь сообщений 9
1.4. Многопоточная архитектура 11
1.5. Преимущества Windows 13
1.6. Объект Mutex 19
Глава II. Особенности реализации многозадачности Windows 2003 23
2.1. Реализация многозадачности в Windows 2003 23
2.2. Управление квантованием в Windows 2003 25
2.3. Управление приоритетами в Windows 2003 27
2.4. Особенности многозадачности в среде Windows 2003 29
Заключение 34
Список используемой литературы 38

Файлы: 1 файл

КурсоваОсобенности реализации многозадачности Windows 1.doc

— 235.50 Кб (Скачать файл)

            В Windows определен список событий,  которые приводят к перепланированию  потоков [11, c. 48]:

  • создание и завершение потока;
  • выделенный потоку квант исчерпан;
  • поток вышел из состояния ожидания;
  • поток перешел в состояние ожидания;
  • изменен приоритет потока;
  • изменена привязка к процессору.

           В целях уменьшения затрат  на планирование потоков несколько  изменен граф состояний потока. На рис. 1.1 - граф состояний потока в Windows. Переход из состояния "готовность" в состояние "выполнение" сделан в два этапа - выбранный к выполнению поток подготавливается к выполнению и переводится в состояние "выбран"; эта подготовка может осуществляться до наступления момента перепланирования, и в нужный момент достаточно просто переключить контекст выполняющегося потока на выбранный.

 
Рис. 1.1.  Граф состояний потока

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

         При выборе потока для выполнения  учитываются приоритеты потоков  (абсолютные приоритеты) - система  начинает выполнять код потока  с наибольшим приоритетом из  числа готовых к исполнению.

         Процесс выбора потока для  выполнения усложняется в случае SMP систем, когда помимо приоритета готового к исполнению потока учитывается, на каком процессоре ранее выполнялся код данного потока.

         В Windows выделяют понятие "идеального" процессора - им назначается процессор,  на котором запускается приложение в первый раз.[12, c. 20] В дальнейшем система старается выполнять код потока именно на этом процессоре - для SMP систем это решение улучшает использование кэш-памяти, а для NUMA систем позволяет, по большей части, ограничиться использованием оперативной памяти, локальной для данного процессора. Заметим, что диспетчер памяти Windows при выделении памяти для запускаемого процесса старается учитывать доступность памяти для назначенного процессора в случае NUMA системы.

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

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

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

           Квантование потоков осуществляется  по тикам системного таймера,  продолжительность одного тика  составляет обычно 10 или 15 мс, больший  по продолжительности тик назначают  многопроцессорным машинам. Каждый  тик системного таймера соответствует 3 условным единицам; величина кванта может варьироваться от 2 до 12 тиков (от 6 до 36 единиц).[14, c. 103]

          Параметр реестра HKLMSYSTEM CurrentControlSet ControlPriorityControl Win32PrioritySeparation предназначен для управления квантованием. На рис. 1.2 дан формат этого параметра для Windows 2000-2003, а в таблице 1.1 приводятся длительности квантов в условных единицах для разных значений полей параметра Win32PrioritySeparation.

 
Рис. 1.2.  Управление квантованием в Windows (длительность кванта показана в табл. 1.1)
 
 

Таблица 1.1. Длительность кванта
  Короткий  квант Длинный квант
Значение  младших 2-х бит параметра Win32PrioritySeparation 0 1 2 0 1 2
Переменная  длительность 6 12 18 12 24 36
Фиксированная длительность 18 18 18 36 36 36

      

 Этот  параметр может быть изменен  с помощью панели управления, однако, лишь в очень ограниченных рамках:

          "System Properties|Advanced|Performance:Settings|Advanced|Adjust for best performance of:" позволяет выбрать только:

  • "applications"

Короткие  кванты переменной длины, значение 0x26 т.е. 10 01 10 (короткие кванты переменной длительности, 18 ед.).

  • "background services"

Длинные кванты фиксированной длины, значение 0x18 т.е. 01 10 00 (длинные кванты фиксированной  длительности, 36 ед.). Более тонкая настройка  возможна с помощью редактора  реестра.[14, c. 155]

          Управление длительностью кванта  связано с активностью процесса, которая определяется наличием  интерфейса пользователя (GUI или  консоль) и его активностью.  Если процесс находится в фоновом  режиме, то длительность назначенного  ему кванта соответствует "нулевым" колонкам таблицы 6.1 (выделены серым цветом; т.е. длительности 6 или 24 - для переменной длины кванта или 18 и 36 - для фиксированной). Когда процесс становится активным, то ему назначается продолжительность квантов, исходя из значения двух младших бит параметра Win32PrioritySeparation в соответствии с приведенной таблицей.

            Еще один случай увеличения  длительности кванта - процесс долгое  время не получал процессорного  времени (это может случиться,  если все время есть активные процессы более высокого приоритета). В этой ситуации система раз в 3-4 секунды (в зависимости от продолжительности тика) назначает процессу повышенный приоритет и квант удвоенной длительности. По истечении этого кванта приоритет возвращается к прежнему значению и восстанавливается рекомендуемая длительность кванта.

2.3. Управление приоритетами в Windows 2003

            В Windows выделяется 32 уровня приоритетов. 0 соответствует самому низкому  приоритету (с таким приоритетом  работает только специальный  поток обнуления страниц), 31 - самому высокому. Этот диапазон делится на три части[15, c. 76]:

  • Приоритет 0 - соответствует приоритету потока обнуления страниц.
  • Приоритеты с 1 по 15 - соответствуют динамическим уровням приоритетов. Большинство потоков работают именно в этом диапазоне приоритетов, и Windows может корректировать в некоторых случаях приоритеты потоков из этого диапазона.
  • Приоритеты с 16 по 31 - соответствуют приоритетам "реального времени". Этот уровень достаточно высок для того, чтобы поток, работающий с таким приоритетом, мог реально помешать нормальной работе других потоков в системе - например, помешать обрабатывать сообщения от клавиатуры и мыши. Windows самостоятельно не корректирует приоритеты этого диапазона.

           Для некоторого упрощения управления приоритетами в Windows выделяют "классы приоритета" (priority class), которые задают базовый уровень приоритета, и "относительные приоритеты" потоков, которые корректируют указанный базовый уровень. Операционная система предоставляет набор функций для управления классами и относительными приоритетами потоков.

             Планировщик операционной системы  также может корректировать уровень  приоритета (из диапазона 1-15), однако  базовый уровень (т.е. класс)  не может быть изменен. Такая  коррекция приоритета выполняется в случае:

  • Завершения операции ввода-вывода - в зависимости от устройства, приоритет повышается на 1 - 8 уровней.
  • По окончании ожидания события или семафора (см. далее) - на один уровень.
  • При пробуждении GUI потоков - на 2 уровня.
  • По окончании ожидания потоком активного процесса (определяется по активности интерфейса) - на величину, указанную младшими 2 битами параметра Win32PrioritySeparation (см. управление длительностью кванта).

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

           Еще один случай повышения  приоритета (вместе с увеличением  длительности кванта) - процесс долгое время не получал процессорного времени. В этой ситуации система раз в 3-4 секунды назначает процессу приоритет, равный 15, и квант удвоенной длительности. По истечении этого кванта приоритет возвращается к прежнему значению и восстанавливается рекомендуемая длительность кванта.

В зависимости от настройки планировщика, NORMAL_PRIORITY_CLASS с базовым уровнем  приоритета 8 может быть "расщеплен" на два базовых уровня - для потоков  активных процессов (базовый уровень 9) и для потоков фоновых процессов (базовый уровень 7). Для класса HIGH_PRIORITY_CLASS относительные приоритеты потока THREAD_PRIORITY_HIGHEST и THREAD_PRIORITY_TIME_CRITICAL дают одинаковое значение приоритета 15.

2.4. Особенности многозадачности  в среде Windows 2003

         Общеизвестно, что в Windows 2003 реализована вытесняющая многозадачность. Именно это привлекло внимание многих фирм-разработчиков ПО, поскольку предшественницы этой ОС справедливо считались тяжелыми и неповоротливыми.

         Появление вытесняющей многозадачности  в Windows 2003 резко повысило надежность оболочки. Теперь в девяносто девяти случаях из ста "неработоспособную" программу можно корректно снять с выполнения, не затрагивая при этом другие программы. Конечно, если программа "подвисает", то принудительное удаление ее из системы бесследно не проходит и в дальнейшем может привести к краху всей системы. Но в любом случае после снятия такой программы появляется возможность корректного завершения других программ и перезапуска системы без потери данных.

          Основные понятия многозадачности в Windows 2003 - процесс (задача) и поток (нить). Под процессом понимается выполнение программы в целом (WinWord, Excel, Visual C++ и т. д.) Потоками в свою очередь являются части процесса, выполняющиеся параллельно.[14, c. 91]

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

        Заметим, что одновременно выполняющиеся потоки могут быть зависимы друг от друга - например, один поток подготавливает данные, другой их сортирует, а третий выводит результат в файл. Передав готовые данные второму потоку на сортировку, первый начинает обработку нового блока. Тем временем второй поток сообщает третьему, что можно выводить результаты. Следовательно, работу этих трех потоков необходимо синхронизировать.

         Для синхронизации процессов и потоков в Windows 2003 предусмотрено четыре механизма[11, c. 110]:

  • классический семафор
  • критический раздел
  • исключающий семафор (объект типа mutex)
  • событие (event object)

         Мы рассмотрим два из них: критический раздел и исключающий семафор.

         Критический раздел - это часть кода, доступ к которому в данное время имеет только один поток. Другой поток может обратиться к критическому разделу, только когда первый выйдет из него.

         Для работы с критическими разделами используются следующие функции:

Информация о работе Особенности реализации многозадачности ОС Windows