Управление процессами и потоками в Microsoft Windows

Download Report

Transcript Управление процессами и потоками в Microsoft Windows

Управление процессами и
потоками в Microsoft Windows
Представление процессов
Диспетчеризация процессов и потоков
Планирование процессов и потоков
Характеристики процесса
Процесс как самостоятельная сущность
рассматривается на уровне архитектуры
ЭВМ и на уровне ОС.
На уровне архитектуры ЭВМ процесс
характеризуется:
- контекстом;
- адресным пространством.
На уровне ОС процесс описывается
специальной структурой уровня ядра – PCB
(Process Control Block)
Представление процесса в
защищенном режиме процессора Intel
Дескриптор TSS
активного процесса
TR
LDTR
CS
Селектор сегмента кода
LDT
Дескриптор сегмента кода
активного процесса
Дескриптор доп. сегмента
основной
Копия
дескриптора
TSS
TSS
Селектор
TSS
Сегмент
кода
Доп. сегмент
Доп. сегмент
сегменты кода,
данных, стека
GDTR
GDT
Оперативная память
Адресное пространство процесса в
защищенном режиме процессора Intel
Сегмент
Описание
Адресация
TSS
Task Status Segment –
сегмент состояния
задачи
Хранит полное
описание контекста
задачи
-Через
Сегмент
кода
Каждая задача
обязательно должна
иметь хотя бы один
сегмент кода
-Через
Другие
сегменты
Могут содержать код и
данные, в т.ч.
собственные стеки
процесса (задачи)
-Через
специальный системный
дескриптор, который хранится в
таблице GDT
-Селектор дескриптора и копия
самого дескриптора хранятся в
регистре TR
дескриптор в таблице LDT
-Селектор дескриптора всегда
хранится в регистре CS
дескрипторы в таблице LDT
-Селекторы дополнительных
сегментов хранятся в сегментных
регистрах DS, ES, FS, GS, SS
Контекст процесса в защищенном
режиме процессора Intel
-
Регистры общего назначения (EAX, EBX, ECX, EDX,
EDI, ESI, ESP, EBP);
Регистры состояния (EIP, EFLAGS);
Регистры состояния процессора (CR0-CR4);
Сегментные регистры (CS, DS, ES, FS, GS, SS);
Регистры управления памятью (LDTR, TR);
Значение поля селектора TSS из регистра TR для
процесса, который запустил данный процесс;
Содержимое таблицы LDT;
Содержимое каталогов и таблиц страниц;
Адрес битовой карты ввода/вывода.
Представление процесса на уровне ОС
В общем случае – информация о
процессе (контекст процесса) ОС
хранят в структурах PCB – Process
Control Block (блок управления
процессом)
Структура PCB и состав контекста
процесса различен для каждой
конкретной ОС
Представление процессов в ОС
Windows XP




Процесс – абстрактная
структура, определяющая
единое адресное
пространство и контекст
одного или нескольких
взаимосвязанных потоков
Поток – системный объект
операционной системы,
реально выполняющийся в
процессоре.
При создании любого
процесса всегда создается
первичный поток
Потоки могут порождать
новые потоки
Основной
поток
Порожденный
поток
Порожденный
поток
Процесс
Структуры Windows для управления
процессами и потоками (обобщенная
схема)
Структура EPROCESS
Блок процесса ядра (PCB)
Блок переменных окружения процесса
(PEB)
Структура ETHREAD
Структура KTHREAD
Блок переменных окружения потока
(TEB)
Уровни управления процессами
Аппаратный уровень
Реализуются примитивные операции по
управлению процессами:
-прерывания;
-переключение контекстов задач.
Диспетчеризация процессов
(уровень ядра)
Реализуются примитивы перевода процессов из
одного состояния в другое – запуск, приостановка,
возобновление, остановка (завершение)
Планирование процессов
(уровень менеджера
процессов)
Реализуется строгий и сложный алгоритм
управления состояниями процессов с учетом
различных факторов, условий функционирования
процессов, особенностей аппаратной части и
операционной системы
Механизмы управления процессами,
реализуемые аппаратно
Базовые аппаратные механизмы
Прерывания
Переключение задач
Все механизмы, реализуемые
аппаратно, в ОС Microsoft Windows
замаскированы уровнем HAL
Представление процесса на
аппаратном уровне (CPU Intel)
GDTR
Дескриптор TSS
активного процесса
TR
LDTR
CS
Селектор сегмента кода
LDT
Дескриптор сегмента кода
активного процесса
Дескриптор доп. сегмента
основной
TSS
Селектор
TSS
Сегмент
кода
Доп. сегмент
Доп. сегмент
сегменты кода,
данных, стека
Копия
дескриптора
TSS
Оперативная память
Реализация переключения задач в
защищенном режиме CPU Intel
 Для команд CALL и JMP проверяет привилегии (CPL текущей
задачи и RPL селектора новой задачи не могут быть больше,
чем DPL шлюза или TSS, на который передается управление).
 Проверяется дескриптор TSS (его бит присутствия и лимит).
 Проверяется, что новый TSS, старый TSS и все дескрипторы
