Common Intermediate Language и системное программирование в Microsoft.Net. Макаров А.В - 107 стр.

UptoLike

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