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

UptoLike

ное распределение процессорного времени и будут обрабатываться плани-
ровщиком с учетом их «особого статуса»; однако при этом нельзя гаранти-
ровать строгого выполнения временных ограничений. Более того, в силу
используемых механизмов управления памятью, нельзя точно предсказать
время, необходимое для выполнения той или иной операции. В любой мо-
мент времени при самом невинном обращении к какой-либо переменной
или функции может потребоваться обработка ошибок доступа, подкачка
выгруженных страниц, освобождение памяти и т.д. – то есть действия,
время завершения которых предсказать крайне трудно. Фактически мож-
но давать лишь вероятностные прогнозы по времени выполнения той или
иной операции. До определенных рамок Windows можно применять в мяг-
ких системах реального времени – с достаточно свободными ограничени-
ями, но даже незначительная вероятность превышения временных огра-
ничений иногда просто недопустима.
6.1.1.3. Базовая терминология
В операционных системах сложилось несколько подходов к реализа-
ции многозадачности, и, соответственно, принятая в разных операцион-
ных системах терминология несколько отличается. Так, обычно разделяют
понятия задачи, процесса и потока. При этом понятие задачи является в
большей степени историческим, либо очень специфичным. Это понятие
сформировалось, когда единицей выделения процессорного времени бы-
ла сама задача; планировщик же мог только переключать задачи. В совре-
менных системах большее распространение получил подход, в котором в
рамках одной «задачи» может быть выделено несколько одновременно вы-
полняемых ветвей кода, соответственно термин «задача» заместился тер-
минами «процесс» и «поток».
Процесс является объектом планирования адресного пространства и
некоторых ресурсов, выделенных задаче. Но при этом процесс не являет-
ся потребителем процессорного времени и не подлежит планированию.
Поток является объектом планирования процессорного времени.
Дополнительно к этому с потоком ассоциируют некоторые другие свойст-
ва, например, пользователя, – это позволяет потокам даже одного процес-
са действовать от имени разных пользователей (воплощение) и использо-
вать механизмы ограничения доступа к ресурсам операционной системы.
Например, сервер, предоставляющий доступ к каким-либо файлам, может
создать поток, обслуживающий конкретного клиента, и воплотить его с
правами доступа, назначенными этому клиенту. Однако в данный момент
для нас важно, что управление процессорным временем осуществляется
применительно к потокам, а управление адресным пространством – при-
менительно к процессам; каждый процесс содержит, как минимум, один
поток.
Основы многозадачности
193
Большинство современных операционных систем используют ком-
бинированные планировщики, одновременно применяющие квантование
с переменной продолжительностью кванта и абсолютные или относитель-
ные приоритеты (см. рис. 6.7).
Выбор задачи, которая начнет выполняться вследствие срабатывания
планировщика, также определяется многими факторами. Среди важней-
ших – приоритет готовых к исполнению задач. Однако, помимо этого, час-
то принимают во внимание текущее и предыдущее состояния задачи. Такой
подход позволяет реализовать достаточно сложный и тщательно сбаланси-
рованный планировщик задач. Очень часто применяют такой прием: назна-
ченный задаче приоритет рассматривается в качестве некоторого «базово-
го», а планировщик операционной системы может в определенных рамках
корректировать реальный приоритет в зависимости от истории выполнения
задачи. Типичными причинами коррекции приоритета являются:
запуск задачи (для возможно скорейшего начала исполнения);
досрочное освобождение процессора до исчерпания отведенно-
го кванта (велик шанс, что задача и в этот раз так же быстро от-
даст управление);
частый вызов операций ввода-вывода (при этом задача чаще на-
ходится в ожидании завершения операции, нежели занимает
процессорное время);
продолжительное ожидание в очереди (приоритет ожидающей
задачи часто постепенно начинают увеличивать);
и многие другие.
Работа планировщика существенно усложняется в случае SMP ма-
шин, когда необходимо принимать во внимание привязку задач к процес-
сорам (иногда задаче можно назначить конкретный процессор) и то, на
каком процессоре задача выполнялась до того (это позволяет эффектив-
нее использовать кэш-память процессора).
Реализации Windows NT, 2000, XP, 2003+ предусматривают достаточно
развитый и сложный планировщик, учитывающий множество факторов и
корректирующий как назначение и длительность отводимых задаче кван-
тов, так и приоритеты задач. При этом планировщик является настраивае-
мым, и его логика работы несколько отличается в зависимости от настроек
системы (некоторые доступны через панель управления) и от назначения
системы (работа планировщика различна у серверов и рабочих станций).
Важно отметить, что Windows является гибкой системой разделения
времени с вытесняющей многозадачностью и не может рассматриваться в
качестве системы реального времени. Даже те процессы, которые с точки
зрения Windows относятся к классу процессов так называемого «реально-
го времени», на самом деле требованиям, предъявляемым к системам ре-
ального времени, не удовлетворяют. Такие процессы получат приоритет-
192
CIL и системное программирование в Microsoft .NET
192                          CIL и системное программирование в Microsoft .NET   Основы многозадачности                                              193


      Большинство современных операционных систем используют ком-                ное распределение процессорного времени и будут обрабатываться плани-
