- •Глава 4.
- •Многопоточность
- •Функциональность потоков
- •Потоки на пользовательском уровне и на уровне ядра
- •Другие схемы
- •4.2 Симметричная многопроцессорная обработка
- •Организация симметричной многопроцессорной системы
- •Архитектура многопроцессорных операционных систем
- •4.3. Микроядра
- •Архитектура микроядра
- •Достоинства архитектуры с микроядром
- •Производительность микроядра
- •Архитектура микроядер
- •4.4. Потоки и smp в windows 2000
- •Объекты процессов и потоков
- •Многопоточность
- •Состояния потоков
- •Поддержка подсистем операционной системы
- •Поддержка симметричной многопроцессорной обработки
- •4.5. Управление потоками и smp в solaris
- •Мотивация
- •Структура процессов
- •Выполнение потоков
- •Прерывания в роли потоков
- •4 6. Управление процессамии потоками в linux
- •4.7. Резюме, ключевые термины и контрольные вопросы
- •Контрольные вопросы
- •4.8. Рекомендуемая литература
- •4.9. Задачи
4.4. Потоки и smp в windows 2000
Процессы в операционной системе Windows 2000 (W2K) организованы так, чтобы обеспечить поддержку различных операционных, сред. Процессы, в различных средах отличаются по ряду параметров, включая следующие:
именование процессов;
возможность поддержки потоков в процессах;
способ представления процессов;
способ защиты ресурсов процессов;
механизмы, использующиеся для обмена информацией между процессами и для их синхронизации;
взаимосвязь процессов друг с другом.
Соответственно структуры и сервисы процессов, присущие операционной системе W2K и предоставляемые ее ядром, сравнительно просты и имеют общее назначение. Это позволяет каждой подсистеме эмулировать соответствующие функции и структуру. К важным характеристикам процессов в операционной системе W2K можно отнести следующие:
в W2K процессы реализованы как объекты;
в исполняемом процессе могут содержаться один или несколько потоков;
в объекты-процессы и объекты-потоки встроены возможности синхронизации.
На рис. 4.12 проиллюстрирован способ взаимосвязи между процессом и ресурсом, которым этот процесс управляет или который он использует. В целях безопасности каждому процессу присваивается признак доступа, который называется первичным признаком процесса. При входе пользователя в систему W2K создает признак доступа, в который входит идентификатор безопасности пользователя. Каждый процесс, который создается данным пользователем или запускается от его имени, обладает копией этого признака. Указанный признак используется операционной системой W2K, чтобы подтвердить возможность доступа пользователя к защищенным объектам или возможность выполнения специальных функций в системе и в защищенных объектах. Признак доступа управляет возможностью изменения процессом своих собственных атрибутов.
С процессами связан и ряд блоков, в которых определяется виртуальное адресное пространство, закрепленное в данный момент за процессом. Процесс не может напрямую изменять эти структуры; в этом он зависит от менеджера виртуальной памяти, предоставляющего сервис для выделения памяти процессу.
Наконец, в состав процесса входит таблица объектов, которая управляет известными процессу объектами. Для каждого потока, входящего в этот процесс, имеется один дескриптор. На рис. 4.12 показан один поток, но их может быть много. Кроме того, процесс имеет доступ к файловым объектам и к разделам, которые задают раздел совместно используемой памяти.
Объекты процессов и потоков
Объектно-ориентированная структура операционной системы W2K облегчает разработку подсистемы для работы с процессами. Разработчики W2K воспользовались двумя типами связанных с процессами объектов: процессами и потоками. Процесс — это объект, соответствующий заданию или приложению пользователя, который владеет своими собственными ресурсами, такими, как память и открытые файлы. Поток — это диспетчеризуемая единица работы, которая выполняется последовательно и является прерываемой, что позволяет процессору переключиться на выполнение другого потока.
Каждый процесс в операционной системе W2K представлен объектом, общая структура которого показана на рис. 4.13,а. Каждый процесс определяется некоторым числом атрибутов и может предоставлять определенные сервисы, которые он выполняет после получения соответствующего сообщения-запроса. Единственный способ вызвать такой сервис — отправка сообщения процессу, который его предоставляет. При создании нового процесса операционная система W2K использует класс или тип объектов, определенный как шаблон процесса для генерации новых экземпляров объектов. Во время создания объекта его атрибутам присваиваются конкретные значения. В табл. 4.3 приводится краткое описание каждого атрибута процессов.
Таблица 4.3. Атрибуты процесса в операционной системе Windows 2000
Идентификатор процесса Уникальное значение, идентифицирующее процесс в операционной системе
Дескриптор защиты Описывает, кто создал объект, кто обладает правом доступа к нему или может им пользоваться и кто определяет права доступа к объекту
Базовый приоритет Базовый приоритет выполнения потока, принадлежащего процессу
Процессор по умолчанию Заданный по умолчанию набор процессоров, на котором возможно выполнение потоков процесса
Квоты Максимальное количество страничной и прочей системной памяти, объем в страничном файле и процессорное время, доступные данному процессу Время выполнения Суммарное время, затраченное на выполнение всех потоков процесса Счетчики ввода-вывода Переменные, в которые заносятся сведения о количестве и типе операций ввода-вывода, выполненных потоками процесса |
Счетчики операций Переменные, в которые заносятся сведения о количестве и с виртуальной памятью типе операций с виртуальной памятью, выполненных потоками процесса
Порты Каналы обмена информацией между процессами, в которые исключений/отладки диспетчер процессов должен отправить сообщение при возникновении исключительной ситуации из-за одного из потоков процесса
Статус выхода Причина завершения процесса |
В операционной системе W2K процесс перед выполнением должен содержать хотя бы один поток, который затем может создавать другие потоки. В многопроцессорной системе несколько потоков одного и того же процесса могут выполняться параллельно. На рис. 4.13,6 изображена структура объекта потока, а в табл. 4.4 определены его атрибуты. Заметим, что некоторые атрибуты потока подобны атрибутам процесса. Значения таких атрибутов потока извлекаются из значений соответствующих атрибутов процесса. Например, в многопроцессорной системе сродные потоку процессоры — это множество процессоров, на которых может выполняться данный поток; это множество совпадает с множеством процессоров, сродных процессу, или является его подмножеством.
Таблица 4.4. Атрибуты потока в операционной системе Windows 2000
Идентификатор потока Уникальное значение, идентифицирующее поток, когда он вызывает сервис
Контекст потока Набор значений регистров и другие данные, которыми определяется состояние выполнения потока
Динамический приоритет Приоритет выполнения потока в данный момент времени
Базовый приоритет Нижний предел динамического приоритета потока
Процессоры потока Множество процессоров, на которых может выполняться поток. Это множество является подмножеством процессоров, сродных процессу потока, или совпадает с ним
Время выполнения потока Совокупное время, затраченное на выполнение потока в пользовательском режиме и в режиме ядра
Статус оповещения Флаг, который указывает, следует ли потоку выполнять асинхронный вызов процедуры
Счетчик приостановок В нем указывается, сколько раз выполнение потока было приостановлено без последующего возобновления
Признак имперсонации Временный признак доступа, позволяющий потоку выполнять операции от имени другого процесса (используется подсистемами)
Порт завершения Канал обмена информацией между процессами, на который диспетчер процессов должен отправить сообщение при завершении потока (используется подсистемами)
Статус выхода потока Причина завершения потока |
Заметим, что одним из атрибутов процесса является его контекст. Содержащаяся в контексте информация позволяет операционной системе приостанавливать и возобновлять потоки. Более того, приостановив поток и изменив его контекст, можно изменить его поведение.