сегментов находятся в страницах, отмеченных как
присутствующие.
 Сохраняется состояние задачи.
 Загружается регистр TR. Если на следующих шагах происходит
исключение, его обработчику придется доделывать
переключение задач, вместо того чтобы повторять ошибочную
команду.
 Тип новой задачи в дескрипторе изменяется на занятый и
устанавливается флаг TS в CR0.
 Загружается состояние задачи из нового TSS: LDTR, CR3,
EFLAGS, EIP, регистры общего назначения и сегментные
регистры.
Механизмы диспетчеризации
процессов уровня ядра Windows
Создание процесса
Создание потока
Приостановка процесса
Приостановка потока
Активизация процесса
Активизация потока
Завершение процесса
Завершение потока
Создание процесса в Windows и
функция CreateProcess
 Открытие файла-образа процесса (имя.exe или
имя.com)
 Создание объекта процесс исполнительной системы
(PCB)
 Создание первичного потока
 Уведомление о создании процесса и первичного
потока
 Начать выполнение первичного потока
 Инициализировать адресное пространство процесса
в контексте нового процесса и потока, подгрузить
динамические библиотеки (*.dll)
 Начать выполнение программы
Предварительные действия при
запуске процесса
 Перед запуском процесса CreateProcess проверяет параметр
CreationFlags, который указывается при запуске нового
процесса и задает приоритеты процесса. Если задано несколько
приоритетов, Windows выберет самый низкий из них
 Если приоритеты процесса не заданы, то Windows установит
приоритет Normal
 Если приоритет процесса-создателя Idle или Bellow Normal, а
приоритет нового процесса не указан, то Windows установит
приоритет нового процесса равный приоритету процесса
создателя
 Если создается процесс с приоритетом Real-Time, а создатель
не имеет привилегий на создание таких процессов и/или
привилегии Increase Scheduling Priority, то новый процесс будет
создан с приоритетом High, что ниже приоритета Real-Time
 Происходит сопоставление окна процесса с объектом «рабочий
стол»
Этап 1. Открытие файла-образа
 Поиск Windows-образа, который будет выполнять
указанный процесс, и создание объекта «раздел» для
последующего проецирования его на адресное
пространство нового процесса
 В качестве имени Windows-образа выбирается
первый параметр командной строки
 Проверка политики безопасности (не запрещает ли
она запуск данного процесса)
 Если запускается программа Windows, то она
используется напрямую
 Если запускается не-Windows приложение, то ОС
ищет специальный образ поддержки (support image)
для запуска данной программы
Этап 1. Открытие файла-образа
Этап 1. Открытие файла-образа:
завершение
 Запускаемый файл успешно открыт
 Для него создан объект «раздел», но этот
раздел еще не спроецирован в память
 Если в процессе открытия файла возникают
проблемы, то Windows находит в реестре
информацию об отладчике для данного типа
приложений и повторно запускает
CreateProcess
Этап 2. Создание объекта «процесс»
 Формируется блок EPROCESS
 Создается начальное адресное пространство
процесса
 Инициализируется блок процесса ядра (KPROCESS)
 Инициализируется адресное пространство процесса,
в т.ч. список рабочего набора и дескрипторы
виртуального адресного пространства
 Образ процесса проецируется на адресное
пространство
 Формируется блок PEB
 Завершается инициализация объекта «процесс»
исполнительной системы Windows
Этап 2а: Формирование блока
EPROCESS
 Создание блока EPROCESS
 От родительского процесса наследуется привязка к
процессорам
 Устанавливаются минимальное и максимальное значения
