
ОС / 5. ОС - Управление процессами - 2
.pdf
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