Программно-технический комплекс Учебное пособие Новочеркасск юргту (нпи) 2010. Удк 519. 23 (075. 8) Ббк 22. 17я73
Вид материала | Учебное пособие |
Содержание2.2.3. Процессы и потоки NT NT процессы Поток – это сущность внутри процесса, которую ядро NT |
- Практикум Новочеркасск юргту (нпи) 2010 удк 330 (075. 8) Ббк 65. 012. 1я73, 2097.42kb.
- Учебно-методическое пособие Новочеркасск юргту (нпи) 2011 г. Удк 004 : 012 (076) ббк, 1329.07kb.
- Учебно-методическое пособие Новочеркасск юргту (нпи) 2011 г. Удк 004 : 012 (076) ббк, 994.64kb.
- Пособие предназначено для студентов, изучающих курсы «Экономики» и«Экономической теории», 4766.75kb.
- Учебно-методическое пособие Новочеркасск 2006 удк 004. 4 (07), 341.54kb.
- Учебное пособие к практическим занятиям по дисциплине «Физическая культура» Новочеркасск, 1055.75kb.
- Конспект лекций москва 2004 удк 519. 713(075)+519. 76(075) ббк 22. 18я7, 1805.53kb.
- Данное пособие предназначено для кураторов академических групп младших курсов, а также, 1695.39kb.
- Пособие предназначено для студентов специальности «Прикладная информатика (в экономике)», 1911.82kb.
- Учебное пособие тверь 2008 удк 519. 876 (075. 8 + 338 (075. 8) Ббк 3817я731-1 + 450., 2962.9kb.
2.2.3. Процессы и потоки NT
В Windows NT за создание, удаление и взаимодействие процессов отвечает диспетчер процессов (process manager). Базовые процессы NT имеют ряд характеристик, отличающих их от процессов других ОС:
- процессы NT реализованы как объекты, и доступ к ним осуществляется посредством объектных сервисов;
- в адресном пространстве процесса NT может исполняться несколько потоков;
- как объект-процесс, так и объект-поток имеют встроенные возможности синхронизации;
- диспетчер процессов NT не поддерживает между создаваемыми им процессами отношений родитель-потомок или каких-либо иных.
В Windows NT процесс, чтобы он мог работать, должен включать четыре элемента:
- исполняемой программы, которая определяет начальный код и данные;
- закрытого адресного пространства (address space), т. е. набора адресов виртуальной памяти, который процесс может использовать;
- системных ресурсов, таких, как семафоры, коммуникационные порта и файлы, выделяемых ОС процессу во время выполнения программы;
- по крайней мере один поток управления (thread of execution).
Адресное пространство. Каждый процесс не должен иметь неограниченного права управления другими процессами. Одним из способов достижения этого в Windows NT служит система виртуальной памяти (virtual memory). Виртуальная память включается с самого начала и каждый процесс запускается в своем собственном адресном пространстве. Это увеличивает надежность, предотвращая процессы от разрушающего воздействия других процессов, но изолирует задачи от аппаратуры и ухудшают доступ к ним непосредственно.
Управление виртуальной памятью включает механизм свопинга. Для СРВ, которые должны откликаться на внешние события в предопределенных временных рамках, это ведет к непредсказуемости, когда система должна получить страницу памяти с диска. Windows NT позволяет закрыть страницы в памяти, вызвав функцию VirtualLock. Память для окна свопируется, если оно сжато в иконку. При этом проблемы свопинга для приложений реального времени можно избежать, ограничиваясь доступной физической памятью. Однако на уровне драйвера устройств свопинг можно обойти.
При обращении процесса по виртуальному адресу система виртуальной памяти транслирует этот адрес в физический. Она предотвращает непосредственный доступ процесса к виртуальной памяти, занятой другими процессами или ОС. Для исполнения кода ОС или доступа к памяти ОС поток исполняется в привилегированном режиме процессора – так называемом режиме ядра (kernel mode). Однако большинство процессов – это процессы пользовательского режима, потоки которого исполняются в основном в непривилегированном режиме процессора – пользовательском режиме (user mode).
Поток пользовательского режима получает доступ к ОС, вызывая некоторый системный сервис. Когда поток вызывает сервис, процесс перехватывает его и переключает из пользовательского режима в режим ядра. ОС получает управление потоком, проверяет аргументы, переданные потоком сервису, после чего исполняет сервис. Перед возвратом управления пользовательской программе ОС переключает поток обратно в пользовательский режим. Таким образом, ОС защищает себя и свои данные от просмотра и модификации пользовательскими процессами.
В пользовательском режиме исполняются как прикладные программы, так и защищенные подсистемы Windows NT. Последние представляют собой процессы-серверы пользовательского режима, реализующие важные функции системы. Они реализованы как серверы, чтобы упростить базовую ОС и обеспечить ее расширяемость. Подсистемы работают в пользовательском режиме, так что адресное пространство каждой из них защищено от прикладных процессов и от других подсистем.
Набор ресурсов. Кроме закрытого адресного пространства, с каждым процессом связан набор разнообразных системных ресурсов. Кроме материально осязаемых ресурсов процесс имеет набор квот на ресурсы, ограничивающий объем памяти, который его потоки используют для открытия описателей объектов. У каждого процесса есть базовый приоритет и процессорное сродство по умолчанию.
В исполнительной системе NT процессы – это объекты, создаваемые и уничтожаемые диспетчером объектов. Объект-процесс, как и другие объекты, содержит заголовок, создаваемый и инициализируемый диспетчером объектов. В заголовке хранятся стандартные атрибуты объекта, такие, как дескриптор защиты объекта-процесса, имя процесса (может назначаться ему в целях совместного использования) и каталог объектов, в котором хранится имя, если оно есть.
Диспетчер процессов определяет атрибуты, хранящиеся в теле объектов-процессов, а также предоставляет системные сервисы для чтения и изменения этих атрибутов. Некоторые атрибуты объекта-процесса налагают ограничения на потоки, исполняемые внутри процесса.
Базовый приоритет процесса помогает ядру NT регулировать приоритет потоков в системе. Приоритеты отдельных потоков изменяются, но всегда остаются в диапазоне базовых приоритетов их процессов. Подсистемы среды могут использовать базовый приоритет, чтобы повлиять на то, потоки какого процесса будут выбраны ядром NT для исполнения в первую очередь. Подсистема Win32 при помощи сервисов NT повышает базовый приоритет процесса выбранного пользователем приложения и понижает базовый приоритет процессов фоновых приложений, давая интерактивным приложениям преимущество над другими. Размеры квот, процессорное сродство и базовый приоритет входят в состав тех атрибутов и структур данных процесса, которые могут наследоваться от него другим процессом.
Порты исключений и отладки процесса – это каналы коммуникаций между процессами, по которым ОС посылает сообщения, если один из потоков процесса возбуждает исключение или если идет отладка процесса. Поток другого процесса ожидает у порта для приема сообщения и соответствующих действий.
Сервис создания процесса гибок и дает возможность разным подсистемам создавать процессы с разными начальными атрибутами. Сервис текущего процесса позволяет процессу быстро получить собственный описатель, не обращаясь к диспетчеру объектов. Сервис завершения процесса останавливает исполнение его потоков, закрывает все открытые описатели объектов и уничтожает виртуальное адресное пространство процесса.
Сервисы виртуальной памяти реализованы диспетчером виртуальной памяти, однако каждому из них необходим описатель процесса, чтобы указать, к виртуальной памяти какого процесса будет осуществляться доступ. Процесс – это логическое представление работы, которую должна выполнить ОС, поток отображает одну из многих необходимых подзадач. Основные составляющие потока в исполнительной системе NT таковы:
- уникальный идентификатор, называемый идентификатором клиента;
- содержимое набора регистров, отображающее состояние процессора;
- два стека: один используется потоком при работе в пользовательском режиме, а другой – в режиме ядра;
- собственная область памяти, предназначенная для использования подсистемами, библиотеками периода выполнения и динамически подключаемыми библиотеками (DLL).
Регистры, стек и собственная область памяти образуют контекст (context) потока. Фактические данные, составляющие контекст потока, зависят от типа процессора.
Объект-поток. Процесс NT остается безжизненным, пока у него нет потока, который можно направить на выполнение. Поток – это сущность внутри процесса, которую ядро NT направляет на исполнение. Без него программа процесса не может выполняться, и если у процесса есть поток, последний может создать дополнительные потоки.
Как и процессы, потоки исполнительной системы NT реализованы в виде объектов, создаваемых и уничтожаемых диспетчером объектов. Диспетчер процессов определяет тело объекта-потока и сервисы, используемые для работы с потоками после их создания. Некоторые атрибуты потока напоминают атрибуты объекта. Одни атрибуты, такие как процессорное сродство потока и динамический приоритет, фактически усиливают или ослабляют ограничения, заданные для процесса в целом. Процессорное сродство каждого потока – это неполное подмножество (равно или меньше) процессорного сродства процесса. Можно заставить потоки процесса выполняться на разных группах процессоров. Каждый поток имеет базовый уровень приоритета, который лежит в диапазоне от двух уровней ниже базового приоритета процесса до двух уровней выше этого приоритета (рис. 2.4). На рис. 2.4 показан динамический приоритет потока, нижней границей которого является базовый приоритет потока, а верхняя зависит от вида работ, исполняемых потоком. Снижая приоритет одного процесса и поднимая приоритет другого, подсистемы могут управлять относительной приоритетностью потоков внутри процесса. Базовый приоритет процесса определяет, сколь сильно могут различаться приоритеты потоков процесса и как они соотносятся с приоритетами потоков других процессов.
|
Рис. 2.4. Соотношение приоритетов |
Как и приоритеты, другие атрибуты объекта-потока предназначены для того, чтобы предоставить ОС (и в частности, подсистемам среды) возможность управления созданным ею потоком. Контекст потока содержит все, что нужно ОС для возобновления исполнения прерванного потока: содержимое регистров процессора и стеков пользователя и ядра. Приостановив поток, изменив его контекст и запустив поток снова, подсистема среды может изменить его поведение или начать его выполнение с адреса, отличного от точки останова.
Hа рис. 2.4 приведены потоки переменного приоритета, которые выполняются на уровне приоритета от 0 до 15. Потоки реального времени исполняются на уровнях приоритета от 16 до 31.
Другой сервис, предоставляемый объектам-потокам, – посылка потоку оповещений – это средство, позволяющее подсистемам среды или другим частям ОС асинхронно уведомлять поток о необходимости выполнения им заданной процедуры. Поток, предполагающий получение оповещения, может вызвать сервис для проверки его наличия.
Порт завершения потока похож на порт исключений и отладки процесса. Он позволяет подсистеме среды получать уведомление о завершении потока одного из ее клиентских процессов. При получении такого уведомления подсистема может обновить поддерживаемую ею информацию о потоке или процессе, в котором он находится.