рабочего набора
 Настраивается блок квот нового процесса (устанавливается
ссылка на блок квот родительского процесса и увеличивается
счетчик ссылок последнего)
 Наследуется пространство имен устройств Windows
 Для нового процесса сохраняется идентификатор родительского
процесса
 Настраивается маркер доступа
 Наследуется от родителей
 Если используется функция CreateProcessAsUser создается новый
маркер
 Инициализируется таблица описателей
 Статус нового процесса заменяется на STATUS_PENDING
Этап 2b: создание начального
адресного пространства процесса
 В соответствующих таблицах страниц
формируются записи, позволяющие
подкачивать начальные страницы процесса
 Значение максимально доступного
количества резидентных страниц процесса
уменьшается на значение количества
страниц в рабочем наборе по умолчанию
 На адресное пространство проецируются
страницы таблицы страниц для
неподкачиваемого системного адресного
пространства и системного кэша
Этап 2c: создание блока процесса ядра
(KPROCESS)
 Инициализация блока KPROCESS
 Устанавливаются ссылки на блоки потоков ядра
(KTHREAD)
 Устанавливаются ссылки на таблицы страниц
процесса
 Инициализируются поля блока KPROCESS,
хранящие информацию о времени выполнения
процесса
 Устанавливается базовый приоритет процесса
 Устанавливается привязка процесса к процессорам
 Определяется базовое значение кванта времени для
данного процесса
Этап 2d: инициализация адресного
пространства процесса
 Диспетчер виртуальной памяти присваивает времени
последнего усечения рабочего набора процесса
текущее время
 Инициализируется список страниц рабочего набора
 Раздел проецируется на адресное пространство
процесса, и базовый адрес раздела процесса
приравнивается базовому адресу образа
 На адресное пространство процесса проецируется
ntdll.dll
 На адресное пространство процесса проецируются
таблицы NLS (National Language Support)
Этап 2е: инициализация блока PEB
Формируется блок PEB
Заполняются поля блока PEB
Этап 2f: завершение инициализации блока
«процесс» исполнительной системы
 Если разрешен аудит, то факт создания процесса
фиксируется в журнале безопасности
 Если родительский процесс входил в задание, то и новый
процесс включается в задание
 Если для процесса был указан флаг создания,
отмечающий, что данный процесс может выполняться
только в однопроцессорной системе, то для выполнения
всех потоков процесса выбирается один процессор
 Привязка процесса к процессору копируется в PEB и в
дальнейшем используется как привязка по умолчанию
 Блок процесса помещается в конец списка активных
процессов
 Устанавливается время создания процесса
 Возвращается дескриптор созданного процесса
Этап 3. Создание первичного потока
 К началу этого этапа процесс полностью
создан, но не может ничего делать, т.к. у него
нет ни одного потока
 Для создания потока необходимо создать
стек и контекст, в котором он будет
выполняться
 Первичный поток создается системным
вызовом NtCreateThread с параметром PEB
 Поток будет создан в приостановленном
состоянии и не будет ничего делать до
окончания инициализации процесса
Этап 3. Создание первичного потока:
NtCreateThread
Увеличивает счетчик потоков для данного процесса
Создает и инициализирует блок потока ETHREAD
Генерирует идентификатор нового потока
В пользовательском адресном пространстве
формируется TEB
 Стартовый адрес потока пользовательского режима
сохраняется в блоке ETHREAD




 Для Windows-потоков это адрес системной стартовой
функции потока в kernel32.dll
 Стартовый адрес, указанный пользователем, также
сохраняется в ETHREAD, но в другом месте, что позволяет
системной функции вызвать пользовательскую стартовую
функцию
Этап 3. Создание первичного потока:
NtCreateThread (продолжение)
Инициализируется блок KTHREAD, в
который заносятся параметры,
необходимые для диспетчеризации и
планирования потоков
Вызываются общесистемные функции
для уведомления о создании потока
Настраиваются маркеры доступа потока
Поток готов к выполнению
Этап 4. Уведомление подсистемы
Windows о новом процессе
 К данному моменту созданы и процесс, и его
первичный поток
 Kernel32.dll отправляет подсистеме Windows
уведомление:
Описатели процесса и потока
Флаги создания
Идентификатор родительского процесса
Флаг принадлежности процесса к Windowsприложениям
 Получив уведомление Windows должна
