Особенности реализации многозадачности ОС Windows
14 Октября 2009, автор: пользователь скрыл имя
Описание работы
Содержание
Введение 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 определен список событий,
которые приводят к
- создание и завершение потока;
- выделенный потоку квант исчерпан;
- поток вышел из состояния ожидания;
- поток перешел в состояние ожидания;
- изменен приоритет потока;
- изменена привязка к процессору.
В целях уменьшения затрат
на планирование потоков
Рис. 1.1. Граф состояний потока
Также в два этапа может
происходить переход из
При выборе потока для
Процесс выбора потока для
выполнения усложняется в
В Windows выделяют понятие "идеального"
процессора - им назначается процессор,
на котором запускается
В многопроцессорной системе используется либо первый простаивающий процессор, либо, при необходимости вытеснения уже работающего потока, проверяются идеальный процессор, последний использовавшийся и процессор с наибольшим номером. Если на одном из них работает поток с меньшим приоритетом, то последний вытесняется и заменяется новым потоком; в противном случае выполнение потока откладывается (даже если в системе есть процессоры, занятые потоками с меньшим приоритетом).
Современные реализации Windows в рамках единого дерева кодов могут быть использованы для различных классов задач - от рабочих станций, обслуживающих преимущественно интерфейс пользователя, до серверных установок на многопроцессорных машинах. Чтобы можно было эффективно использовать одну ОС в столь разных классах систем, планировщик Windows динамически изменяет длительность квантов и приоритеты, назначаемые потокам. Администратор системы может в некоторой степени изменить поведение системы при назначении длительности квантов и приоритетов потоков.
2.2. Управление квантованием в Windows 2003
Квантование потоков
Параметр реестра HKLMSYSTEM CurrentControlSet ControlPriorityControl Win32PrioritySeparation предназначен для управления квантованием. На рис. 1.2 дан формат этого параметра для Windows 2000-2003, а в таблице 1.1 приводятся длительности квантов в условных единицах для разных значений полей параметра Win32PrioritySeparation.
Рис. 1.2. Управление квантованием в
Windows (длительность кванта показана в табл.
1.1)
| Таблица 1.1. Длительность кванта | ||||||
| Короткий квант | Длинный квант | |||||
| Значение
младших 2-х бит параметра Win32Priorit |
0 | 1 | 2 | 0 | 1 | 2 |
| Переменная длительность | 6 | 12 | 18 | 12 | 24 | 36 |
| Фиксированная длительность | 18 | 18 | 18 | 36 | 36 | 36 |
Этот параметр может быть изменен с помощью панели управления, однако, лишь в очень ограниченных рамках:
"System Properties|Advanced|
- "applications"
Короткие кванты переменной длины, значение 0x26 т.е. 10 01 10 (короткие кванты переменной длительности, 18 ед.).
- "background services"
Длинные кванты фиксированной длины, значение 0x18 т.е. 01 10 00 (длинные кванты фиксированной длительности, 36 ед.). Более тонкая настройка возможна с помощью редактора реестра.[14, c. 155]
Управление длительностью
Еще один случай увеличения
длительности кванта - процесс долгое
время не получал
2.3. Управление приоритетами в Windows 2003
В Windows выделяется 32 уровня приоритетов. 0 соответствует самому низкому приоритету (с таким приоритетом работает только специальный поток обнуления страниц), 31 - самому высокому. Этот диапазон делится на три части[15, c. 76]:
- Приоритет 0 - соответствует приоритету потока обнуления страниц.
- Приоритеты с 1 по 15 - соответствуют динамическим уровням приоритетов. Большинство потоков работают именно в этом диапазоне приоритетов, и Windows может корректировать в некоторых случаях приоритеты потоков из этого диапазона.
- Приоритеты с 16 по 31 - соответствуют приоритетам "реального времени". Этот уровень достаточно высок для того, чтобы поток, работающий с таким приоритетом, мог реально помешать нормальной работе других потоков в системе - например, помешать обрабатывать сообщения от клавиатуры и мыши. Windows самостоятельно не корректирует приоритеты этого диапазона.
Для некоторого упрощения управления приоритетами в Windows выделяют "классы приоритета" (priority class), которые задают базовый уровень приоритета, и "относительные приоритеты" потоков, которые корректируют указанный базовый уровень. Операционная система предоставляет набор функций для управления классами и относительными приоритетами потоков.
Планировщик операционной
- Завершения операции ввода-вывода - в зависимости от устройства, приоритет повышается на 1 - 8 уровней.
- По окончании ожидания события или семафора (см. далее) - на один уровень.
- При пробуждении GUI потоков - на 2 уровня.
- По окончании ожидания потоком активного процесса (определяется по активности интерфейса) - на величину, указанную младшими 2 битами параметра Win32PrioritySeparation (см. управление длительностью кванта).
В случае коррекции приоритета по одной из перечисленных причин, повышенный приоритет начинает постепенно снижаться до начального уровня потока - с каждым тиком таймера на один уровень.
Еще один случай повышения приоритета (вместе с увеличением длительности кванта) - процесс долгое время не получал процессорного времени. В этой ситуации система раз в 3-4 секунды назначает процессу приоритет, равный 15, и квант удвоенной длительности. По истечении этого кванта приоритет возвращается к прежнему значению и восстанавливается рекомендуемая длительность кванта.
В
зависимости от настройки планировщика,
NORMAL_PRIORITY_CLASS с базовым уровнем
приоритета 8 может быть "расщеплен"
на два базовых уровня - для потоков
активных процессов (базовый уровень
9) и для потоков фоновых
2.4. Особенности многозадачности в среде Windows 2003
Общеизвестно, что в Windows 2003 реализована вытесняющая многозадачность. Именно это привлекло внимание многих фирм-разработчиков ПО, поскольку предшественницы этой ОС справедливо считались тяжелыми и неповоротливыми.
Появление вытесняющей
Основные понятия многозадачности в Windows 2003 - процесс (задача) и поток (нить). Под процессом понимается выполнение программы в целом (WinWord, Excel, Visual C++ и т. д.) Потоками в свою очередь являются части процесса, выполняющиеся параллельно.[14, c. 91]
Любой процесс имеет хотя бы один поток. В этом случае его можно отождествить с потоком. Процессы интересны с точки зрения взаимодействия одновременно выполняющихся программ, потоки (участки кода, выполняющиеся параллельно в одном процессе) - с точки зрения их синхронизации.
Заметим, что одновременно выполняющиеся потоки могут быть зависимы друг от друга - например, один поток подготавливает данные, другой их сортирует, а третий выводит результат в файл. Передав готовые данные второму потоку на сортировку, первый начинает обработку нового блока. Тем временем второй поток сообщает третьему, что можно выводить результаты. Следовательно, работу этих трех потоков необходимо синхронизировать.
Для синхронизации процессов и потоков в Windows 2003 предусмотрено четыре механизма[11, c. 110]:
- классический семафор
- критический раздел
- исключающий семафор (объект типа mutex)
- событие (event object)
Мы рассмотрим два из них: критический раздел и исключающий семафор.
Критический раздел - это часть кода, доступ к которому в данное время имеет только один поток. Другой поток может обратиться к критическому разделу, только когда первый выйдет из него.
Для работы с критическими разделами используются следующие функции: