русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Потоки и SMP в Windows 2000

Процессы в операционной системе Windows 2000 (W2K) организованы так, чтобы обеспечить поддержку различных операционных сред. Процессы, в различных средах отличаются по ряду параметров, включая следующие:

  • именование процессов;
  • возможность поддержки потоков в процессах;
  • способ представления процессов;
  • способ защиты ресурсов процессов;
  • механизмы, использующиеся для обмена информацией между процессами и для их синхронизации;
  • взаимосвязь процессов друг с другом.

Соответственно структуры и сервисы процессов, присущие операционной системе W2K и предоставляемые ее ядром, сравнительно просты и имеют общее назначение. Это позволяет каждой подсистеме эмулировать соответствующие функции и структуру. К важным характеристикам процессов в операционной системе W2K можно отнести следующие:

  • в W2K процессы реализованы как объекты;
  • в исполняемом процессе могут содержаться один или несколько потоков;
  • в объекты-процессы и объекты-потоки встроены возможности синхронизации.

На рис. 4.12 проиллюстрирован способ взаимосвязи между процессом и ресурсом, которым этот процесс управляет или который он использует. В целях безопасности каждому процессу присваивается признак доступа, который называется первичным признаком процесса. При входе пользователя в систему W2K создает признак доступа, в который входит идентификатор безопасности пользователя. Каждый процесс, который создается данным пользователем или запускается от его имени, обладает копией этого признака. Указанный признак используется операционной системой W2K, чтобы подтвердить возможность доступа пользователя к защищенным объектам или возможность выполнения специальных функций в системе и в защищенных объектах. Признак доступа управляет возможностью изменения процессом своих собственных атрибутов.


Рис. 4.12. Процессы и их ресурсы в операционной системе Windows 2000 [CUST93]

С процессами связан и ряд блоков, в которых определяется виртуальное адресное пространство, закрепленное в данный момент за процессом. Процесс не может напрямую изменять эти структуры; в этом он зависит от менеджера виртуальной памяти, предоставляющего сервис для выделения памяти процессу.

Наконец, в состав процесса входит таблица объектов, которая управляет известными процессу объектами. Для каждого потока, входящего в этот процесс, имеется один дескриптор. На рис. 4.12 показан один поток, но их может быть много. Кроме того, процесс имеет доступ к файловым объектам и к разделам, которые задают раздел совместно используемой памяти.

 

 

Объекты процессов и потоков

Объектно-ориентированная структура операционной системы W2K облегчает разработку подсистемы для работы с процессами. Разработчики W2K воспользовались двумя типами связанных с процессами объектов: процессами и потоками. Процесс — это объект, соответствующий заданию или приложению пользователя, который владеет своими собственными ресурсами, такими, как память и открытые файлы. Поток — это диспетчеризуемая единица работы, которая выполняется последовательно и является прерываемой, что позволяет процессору переключиться на выполнение другого потока.

Каждый процесс в операционной системе W2K представлен объектом, общая структура которого показана на рис. 4.13,а. Каждый процесс определяется некоторым числом атрибутов и может предоставлять определенные сервисы, которые он выполняет после получения соответствующего сообщения-запроса. Единственный способ вызвать такой сервис — отправка сообщения процессу, который его предоставляет. При создании нового процесса операционная система W2K использует класс или тип объектов, определенный как шаблон процесса для генерации новых экземпляров объектов. Во время создания объекта его атрибутам присваиваются конкретные значения. В табл. 4.3 приводится краткое описание каждого атрибута процессов.

Таблица 4.3. Атрибуты процесса в операционной системе Windows 2000


Продолж. таблицы 4.3.


б) Объект-поток
Рис. 4.13. Объекты процессов и потоков в операционной системе Windows 2000

В операционной системе W2K процесс перед выполнением должен содержать хотя бы один поток, который затем может создавать другие потоки. В многопроцессорной системе несколько потоков одного и того же процесса могут выполняться параллельно. На рис. 4.13,6 изображена структура объекта потока, а в табл. 4.4 определены его атрибуты. Заметим, что некоторые атрибуты потока подобны атрибутам процесса. Значения таких атрибутов потока извлекаются из значений соответствующих атрибутов процесса. Например, в многопроцессорной системе сродные потоку процессоры — это множество процессоров, на которых может выполняться данный поток; это множество совпадает с множеством процессоров, сродных процессу, или является его подмножеством.


Таблица 4.4. Атрибуты потока в операционной системе Windows 2000

Заметим, что одним из атрибутов процесса является его контекст. Содержащаяся в контексте информация позволяет операционной системе приостанавливать и возобновлять потоки. Более того, приостановив поток и изменив его контекст, можно изменить его поведение.

 

Многопоточность

Операционная система W2K поддерживает параллельное выполнение процессов, потому что потоки различных процессов могут выполняться одновременно. Более того, нескольким потокам одного и того же процесса могут быть выделены различные процессоры, и эти потоки также могут выполняться одновременно. Параллелизм достигается в многопоточном процессе без накладных расходов на использование нескольких процессов. Потоки одного и того же процесса могут обмениваться между собой информацией с помощью общего адресного пространства и имеют доступ к совместным ресурсам процесса. Потоки, принадлежащие разным процессам, могут обмениваться между собой информацией с помощью общей области памяти, установленной для этих двух процессов.