подготовиться к выполнению нового процесса
и потока
Этап 4. Уведомление подсистемы
Windows о новом процессе
 CreateProcess дублирует описатели процесса и
потока, в результате чего количество пользователей
процесса становится равным 2
 Устанавливается класс приоритета процесса
 Создается и инициализируется блок процесса Csrss
 Настраивается порт исключений процесса как общий
порт функций для подсистемы Windows. Таким
образом, она сможет получать сообщения о
возникновении исключений
 Если процесс в данный момент отлаживается, то в
качестве порта функций выбирается отладочный
порт
 Создается и инициализируется блок потока Csrss
Этап 4. Уведомление подсистемы
Windows о новом процессе
(продолжение)
 CreateProcess включает поток в список потоков
процесса
 Увеличивается счетчик процессов в данном сеансе
 Устанавливается уровень завершения процесса по
умолчанию 0х280
 Блок нового процесса включается в список
общесистемных процессов Windows
 Создается и инициализируется структура
W32PROCESS, индивидуальная для каждого
процесса и используемся той частью процесса,
которая выполняется в режиме ядра
 Выводится курсор в виде стрелки с песочными
часами – система ждет от процесса GUI-вызова
Этап 5. Запуск первичного потока
Для завершения инициализации
процесса необходимо возобновить его
первичный поток (который был создан,
как приостановленный), если при этом
не указан флаг CREATE_SUSPENDED
Этап 6. Инициализация в контексте
нового процесса
 Начинается выполнение первичного потока нового
процесса
 Происходит системный вызов KiThreadStartup,
который понижает уровень IRQL с DPC/dispatch до
APC
 Вызывается системная функция
PspUserThreadStartup, параметром которой являтся
стартовый адрес потока
 Функция PspUserThreadStartup проверяет, разрешена
ли в системе предвыборка и, если да, то производит
предвыборку страниц процесса, которые он запускал
в течении первых 10 сек при предыдущем запуске
 Затем функция PspUserThreadStartup ставит APC
пользовательского режима в очередь для запуска
процедуры инициализации потока
Этап 6. Инициализация в контексте
нового процесса (продолжение)
 Когда поток вернется в пользовательский режим, APC
будет доставлен
 После завершения PspUserThreadStartup
управление передается KiThreadStartup, которая
возвращается из режима ядра, доставляет APC,
инициализирует загрузчик, кучи, таблицы NLS,
массивы локальной памяти потока и структуры
критической секции
 Функция KiThreadStartup загружает необходимые dll и
вызывает их точки входа
 Управление возвращается диспетчеру APC
пользовательского режима
 Начинается выполнение образа в пользовательском
режиме
Создание потока в Windows и функция
CreateThread
 Создание стека пользовательского режима в
адресном пространстве процесса
 Инициализация аппаратного контекста потока
 Создать объект потока исполнительной
системы (в приостановленном состоянии)
 Уведомление Windows о создании нового
потока
 Вернуть порождающему процессу (потоку)
идентификатор и дескриптор (HANDLE)
созданного потока
 Начать выполнение потока
Планирование потоков в Windows
 Дисциплина планирования Windows реализована на
основе вытесняющего планирования
 В системе используются приоритеты
 Всегда первым вытесняется готовый к выполнению
поток, обладающий наибольшим приоритетом
 На выбор потоков к выполнению также влияет
привязка потоков (а точнее – процессов) к
процессору
 Для управления временем выполнения потока
используется система квантования времени
 Величина кванта не постоянна и зависит от
 Конфигурационных параметров системы
 Статуса процесса (активный или фоновый)
 Использованием объекта «задание»
Диспетчеризация на уровне ядра –
диспетчер ядра
 Диспетчеризация может быть вызвана одним
из следующих событий:
Поток готов к выполнению – только что создан или
вышел из состояния ожидания
Поток вышел из состояния Running (истек квант
времени или поток переходит в состояние ожидания)
Изменяется приоритет процесса из-за системного
вызова или самой Windows
Изменена привязка к процессорам, из-за чего
процесс не может больше выполняться на данном
процессоре
Уровни приоритета
Назначение приоритетов с точки
зрения WindowsAPI
 По приоритету
процесса
Real-time
High
Above normal
Normal
Bellow normal
Idle
 По относительному
