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

UptoLike

Глава 6.
Основы многозадачности
6.1. Многозадачность в Windows
Для современных операционных систем и для различных систем
программирования в современном мире поддержка разработки и реализа-
ция многозадачности стала необходимой. При этом на применяемые ре-
шения влияет значительное число факторов.
Конкретная реализация очень сильно зависит от того, какая вычис-
лительная система и какие аспекты работы этой системы рассматривают-
ся с точки зрения многозадачности. Так, например, в некоторых случаях
эффективным способом реализации многозадачности может быть ис-
пользование асинхронных операций ввода-вывода; в других случаях будет
целесообразным использование механизмов передачи сообщений; очень
часто применяется обмен данными через область совместно доступной
памяти. Поэтому знакомство следует начать с основных сведений о вы-
числительных системах.
Современные операционные системы, как правило, поддерживают
несколько различных механизмов многозадачности. Конкретный выбор в
конкретной системе зачастую оказывает значительное влияние на прави-
ла разработки приложений. Поэтому следующим шагом должно быть зна-
комство с поддержкой многозадачности операционными системами. Мы
рассмотрим в общих чертах реализацию многозадачности в Windows.
Однако, главным является не компьютер и не установленная на нем
операционная система – всё это делается только для того, чтобы обеспе-
чить эффективное выполнение приложений. Соответственно знакомство
с многозадачностью должно завершиться обсуждением средств, которые
операционная система предоставляет разработчикам приложений, и не-
которым приемам разработки приложений.
6.1.1. Основные понятия
Начиная знакомство с многозадачными системами, необходимо вы-
делить понятия мультипроцессирования и мультипрограммирования.
Мультипроцессирование – использование нескольких процес-
соров для одновременного выполнения задач.
Мультипрограммирование – одновременное выполнение
нескольких задач на одном или нескольких процессорах.
Основы многозадачности
183
1. первым использованием переменной Y является инструкция
stloc(starg)Y(назовем ее инструкцией инициализации перемен-
ной Y);
2. инструкция инициализации переменной Y непосредственно
следует за инструкцией ldc C (любая инструкция загрузки кон-
станты на стек вычислений). Впрочем, допускается наличие ме-
жду ними любого количества инструкций dup;
3. за исключением инструкции инициализации, переменная Y ис-
пользуется только в инструкциях ldloc(ldarg)Y.
Схема воспроизведения константы C, являющейся значением пере-
менной Y, показана на рисунке 5.5. При воспроизведении осуществляют-
ся два действия:
1. Инструкция инициализации переменной Y заменяется инструк-
цией pop.
2. Инструкции ldloc(ldarg)Yзаменяются инструкциями ldc C.
5.3.3.4. Удаление неиспользуемых переменных
Если некоторая переменная не используется в графе метода или
встречается только в инструкциях stloc(starg), то она удаляется. При
этом все инструкции stloc(starg), использующие эту переменную, заме-
няются инструкциями pop.
Рис. 5.5. Схема воспроизведения константы C, являющейся значени-
ем переменной Y
182
CIL и системное программирование в Microsoft .NET
ldc C
stloc Y
ldloc Y
ldc C
pop
ldc C
182                         CIL и системное программирование в Microsoft .NET   Основы многозадачности                                             183


        1. первым использованием переменной Y является инструкция
           stloc(starg) Y (назовем ее инструкцией инициализации перемен-        Глава 6.
           ной Y);
        2. инструкция инициализации переменной Y непосредственно                Основы многозадачности
           следует за инструкцией ldc C (любая инструкция загрузки кон-
           станты на стек вычислений). Впрочем, допускается наличие ме-
           жду ними любого количества инструкций dup;
        3. за исключением инструкции инициализации, переменная Y ис-            6.1. Многозадачность в Windows
           пользуется только в инструкциях ldloc(ldarg) Y.
     Схема воспроизведения константы C, являющейся значением пере-                   Для современных операционных систем и для различных систем
менной Y, показана на рисунке 5.5. При воспроизведении осуществляют-            программирования в современном мире поддержка разработки и реализа-
ся два действия:                                                                ция многозадачности стала необходимой. При этом на применяемые ре-
        1. Инструкция инициализации переменной Y заменяется инструк-            шения влияет значительное число факторов.
           цией pop.                                                                 Конкретная реализация очень сильно зависит от того, какая вычис-
        2. Инструкции ldloc(ldarg) Y заменяются инструкциями ldc C.             лительная система и какие аспекты работы этой системы рассматривают-
                                                                                ся с точки зрения многозадачности. Так, например, в некоторых случаях
5.3.3.4. Удаление неиспользуемых переменных                                     эффективным способом реализации многозадачности может быть ис-
     Если некоторая переменная не используется в графе метода или               пользование асинхронных операций ввода-вывода; в других случаях будет
встречается только в инструкциях stloc(starg), то она удаляется. При            целесообразным использование механизмов передачи сообщений; очень
этом все инструкции stloc(starg), использующие эту переменную, заме-            часто применяется обмен данными через область совместно доступной
няются инструкциями pop.                                                        памяти. Поэтому знакомство следует начать с основных сведений о вы-
                                                                                числительных системах.
                                                                                     Современные операционные системы, как правило, поддерживают
                                                                                несколько различных механизмов многозадачности. Конкретный выбор в
                ldc C                                  ldc C                    конкретной системе зачастую оказывает значительное влияние на прави-
                                                                                ла разработки приложений. Поэтому следующим шагом должно быть зна-
                                                                                комство с поддержкой многозадачности операционными системами. Мы
               stloc Y                                 pop                      рассмотрим в общих чертах реализацию многозадачности в Windows.
                                                                                     Однако, главным является не компьютер и не установленная на нем
                                                                                операционная система – всё это делается только для того, чтобы обеспе-
                                                                                чить эффективное выполнение приложений. Соответственно знакомство
                                                                                с многозадачностью должно завершиться обсуждением средств, которые
               ldloc Y                                 ldc C                    операционная система предоставляет разработчикам приложений, и не-
                                                                                которым приемам разработки приложений.
                                                                                6.1.1. Основные понятия
      Рис. 5.5. Схема воспроизведения константы C, являющейся значени-              Начиная знакомство с многозадачными системами, необходимо вы-
      ем переменной Y                                                           делить понятия мультипроцессирования и мультипрограммирования.
                                                                                       • Мультипроцессирование – использование нескольких процес-
                                                                                         соров для одновременного выполнения задач.
                                                                                       • Мультипрограммирование – одновременное выполнение
                                                                                         нескольких задач на одном или нескольких процессорах.