Процессы

ПРОЦЕССЫ И ПОТОКИ В ОПЕРАЦИОННОЙ СИСТЕМЕ

Лекция № 2

Вопросы:

1. Процессы.

2. Потоки.

3. Планирование процессов и потоков.

4. Система приоритетов.

5. Средства межпроцессной синхронизации

Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычислительной машины, является подсистема управления процессами. Процесс (или по-другому, задача) – абстракция, описывающая выполняющуюся программу. Для операционной системы процесс представляет собой единицу работы, заявку на потребление системных ресурсов. Программа (program) — это статическая пос­ледовательность команд, тогда как процесс (process) — это программа и сис­темные ресурсы, необходимые для ее работы. Фактически, процесс – программа, находящаяся в режиме выполнения.

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

В Windows 3.x, да иногда и в Win32 процесс определяют как копию (экземпляр) выполняющейся программы. Так оно и есть, но при этом забывают, что копия - понятие статическое. Другими словами процесс в Win32 - это объект, который не выполняется, а просто "владеет" выделенным ей адресным пространством, другими словами процесс является структурой в памяти. А вот в адресном пространстве процесса находятся:

− саму программу;

− данные к программе;

− стек программы.

В общем случае ОС содержат блок кода, управляющий созданием и удале­нием процессов, а также отношениями между ними. Этот код называется струк­турой процессов (process structure) и в Windows реализован диспетчером процессов (process manager).

Основной задачей диспетчера процессов является предоставление набора базовых сервисов процесса, который подсистемы среды могли бы использовать для эмуляции своих собственных уникальных структур процессов. Цель такого под­хода — обеспечить в Windows несколько сред ОС, работающих в пользова­тельском режиме.

Во многих операционных системах вся информация о каждом процессе, дополнительная к содержимому его собственного адресного пространства, хранится в таблице процессов операционной системы (табл.1).

Таблица 1

Поля таблицы процессов

Управление процессом Управление памятью Управление файлами
Регистры Счетчик команд Указатель стека Состояние процесса Приоритет Параметры планирования Идентификатор процесса Родительский процесс Группа процесса Время начала процесса Использованное процессорное время Указатель на текстовый сегмент Указатель на сегмент данных Указатель на сегмент стека Корневой каталог Рабочий каталог Дескрипторы файла Идентификатор пользователя Идентификатор группы

На самом высоком уровне абстракции процесс состоит из:

исполняемой программы, которая определяет начальный код и данные;

закрытого адресного пространства (address space), т. е. набора адресов виртуальной памяти, который процесс может использовать;

системных ресурсов, таких как семафоры, коммуникационные порты
и файлы, выделяемых ОС процессу во время выполнения программы.

В Windows процесс, чтобы он мог работать, должен включать четвер­тый элемент:

• по крайней мере один поток управления (thread of execution).

Поток управления — это сущность внутри процесса, которую ядро Windows направляет на исполнение. Без него программа процесса не может выполняться.

Процесс не должен иметь неограни­ченного права управления другими процессами. Одним из способов дости­жения этого в Windows служит система виртуальной памяти (virtual memory). С ее помощью программисты (и создаваемые ими процессы) полу­чают логический образ памяти, который не совпадает с ее физической струк­турой.

При всяком обращении процесса по виртуальному адресу система вир­туальной памяти транслирует этот адрес в физический. Она также предотвра­щает непосредственный доступ процесса к виртуальной памяти, занятой дру­гими процессами или ОС. Для исполнения кода ОС или доступа к памяти ОС поток должен исполняться в привилегированном режиме процессора — так называемом режиме ядра (kernel mode). Однако большинство процессов — это процессы пользовательского режима, т. е. такие, потоки которых испол­няются в основном в непривилегированном режиме процессора — пользовательском режи ме (user mode).

Поток пользовательского режима получает доступ к ОС, вызывая некото­рый системный сервис. Когда поток вызывает сервис, процесс перехватывает его и переключает из пользовательского режима в режим ядра.

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

Кроме закрытого адресного пространства, с каждым процессом связан набор разнообразных системных ресурсов. На рис. 1 показан типичный процесс и его ресурсы.

 
 