приоритету потоков
в рамках процесса
Time-critical
Highest
Above normal
Normal
Bellow normal
Lowest
Idle
Связь между приоритетами
WindowsAPI и ядра Windows
Установка базового приоритета
процессов и потоков
 Базовый приоритет процесса устанавливается при
его создании (параметром CreationFlags функции
CreateProcess)
 Если базовый приоритет процесса не указан, то он
наследуются от родительского процесса (как
правило, он устанавливается в Normal)
 Базовый приоритет потока устанавливается в
соответствии с унаследованным приоритетом
процесса и собственным относительным
приоритетом
 Кроме базового приоритета, каждый поток имеет
текущий приоритет, на основании которого
принимаются все решения относительно
планирования потока
Состояния потоков в ОС
Windows 2000/XP
Состояния потоков в OC
Windows Server 2003
Для каждого уровня приоритетов –
своя очередь
База данных диспетчера ядра
32-битна маска
Бит устанавливается
в 1, если в
соответствующей
очереди есть поток
Квант
 Квант – интервал процессорного времени,
отводимый Windows для выполнения потока
 По истечении кванта Windows пытается передать
управление потоку с тем же приоритетом. Если
такого нет, очередной квант отводится тому же
потоку, что и выполнялся
 В Windows 2000/XP величина кванта по умолчанию
составляет 2 интервала таймера
 В Windows Server 2003 – 12 интервалов (увеличен,
чтобы минимизировать переключения контекста)
 Длительность интервала таймера определяется HAL,
а не ядром
Учет квантов
 Величина кванта для каждого процесса хранится в
блоке процесса ядра в виде количество_интервалов
*3
 Это значение кванта используется при запуске
потоков
 Во время выполнения потока величина кванта
уменьшается по таймеру, каждый раз на 3
 Если поток прерывается, квант выполнения потока
все равно уменьшается на 3 при каждом прерывании
таймера
 Для ожидающих потоков (WaitForSingleObject или
WaitForMultileObjects) величина кванта уменьшается
всегда, даже если они сразу получили доступ к
ожидаемому объекту (при этом квант уменьшается на
1)
Изменение величины кванта
 Пользователь может изменить величину
кванта, указав одно из двух значений –
короткий (2) или длинный (12) в оснастке
Performance Options
 Начиная с Windows NT 4.0 Workstation
система использует алгоритм динамического
изменения квантов для активных процессов
(со статусом выше Idle). Если хотя бы один
поток процесса использует активное окно, то
его квант времени увеличивается в 3 раза
 Управление квантами возможно через реестр
Windows
Сценарии планирования
Самостоятельное переключение
Вытеснение
Завершение кванта
Завершение потока
Самостоятельное переключение
Поток самостоятельно
переходит в состояние
ожидания
(WaitForSingleObject или
WaitForMultipleObjects)
Система
запускает первый
готовый поток с
наивысшим
приоритетом
Вытеснение
Поток с высоким приоритетом вышел
из состояния ожидания или
приоритет для данного потока
повысился
Поток вытесняется.
Причиной вытеснения
этого потока может быть
то, что его приоритет
понизился
Завершение кванта
При завершении кванта Windows может
понизить приоритет приостановленного
потока. Тогда она будет искать для
выполнения новый поток с приоритетом,
не ниже нового приоритета
приостановленного потока
Для данного потока
Windows не понизила
приоритет – он остался в
конце своей очереди
Динамическое повышение приоритета
 После завершения операций ввода-вывода
 По окончании ожидания на семафоре или
событии исполнительной системы
 По окончании операции ожидания потоками
активного процесса
 При пробуждении GUI-процессов в связи с
операциями с окнами
 Если поток, готовый к выполнению,
задерживается из-за нехватки процессорного
времени
Повышение приоритета после
завершения операций ввода-вывода
 Windows считает, что ожидавшие потоки имеют
больше шансов немедленно начать выполнение
 Потоки не получают неоправданных привилегий, т.к.
пока они ожидали их квант времени был уменьшен
на 1
 Величина приращения всегда зависит от устройства,
завершения ввода/вывода на котором ожидал поток
 Приоритет потока всегда повышается относительно
базового, а не текущего приоритета
 Приращение приоритета всегда применяется в
области динамических приоритетов
 Приоритет не может стать больше 15