бинированные планировщики, одновременно применяющие квантование                  ровщиком с учетом их «особого статуса»; однако при этом нельзя гаранти-
с переменной продолжительностью кванта и абсолютные или относитель-              ровать строгого выполнения временных ограничений. Более того, в силу
ные приоритеты (см. рис. 6.7).                                                   используемых механизмов управления памятью, нельзя точно предсказать
      Выбор задачи, которая начнет выполняться вследствие срабатывания           время, необходимое для выполнения той или иной операции. В любой мо-
планировщика, также определяется многими факторами. Среди важней-                мент времени при самом невинном обращении к какой-либо переменной
ших – приоритет готовых к исполнению задач. Однако, помимо этого, час-           или функции может потребоваться обработка ошибок доступа, подкачка
то принимают во внимание текущее и предыдущее состояния задачи. Такой            выгруженных страниц, освобождение памяти и т.д. – то есть действия,
подход позволяет реализовать достаточно сложный и тщательно сбаланси-            время завершения которых предсказать крайне трудно. Фактически мож-
рованный планировщик задач. Очень часто применяют такой прием: назна-            но давать лишь вероятностные прогнозы по времени выполнения той или
ченный задаче приоритет рассматривается в качестве некоторого «базово-           иной операции. До определенных рамок Windows можно применять в мяг-
го», а планировщик операционной системы может в определенных рамках              ких системах реального времени – с достаточно свободными ограничени-
корректировать реальный приоритет в зависимости от истории выполнения            ями, но даже незначительная вероятность превышения временных огра-
задачи. Типичными причинами коррекции приоритета являются:                       ничений иногда просто недопустима.
        • запуск задачи (для возможно скорейшего начала исполнения);
        • досрочное освобождение процессора до исчерпания отведенно-             6.1.1.3. Базовая терминология
           го кванта (велик шанс, что задача и в этот раз так же быстро от-           В операционных системах сложилось несколько подходов к реализа-
           даст управление);                                                     ции многозадачности, и, соответственно, принятая в разных операцион-
        • частый вызов операций ввода-вывода (при этом задача чаще на-           ных системах терминология несколько отличается. Так, обычно разделяют
           ходится в ожидании завершения операции, нежели занимает               понятия задачи, процесса и потока. При этом понятие задачи является в
           процессорное время);                                                  большей степени историческим, либо очень специфичным. Это понятие
        • продолжительное ожидание в очереди (приоритет ожидающей                сформировалось, когда единицей выделения процессорного времени бы-
           задачи часто постепенно начинают увеличивать);                        ла сама задача; планировщик же мог только переключать задачи. В совре-
        • и многие другие.                                                       менных системах большее распространение получил подход, в котором в
      Работа планировщика существенно усложняется в случае SMP ма-               рамках одной «задачи» может быть выделено несколько одновременно вы-
шин, когда необходимо принимать во внимание привязку задач к процес-             полняемых ветвей кода, соответственно термин «задача» заместился тер-
сорам (иногда задаче можно назначить конкретный процессор) и то, на              минами «процесс» и «поток».
каком процессоре задача выполнялась до того (это позволяет эффектив-                  Процесс является объектом планирования адресного пространства и
нее использовать кэш-память процессора).                                         некоторых ресурсов, выделенных задаче. Но при этом процесс не являет-
      Реализации Windows NT, 2000, XP, 2003+ предусматривают достаточно          ся потребителем процессорного времени и не подлежит планированию.
развитый и сложный планировщик, учитывающий множество факторов и                      Поток является объектом планирования процессорного времени.
корректирующий как назначение и длительность отводимых задаче кван-              Дополнительно к этому с потоком ассоциируют некоторые другие свойст-
тов, так и приоритеты задач. При этом планировщик является настраивае-           ва, например, пользователя, – это позволяет потокам даже одного процес-
мым, и его логика работы несколько отличается в зависимости от настроек          са действовать от имени разных пользователей (воплощение) и использо-
системы (некоторые доступны через панель управления) и от назначения             вать механизмы ограничения доступа к ресурсам операционной системы.
системы (работа планировщика различна у серверов и рабочих станций).             Например, сервер, предоставляющий доступ к каким-либо файлам, может
      Важно отметить, что Windows является гибкой системой разделения            создать поток, обслуживающий конкретного клиента, и воплотить его с
времени с вытесняющей многозадачностью и не может рассматриваться в              правами доступа, назначенными этому клиенту. Однако в данный момент
качестве системы реального времени. Даже те процессы, которые с точки            для нас важно, что управление процессорным временем осуществляется
зрения Windows относятся к классу процессов так называемого «реально-            применительно к потокам, а управление адресным пространством – при-
го времени», на самом деле требованиям, предъявляемым к системам ре-             менительно к процессам; каждый процесс содержит, как минимум, один
ального времени, не удовлетворяют. Такие процессы получат приоритет-             поток.