Объектно-ориентированный многопоточный процесс является эффективным средством реализации серверных приложений. Например, один обслуживающий процесс может обслуживать несколько клиентов. Каждый запрос клиента приводит к созданию в сервере нового потока.

 

 

Состояния потоков

Поток, созданный в операционной системе W2K, может находиться в одном из шести состояний (см. рис. 4.14). Перечислим эти состояния.

Готовый к выполнению. Поток, который может быть направлен на выполнение. Диспетчер микроядра отслеживает все готовые к выполнению потоки и осуществляет их планирование в соответствии с приоритетом.

Резервный. Поток, который будет запущен следующим на данном процессоре. Поток находится в этом состоянии до тех пор, пока процессор не освободится. Если приоритет резервного потока достаточно высок, то он может вытеснить выполняющийся в данный момент поток. В противном случае резервный поток ждет, пока не произойдет блокировка выполняющегося потока или пока не истечет выделенный ему промежуток времени.

Выполняющийся. Как только микроядро переключит поток или процесс, резервный поток перейдет в состояние выполнения и будет пребывать в этом состоянии до тех пор, пока не произойдет одно из следующих событий: поток будет вытеснен, закончится отведенный ему интервал времени, поток будет блокирован или завершен. В первых двух случаях поток снова переходит в состояние готовности.

Ожидающий. Поток входит в состояние ожидания, если (1) он блокирован каким-то событием (например, операцией ввода-вывода), (2) он добровольно ждет синхронизации или (3) среда подсистемы предписывает потоку, чтобы он сам себя приостановил. После того как условия ожидания будут удовлетворены, поток переходит в состояние готовности, если все его ресурсы будут доступны.

Переходный. Поток переходит в это состояние, если он готов к выполнению, но ресурсы недоступны (например, страницы стека потока могут находиться на диске). После того как необходимые ресурсы станут доступны, процесс переходит в состояние готовности.

Завершающийся. Завершение потока может быть инициировано самим потоком, другим потоком или может произойти вместе с завершением родительского процесса.  После завершения необходимых операций освобождения ресурсов и т.п. поток удаляется из системы (или может быть сохранен исполнительной системой для дальнейшей повторной инициализации).


Рис. 4.14. Состояния потоков в операционной системе Windows 2000

 

 

Поддержка подсистем операционной системы

Средства общего назначения для работы с процессами и потоками должны поддерживать структуры процессов и потоков, соответствующие различным клиентам операционной системы. В обязанности каждой подсистемы входит использование функций обработки процессов и потоков операционной системы W2K для эмуляции функций обработки процессов и потоков соответствующей подсистемы операционной системы. Система управления процессами и потоками довольно сложна; здесь мы приводим лишь ее краткий обзор.

Процесс создается по запросу приложения операционной системы, который поступает в соответствующую защищенную подсистему. Подсистема, в свою очередь, отправляет запрос на создание процесса исполнительной системе операционной системы W2K, которая создает объект-процесс и возвращает подсистеме его дескриптор. Создавая процесс, операционная система W2K автоматически поток не создает (в отличие от OS/2 и Win32, где создание нового процесса всегда сопровождается созданием потока). Поэтому подсистемы повторно обращаются к менеджеру процессов операционной системы W2K, чтобы создать поток нового процесса и получить его дескриптор. Затем соответствующая информация о потоке и процессе возвращается приложению. В 16-битовых системах Windows и POSIX потоки не поддерживаются. Чтобы новый процесс мог быть активизирован, операционная система W2K создает его поток для подсистем этих операционных систем, но возвращает приложению только информацию о процессе. Тот факт, что процесс приложения реализуется с помощью потока, для приложения остается незамеченным.

Если новый процесс создается подсистемой Win32 или подсистемой поддержки OS/2, он наследует многие атрибуты создавшего его процесса. Однако в среде операционной системы W2K процесс создается непрямым образом. Процесс клиентского приложения генерирует запрос на создание процесса в адрес соответствующей подсистемы; процесс подсистемы, в свою очередь, отправляет запрос на создание процесса исполнительной системе W2K. Так как новый процесс должен наследовать характеристики процесса-клиента, а не обслуживающего процесса, подсистема W2K имеет возможность указывать родительский процесс нового процесса. Следовательно, новый процесс наследует признак доступа, квоты, базовый приоритет и принятое по умолчанию сродство процессоров родительского процесса.

 

 

Поддержка симметричной многопроцессорной обработки

Операционная система W2K поддерживает симметричную многопроцессорную конфигурацию аппаратного обеспечения. Потоки любого процесса, включая потоки исполнительной системы, могут выполняться на любом процессоре. При условии отсутствия ограничений на сродство процессоров микроядро выделяет готовому к выполнению потоку процессор, который освобождается первым. При этом гарантируется, что ни один процессор не будет простаивать или выполнять поток с более низким приоритетом, если готов к выполнению процесс с более высоким приоритетом. Несколько потоков одного и того же процесса могут одновременно выполняться на нескольких процессорах.

Выделяя потоку процессор, микроядро по умолчанию придерживается мягкой стратегии сродства процессоров: диспетчер пытается выделить готовому к выполнению потоку тот же процессор, на котором этот поток выполнялся прошлый раз. Это способствует рациональному использованию данных, оставшихся в кэшах процессора после предыдущего выполнения процесса. Приложение может ограничить круг возможного выбора доступных потоку процессоров, сузив его до одного фиксированного процессора (жесткое сродство).

Просмотров:

Вернуться в оглавление:Операционные системы




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.