Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС / 5. ОС - Управление процессами - 2

.pdf
Скачиваний:
40
Добавлен:
01.06.2015
Размер:
408.67 Кб
Скачать

Операционные системы.

Управление процессами – 2: Windows и UNIX

лектор: Дроздов Сергей Николаевич

доцент кафедры МОП ЭВМ ЮФУ

dr@pochtamt.ru _dr@mail.ru

Таганрог 2012 г.

2

Процессы в Windows

Процесс всегда связан с выполнением некоторой программы (обычно EXE-файла).

Функция CreateProcess; ее параметры:

имя файла запускаемой программы;

атрибуты защиты;

флаги режима создания процесса:

класс приоритета;

отладочный режим;

приостановка после создания;

адрес блока среды (environment) процесса;

текущий каталог процесса;

параметры первого создаваемого процессом окна;

адрес блока информации, куда будут записаны хэндлы и идентификаторы процесса и его первой нити.

Операционные системы. Управление процессами - 2

3

Нити (threads) в Windows

Первая нить создается одновременно с процессом.

Дополнительные нити могут быть соданы функцией CreateThread. Ее параметры:

атрибуты защиты;

размер стека нити;

стартовый адрес нити (обычно имя функции);

параметр-указатель, позволяющий передать нити значения аргументов;

флаг приостановки после создания;

указатель на переменную, куда будет записан идентификатор нити;

функция возвращает хэндл созданной нити.

Операционные системы. Управление процессами - 2

4

Завершение процессов инитей

Завершение нити: ExitThread(код_завершения).

Завершения процесса: ExitProcess(код_завершения).

При завершении процесса завершаются и все его нити.

При завершении последней нити завершается весь процесс.

Завершение процесса приводит к освобождению всех ресурсов, которыми владел процесс: памяти, открытых файлов и т.п.

Операционные системы. Управление процессами - 2

5

Классы приоритетов процессов в Windows

Низкий (Idle) : от 2 до 6.

экранные заставки, мониторы производительности, индексирование для поиска и т.п..

Ниже среднего (Below normal) : от 4 до 8. Средний (Normal) : от 6 до 11.

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

Выше среднего (Above normal) : от 8 до 12. Высокий (High): от 11 до 15.

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

Реального времени (Realtime): от 16 до 31.

крайне опасно, может заблокировать все реакции системы на клавиатуру, мышь и т.п.;

Операционные системы. Управление процессами - 2

6

Приоритеты нитей в Windows

При запуске устанавливаются в соответствии с классом приоритета процесса.

Могут быть программно увеличены или уменьшены установкой уровня приоритета нити.

Увеличиваются системой (если нить не относится к процессу реального времени):

когда нить владеет окном переднего плана;

когда нить (или ее окно) получает сообщения от клавиатуры, мыши или таймера;

когда нить пробуждается из состояния сна;

если низкоприоритетная нить слишком долго не получала квантов процессорного времени.

Уменьшаются системой на 1 (но не ниже базового приоритета) всякий раз, когда нить получает и полностью использует квант времени процессора.

Операционные системы. Управление процессами - 2

7

Приоритеты нитей в Windows

Процесс имеет класс

Realtime

24

 

приоритета, с

High

13

 

которым связан

Above Normal

10

 

Normal

8

 

базовый уровень:

Below Normal

6

 

 

Idle

4

Нить может иметь

Time Critical 15 или 31

 

отклонение

Highhest

+2

 

Above Normal

+1

 

относительно базового

Normal

0

 

уровня:

Below Normal

-1

 

Lowest

-2

 

 

Idle

1 или 16

Для нитей класса Realtime система не может динамически изменять приоритеты.

31

16

15

Такие нити, если они занимают много

1

времени, напрочь затыкают систему.

Операционные системы. Управление процессами - 2

8

Процесс и нить как объекты

Функция OpenProcess позволяет одному процессу получить хэндл любого другого процесса (если это допускается атрибутами защиты). Ее параметры:

идентификатор интересующего процесса;

маска запрашиваемых прав доступа.

Аналогично, OpenThread получает хэндл нити.

Кроме того, процесс-родитель получает хэндлы создаваемых им процессов и нитей.

Операционные системы. Управление процессами - 2

9

Процесс и нить как объекты

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

запускать новую нить процесса;

запрашивать и изменять класс приоритета процесса или приоритет нити;

читать и записывать данные в памяти процесса;

использовать процесс или нить в качестве объекта синхронизации;

принудительно прекращать выполнение процесса или нити;

запрашивать код завершения процесса или нити.

Операционные системы. Управление процессами - 2

10

Способы синхронизации нитей

Обмен сообщениями (функции SendMessage, PostMessage, GetMessage и др.)

Предназначены в основном для управления пользовательским интерфейсом.

Недостаток: не годятся для реального времени. Время обработки сообщения, включая время ожидания в очереди, значительно и малопредсказуемо.

Объекты синхронизации и функции ожидания (будут рассмотрены ниже).

Переменные типа CRITICAL_SECTION – частный случай ожидания, применимый только между потоками одного процесса, но зато более быстрый, чем использование объектов.

Операционные системы. Управление процессами - 2