Составители:
Рубрика:
6.2. Общие подходы к реализации приложений
с параллельным выполнением операций
Как уже отмечалось, современные вычислительные системы содер-
жат один или несколько центральных процессоров и, как правило,
несколько специализированных устройств, способных к параллельной ра-
боте с центральными процессорами. Операционная система, функциони-
рующая на таком компьютере, должна предоставлять и средства мульти-
программирования, и средства мультипроцессирования, в том числе муль-
типроцессирования на функционально различных устройствах.
Используемые в операционной системе средства реализации много-
задачности можно разделить на несколько групп:
• Взаимодействие с устройствами.
Существуют как специализированные средства взаимодейст-
вия, специфичные для конкретного вида устройств (например,
для графических устройств), так и относительно универсальные
средства, применимые к устройствам разных типов. Наиболее
типичным примером являются средства асинхронного ввода-
вывода.
• Средства управления потоками и волокнами.
Когда процесс запускается, операционная система в нем само-
стоятельно создает первичный поток, начинающий исполнение
кода этого процесса. Создание всех остальных потоков процес-
са требует специальных действий. Операционная система долж-
на предоставлять средства для создания потоков, волокон, их
завершения, приостановки или возобновления, изменения их
характеристик (например, приоритетов, прав доступа и т.д.).
В Windows существует очень интересный гибрид средств управ-
ления потоками и асинхронного ввода-вывода под названием
«порт завершения ввода-вывода». Несмотря на такое название,
это, по большей части, именно специализированный механизм
управления потоками.
• Взаимодействие потоков в рамках одного процесса.
Потоки, работающие в рамках одного процесса, имеют возмож-
ность взаимодействовать друг с другом, используя общее адрес-
ное пространство процесса. Это взаимодействие может, с одной
стороны, приводить к конфликтам одновременного доступа
(нужны средства разрешения конфликтов) и, с другой стороны,
требовать средств изоляции некоторых данных одного потока от
данных другого (нужны механизмы организации памяти, ло-
кальной для потока).
Основы многозадачности
201
200
CIL и системное программирование в Microsoft .NET
Класс приоритета (задает базовый уровень приоритета)
REALTIME HIGH ABOVE_NORMAL NORMAL BELOW_NORMAL IDLE
24 13 10 Foreground Normal Background 4
9876
31 TIME_CRITICAL
30 6
29 5
28 4
27 3
26 HIGHEST
25 ABOVE_NORMAL
24 NORMAL (24)
23 BELOW_NORMAL
22 LOWEST
21 -3
20 -4
19 -5
18 -6
17 -7
16 IDLE
15 TIME_CRITICAL TIME_CRITICAL TIME_CRITICAL TIME_CRITICAL TIME_CRITICAL TIME_CRITICAL TIME_CRITICAL
14 ABOVE_NORMAL
13 NORMAL (13)
12 BELOW_NORMAL HIGHEST
11 LOWEST ABOVE_NORMAL HIGHEST
10 NORMAL (10) ABOVE_NORMAL HIGHEST
9BELOW_NORMAL NORMAL (9) ABOVE_NORMAL HIGHEST
8LOWEST BELOW_NORMAL NORMAL (8) ABOVE_NORMAL HIGHEST
7 LOWEST BELOW_NORMAL NORMAL (7) ABOVE_NORMAL
6 LOWEST BELOW_NORMAL NORMAL (6) HIGHEST
5 LOWEST BELOW_NORMAL ABOVE_NORMAL
4 LOWEST NORMAL (4)
3 BELOW_NORMAL
2 LOWEST
1 IDLE IDLE IDLE IDLE IDLE IDLE IDLE
0 приоритет потока обнуления страниц
Уровень
Таблица 6.2. Соответствие классов приоритета и относительных приоритетов потоков уровням
Уровни приоритета с 16 по 31 отведены только для класса REALTIME_PRIORITY_CLASS
Не рекомендуется создавать потоки с таким классом приоритета, так как это может повлиять на обработку
сообщений от клавиатуры, мыши, сохранение на диске данных кэша и т.д.
200 CIL и системное программирование в Microsoft .NET Основы многозадачности 201
6.2. Общие подходы к реализации приложений
с параллельным выполнением операций
4
IDLE
IDLE
LOWEST
HIGHEST
NORMAL (4)
TIME_CRITICAL
ABOVE_NORMAL
BELOW_NORMAL
Как уже отмечалось, современные вычислительные системы содер-
жат один или несколько центральных процессоров и, как правило,
несколько специализированных устройств, способных к параллельной ра-
6
боте с центральными процессорами. Операционная система, функциони-
IDLE
LOWEST
HIGHEST
рующая на таком компьютере, должна предоставлять и средства мульти-
NORMAL (6)
TIME_CRITICAL
ABOVE_NORMAL
BELOW_NORMAL
BELOW_NORMAL
программирования, и средства мультипроцессирования, в том числе муль-
типроцессирования на функционально различных устройствах.
Используемые в операционной системе средства реализации много-
задачности можно разделить на несколько групп:
7
IDLE
LOWEST
HIGHEST
• Взаимодействие с устройствами.
Background
NORMAL (7)
TIME_CRITICAL
ABOVE_NORMAL
BELOW_NORMAL
Существуют как специализированные средства взаимодейст-
вия, специфичные для конкретного вида устройств (например,
для графических устройств), так и относительно универсальные
средства, применимые к устройствам разных типов. Наиболее
8
IDLE
Normal
LOWEST
NORMAL
HIGHEST
типичным примером являются средства асинхронного ввода-
NORMAL (8)
TIME_CRITICAL
ABOVE_NORMAL
BELOW_NORMAL
вывода.
• Средства управления потоками и волокнами.
Когда процесс запускается, операционная система в нем само-
стоятельно создает первичный поток, начинающий исполнение
9
IDLE
LOWEST
HIGHEST
кода этого процесса. Создание всех остальных потоков процес-
приоритет потока обнуления страниц
Foreground
NORMAL (9)
TIME_CRITICAL
ABOVE_NORMAL
BELOW_NORMAL
са требует специальных действий. Операционная система долж-
на предоставлять средства для создания потоков, волокон, их
завершения, приостановки или возобновления, изменения их
характеристик (например, приоритетов, прав доступа и т.д.).
10
IDLE
LOWEST
В Windows существует очень интересный гибрид средств управ-
HIGHEST
сообщений от клавиатуры, мыши, сохранение на диске данных кэша и т.д.
Класс приоритета (задает базовый уровень приоритета)
NORMAL (10)
TIME_CRITICAL
ABOVE_NORMAL
ABOVE_NORMAL
BELOW_NORMAL
ления потоками и асинхронного ввода-вывода под названием
Уровни приоритета с 16 по 31 отведены только для класса REALTIME_PRIORITY_CLASS
«порт завершения ввода-вывода». Несмотря на такое название,
это, по большей части, именно специализированный механизм
управления потоками.
13
IDLE
Не рекомендуется создавать потоки с таким классом приоритета, так как это может повлиять на обработку
HIGH
• Взаимодействие потоков в рамках одного процесса.
LOWEST
NORMAL (13)
TIME_CRITICAL
ABOVE_NORMAL
BELOW_NORMAL
Потоки, работающие в рамках одного процесса, имеют возмож-
ность взаимодействовать друг с другом, используя общее адрес-
ное пространство процесса. Это взаимодействие может, с одной
стороны, приводить к конфликтам одновременного доступа
6
5
4
3
-3
-4
-5
-6
-7
24
IDLE
(нужны средства разрешения конфликтов) и, с другой стороны,
LOWEST
HIGHEST
REALTIME
NORMAL (24)
TIME_CRITICAL
ABOVE_NORMAL
BELOW_NORMAL
требовать средств изоляции некоторых данных одного потока от
Таблица 6.2. Соответствие классов приоритета и относительных приоритетов потоков уровням
данных другого (нужны механизмы организации памяти, ло-
Уровень
кальной для потока).
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Страницы
- « первая
- ‹ предыдущая
- …
- 105
- 106
- 107
- 108
- 109
- …
- следующая ›
- последняя »