Вверху схемы изображен маркер доступа процесса. Маркер до­ступа присоединяется к процессу непосредственно ОС. Если процессу требует­ся получить информацию о его маркере доступа или, возможно, изменить не­которые атрибуты маркера, то он должен открыть описатель своего объекта-маркера. Подсистема защиты определяет, есть ли у процесса такое право. Про­цесс, показанный на рис.1, не открыл дескриптор своего маркера доступа, поэтому отсутствует стрелка, идущая из таблицы объектов к маркеру.

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

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

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

В исполнительной системе Windows процессы — это просто объекты, создаваемые и уничтожаемые диспетчером объектов. Объект-процесс, как и другие объек­ты, содержит заголовок, создаваемый и инициализируемый диспетчером объектов. В заголовке хранятся стандартные атрибуты объекта, такие как:

− дес­криптор защиты объекта-процесса,

− имя процесса (может назначаться ему в целях совместного использования)

− каталог объектов, в котором хранится имя, если оно есть.

Диспетчер процессов определяет атрибуты, хранящиеся в теле объектов-процессов, а также предоставляет системные сервисы для чтения и изменения этих атрибутов. Атрибуты и сервисы для объектов-процессов показаны на рис.2.

Обратите внимание, что таблица объектов и описание адресного про­странства не показаны как часть объекта-процесса. Причина в том, что они, хотя и связаны с процессом, но не могут быть изменены процессами пользовательского режима напрямую. На рис.2 изображены только те данные, которые код пользовательского режима может считывать или изме­нять путем вызова сервисов объекта-процесса. В табл. 2 приведены атри­буты объекта-процесса.

Таблица 2

Атрибуты объекта – процесса

Атрибут Назначение
Идентификатор процесса Уникальное значение, идентифицирующее процесс в ОС
Маркер доступа Объект исполнительной системы, содержащий информацию о правах зарегистрированного в системе пользователя, которого представляет данный процесс
Базовый приоритет Базовый приоритет потоков процесса
Процессорное сродство по умолчанию Набор процессоров, на которых потоки процесса могут исполняться по умолчанию
Размеры квот Максимальный объем резидентной и нерезидентной системной памяти, пространства в файле подкачки и процессорного времени, выделяемый пользовательскому процессу
Время выполнения Общее время выполнения всех потоков процесса
Счетчики ввода-вывода Переменные, в которых записывается число и тип операций ввода-вывода, выполненных потоками процесса
Счетчики операций виртуальной памяти Переменные, в которых записывается число и тип операций виртуальной памяти, выполненных потоками процесса
Порты исключений-отладки Каналы коммуникаций между процессами, по которым диспетчер процессов посылает сообщение, если один из потоков процесса вызывает исключение
Код завершения Причина завершения процесса

 
 

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

Базовый приоритет процесса помогает ядру Windows регулировать приоритет потоков в системе. Приоритеты отдельных потоков изменяются, но всегда ос­таются в диапазоне базовых приоритетов их процессов. Подсистемы среды могут использовать базовый приоритет, чтобы повлиять на то, потоки какого процесса будут выбраны ядром Windows для исполнения в первую очередь. Напри­мер, подсистема Win32 при помощи сервисов NT повышает базовый приори­тет процесса выбранного пользователем приложения и понижает базовый приоритет процессов фоновых приложений, давая интерактивным приложе­ниям преимущество над другими. Размеры квот, процессорное средство и базовый приоритет входят в состав тех атрибутов и структур дан­ных процесса, которые могут наследоваться от него другим процессом.

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

Сервисы процессов.

Таблица 3

Сервисы процессов

Сервис Функция Win32
Создать процесс CreateProcess()
Открыть процесс OpenProcess()
Запросить информацию процесса GetPriorityClass(), GetProcessTimes(), GetProcessWorkingSetSize(), GetExitProcessCode() и т.д.
Установить информацию процесса SetPriorityClass(), SetProcessWorkingSetSize()
Текущий процесс GetCurrentProcess(), GetCurrentProcessId()
Завершить процесс ExitProcess() или TerminateProcess().

Рассмотрим наиболее важные из них.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: