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

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

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

31

Некоторые типы сигналов

SIGKILL – процесс должен быть немедленно прекращен;

SIGTERM – система предлагает процессу прекратиться, но он может и не послушаться;

SIGILL – процесс выполнил недопустимую команду;

SIGSEGV – процесс обратился к неверному адресу памяти;

SIGHUP – разорвана связь процесса с управляющим терминалом (например, модем «повесил трубку»);

SIGPIPE – процесс попытался записать данные в канал, к другому концу которого не присоединен ни один процесс;

SIGSTOP – процесс должен быть немедленно приостановлен;

SIGCONT – приостановленный процесс возобновляет работу;

SIGINT – пользователь нажал Ctrl+C, чтобы прервать процесс;

SIGALRM – поступил сигнал от ранее запущенного таймера;

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

SIGPWR – возникла угроза потери электропитания, компьютер переключился на автономный источник (т.е. пора срочно спасать данные);

SIGUSR1, SIGUSR2 – номера сигналов, предоставленные в распоряжение прикладных программ для использования в произвольных целях.

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

32

Посылка и обработка сигналов

Посылка сигнала: kill(номер_сигнала, адресат);

Для каждого процесса система хранит маску, задающую его реакцию на каждый из сигналов:

По умолчанию – выполняются действия, предусмотренные системой для данного номера сигнала. Для большинства сигналов действия по умолчанию предусматривают завершение процесса;

Игнорировать – процесс никак не реагирует на получение сигнала (не работает для SIGKILL и SIGSTOP);

Обработать – в этом случае процесс должен задать адрес функции, которая будет вызвана при получении сигнала (не работает для SIGKILL и SIGSTOP).

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

33

Управление реакцией на сигнал

Функция signal (тип_сигнала, реакция) – устанавливает реакцию процесса на полученный сигнал.

Реакция:

по умолчанию;

игнорировать;

адрес функции-обработчика.

Функция-обработчик вызывается только для первого полученного сигнала данного типа, затем реакция сбрасывается в «по умолчанию» или надо снова вызывать signal из обработчика (интересный вопрос: почему так сделано?).

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

34

Средства взаимодействия процессов в POSIX

POSIX (Portable Operating System Interface for UNIX), 1990 – 2003 г. – серия стандартов, описывающих возможности современных UNIX-подобных ОС.

В области межпроцессного взаимодействия определяет:

сигналы;

безымянные и именованные каналы;

очереди сообщений;

семафоры и мьютексы;

совместно используемые (разделяемые) области памяти;

и еще ряд возможностей.

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

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

35

Основные состояния процесса в UNIX

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

36

Основные состояния процесса в UNIX

Выполняя системный вызов, процесс переходит из состояния «Работа в режиме задачи» в состояние «Работа в режиме ядра».

То же самое – при аппаратном прерывании.

Пока процесс работает в режиме ядра, он не может быть вытеснен.

При завершении обработки системного вызова или прерывания процесс либо возвращается в режим задачи, либо сразу вытесняется (переходит в состояние «Готовность».

При вызове блокирующей функции процесс может перейти из состояния «Работа в режиме ядра» в состояние «Сон».

При пробуждении процесса он переходит в состояние «Готовность».

Состояния «Сон» и «Готовность» подразделяются на «Сон/Готовность в памяти» и «Сон/Готовность на диске». Перенос процесса из памяти на диск и обратно контролируется системным процессом KERNEL и служит эффективному использованию памяти.

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

37

Приоритеты процессов в UNIX

Приоритеты ядра

Приоритеты задачи

Непрерываемые

Прерываемые

Ожидание подкачки страницы

Ожидание дискового ввода/вывода

Ожидание кэш-буфера

Ожидание inode

Ожидание терминального

ввода Ожидание терминального

вывода

Ожидание завершения потомка

Высший приоритет задачи (ВПЗ)

ВПЗ + 1

ВПЗ + 2

. . . . .

ВПЗ + N

Очереди активных Очереди спящих процессов процессов

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

38

Приоритеты задачи

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

Текущий приоритет – сумма трех слагаемых:

Базовый приоритет пользовательских процессов;

Относительный приоритет (nice number);

Nice number может быть изменен владельцем процесса, но не выше базового. Поднять выше может только администратор.

Штраф за использование процессорного времени.

Штраф увеличивается для работающего процесса с каждым прерыванием от таймера.

Штраф для готового процесса уменьшается вдвое каждую секунду.

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

39

Приоритеты ядра

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

кспящим процессам.

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

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

Диапазон приоритетов ядра разделен на две части:

высокоприоритетный сон (например, при выполнении дисковых операций) – процесс не реагирует на поступающие сигналы ,чтобы не задерживать реакцию на ожидаемое важное событие;

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

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

40

Интерпретатор команд shell

В UNIX (в отличие от Windows) широко используется консольный режим, дающий доступ ко всем функциональным возможностям системы.

Шелл (shell) – интерпретатор команд, использующийся в двух режимах:

интерактивный (диалоговый) режим выполнения команд;

пакетный режим выполнения командных файлов (шеллскриптов).

Шелл – это не часть ядра системы, а обычный процесс, работающий в режиме задачи.

Имеется много вариантов шелла, отличающихся тонкостями синтаксиса (например, работа с массивами) и ориентацией в большей степени на интерактивную или пакетную работу.

Как правило, в UNIX-системе имеется выбор из нескольких шеллов, хотя один считается стандартным (для Linux это bash).

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