Изменение приоритета после
завершения операций ввода-вывода
Повышение приоритета после завершения
ожидания на семафорах и событиях
Приоритет потока повышается на 1,
если он ожидал семафора или события
(функции WaitForSingleObject или
WaitForMultipleObjects), после
выполнения функций SetEvent,
PulseEvent, ReleaseSemaphore
Правила повышения приоритета
аналогичны рассмотренным ранее
Повышение приоритетов потоков активного
процесса после завершения ожидания
 Текущий приоритет потока в активном процессе
всегда повышается на величину PsPrioritySeparation,
если он завершил ожидание на объекте ядра
 Фактически PsPrioritySeparation – индекс в таблице
квантов и используется для выбора величины
квантов для потоков активного процесса
 Но в данном случае эта величина (величина кванта)
используется как величина изменения приоритета
 Используется для повышения отзывчивости
интерактивных приложений
Повышение приоритетов при пробуждении
GUI-процессов в связи с операциями с
окнами
Приоритет потоков, владеющих окнами,
повышается на 2 после их пробуждения
из-за активности системы управления
окнами
Используется для повышения
отзывчивости интерактивных
приложений
Повышение приоритетов при нехватке
процессорного времени
 Применяется при блокировке потоков с низким
приоритетом потоками с высокими приоритетами
(тупики)
 Диспетчер настройки баланса раз в 1 сек сканирует
очереди, чтобы обнаружить тупиковые ситуации
 При обнаружении блокированных потоков, которые в
свою очередь блокируют другие потоки, Windows
повышает их приоритет до 15
 В Windows 2000/XP квант времени таких потоков
удваивается
 В Windows Server 2003 квант времени для таких
потоков устанавливается равным 4
Планирование потоков в
многопроцессорных системах
 База данных диспетчера ядра включает в себя
несколько стеков очередей – по одной для каждого
процессора
 В БД включается маска активных процессоров,
позволяющая определить количество доступных
процессоров
 В системах с HyperThreading
 Количество логических процессоров не попадает под
лицензионные ограничения на количество поддерживаемых
процессоров
 При выборе логического процессора для запуска потока
система учитывает, на каком физическом процессоре он
реализуется
 Нагрузка на процессоры рассчитывается на основании
физической привязки логических процессоров
Планирование потоков в
многопроцессорных системах: привязка к
процессору
 Каждый поток имеет маску привязки к процессору
 Привязка к процессору наследуется от процесса,
запустившего поток
 Привязка потоков к процессору может быть изменена
с целью оптимизации производительности и
пропускной способности системы
 Привязка потока к процессору может быть изменена
индивидуально или для всех потоков процесса
 На выбор процессора для выполнения потока влияет
не только привязка, но и особенности создания
процесса (например, процесс может быть создан для
запуска только в однопроцессорных системах)
Выбор процессора для потока при
наличии простаивающих процессоров
 При наличии простаивающих процессоров Windows
пытается подключить поток к ним в следующем
порядке:
 Идеальный
 Предыдущий
 Текущий
 В Windows 2000 выбирается первый простаивающий
 В Windows XP и Windows Server 2003
 Анализируется маска привязки потока
 Если система с Hyperthreading и имеется простаивающий
физический процессор, то список доступных процессоров
сокращается для набора его логических
 Из полученного списка исключаются спящие процессоры
 Из списка выбирается процессор с наименьшим номером
Выбор процессора для потока при
отсутствии простаивающих процессоров
 Если на идеальном процессоре выполняется
поток с приоритетом меньше, чем у
запускаемого потока, то запускаемый поток
вытеснит выполняющийся поток со своего
идеального процессора
 Если при выборе процессора нельзя выбрать
идеальный (только в Windows 2000), то
выбирается процессор с наибольшим
номером
 После выбора процессора формируется
межпроцессорное прерывание
Задания
 Задание – объект ядра, обеспечивающий управление
одним или несколькими процессами, как группой
 Задание позволяет определить:
 Максимальное число процессов в группе
 Общий лимит на процессорное время (для всех процессов
задания) в пользовательском режиме
 Индивидуальные лимиты процессов на процессорное время
в пользовательском режиме
 Класс планирования задания (размер кванта для потоков
процессов, входящих в задание)
 Привязку к процессорам
 Приоритет всех процессов задания
 Максимальный и минимальный размеры рабочего набора
 Лимит на виртуальную память