5.1.1. Общая схема управления процессами
5.1.1. Общая схема управления процессами
Каждый процесс может порождать полностью идентичный процесс с помощью fork(). Родительский процесс может дожидаться окончания выполнения всех своих процессов-потомков с помощью системного вызова wait. В любой момент времени процесс может изменить содержимое своего образа памяти, используя одну из разновидностей вызова ехес(). Каждый процесс реагирует на сигналы и, естественно, может установить собственную реакцию на сигналы, производимые операционной системой. Приоритет процесса может быть изменен с помощью системного вызова nice.
Сигнал — это способ информирования процесса ядром о происшествии какого-то события. Если возникает несколько однотипных событий, процессу будет подан только один сигнал. Сигнал означает, что произошло событие, но ядро не сообщает, сколько таких событий произошло.
Примеры сигналов:
1. Окончание порожденного процесса (например, из-за системного вызова exit (см. ниже)).
2. Возникновение исключительной ситуации.
3. Сигналы, поступающие от пользователя, при нажатии определенных клавиш.
Установить реакцию на поступление сигнала можно с помощью системного вызова signal:
func = signal(snum, function);
где: snum — номер сигнала;
function — адрес функции, которая должна быть выполнена при поступлении указанного сигнала.
Возвращаемое значение — адрес функции, которая будет реагировать на поступление сигнала. Вместо function можно указать ноль или единицу. Если был указан ноль, то при поступлении сигнала snum выполнение процесса будет прервано аналогично вызову exit. Если указать единицу, данный сигнал будет проигнорирован, но это возможно не для всех процессов.
С помощью системного вызова kill можно сгенерировать сигналы и передать их другим процессам. Обычно kill используется для того, чтобы принудительно завершить («убить») процесс:
kill(pid, snum);
где: pid — идентификатор процесса;
snum — номер сигнала, который будет передан процессу (см. табл. 5.1).
Pid состоит из идентификатора группы процессов и идентификатора процесса в группе. Если вместо pid указать нуль, то сигнал snum будет направлен всем процессам, относящимся к данной группе (понятие группы процессов аналогично группе пользователей). В одну группу включаются процессы, имеющие общего предка. Идентификатор группы процесса можно изменить с помощью системного вызова setpgrp. Если вместо pid указать –1, то ядро передаст сигнал всем процессам, идентификатор пользователя которых равен идентификатору текущего выполнения процесса, посылающего сигнал. Номера сигналов приведены в табл. 5.1. Сигналы (точнее, их номера) описаны в файле signal.h.
Номера сигналов Таблица 5.1
Номер Название Описание 01 SIGHUP Освобождение линии (hangup) 02 SIGINT Прерывание (interrupt) 03 SIGQUIT Выход (quit) 04 SIGILL Некорректная команда (illegal instruction). He переустанавливается при перехвате 05 SIGTRAP Трассировочное прерывание (trace trap). He переустанавливается при перехвате 06 SIGIOT или SIGABRT Машинная команда IOT. Останов ввода/вывода 07 SIGBUS Ошибка на шине 08 SIGFPE Исключительная ситуация при выполнении операции с вещественными числами (floating-point exception) 09 SIGKILL Уничтожение процесса (kill). He перехватывается и не игнорируется 10 SIGUSR1 Определяемый пользователем сигнал 1 11 SIGSEGV Некорректное обращение к сегменту памяти (segmentation violation) 12 SIGUSR2 Определяемый пользователем сигнал 2 13 SIGPIPE Запись в канал, из которого некому читать. Обрыв потока 14 SIGALRM Будильник 15 SIGTERM Программный сигнал завершения 16 SIGSTKFLT Сбой стека 17 SIGCHLD (или SIGCLD) Изменение статуса дочернего процесса 18 SIGCONT Продолжение работы после сигнала STOP. He перехватывается и не игнорируется 19 SIGSTOP Сигнал СТОП. Не перехватывается и не игнорируется 20 SIGTSTP Сигнал останова клавиатуры 21 SIGTTIN Фоновое чтение из терминала (tty) 22 SIGTTOU Фоновая запись на терминал (tty) 23 SIGURG Критическое состояние сокета 24 SIGXCPU Превышенный предел процессорного времени 25 SIGXFSZ Превышенный предел размера файла 26 SIGVTALRM Сигнал виртуального будильника 27 SIGPROF Сигнал профилирующего будильника 28 SIGWINCH Изменение размера окна 29 SIGIO Разрешение ввода/вывода 30 SIGPWR Сбой питания 31 SIGSYS Некорректный параметр системного вызоваДля нормального завершения процесса используется вызов:
exit(status)
где status — это целое число, возвращаемое процессу-предку для его информирования о причинах завершения процесса-потомка.
Вызов exit может задаваться в любой точке программы, но может быть и неявным, например, при выходе из функции main (при программировании на С) оператор return 0 будет воспринят как системный вызов exit(0).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Схема уведомления
Схема уведомления Как получить уведомление о тайм-ауте? При использовании таймера задержки вы получаете уведомление просто посредством возвращения в состояние READY.При использовании периодически и однократных таймеров у вас появляется выбор:• послать
Схема data:URI
Схема data:URI Схема data:URI предоставляет способ для внедрения «непосредственно данных» точно так же, как если бы они были подключены через вызовы внешних файлов. Синтаксис у нее следующий:data:[<тип данных>][;base64],<данные>В случае простых изображений вам нужно указать
Схема WS XML
Схема WS XML Синтаксис элементов, составляющих структуру WS-файла, в общем виде можно представить следующим образом:<element [attribute1="value1" [attribute2="value2" ... ]]> Содержимое (content)</element>Открывающий тег элемента состоит из следующих компонентов:? открывающей угловой скобки "<";?
Схема WSC XML
Схема WSC XML Ранее в главе 3 отмечалось, что объектная модель, которая используется при создании многозадачных сценариев (WS-файлов), была в основном позаимствована из схемы WSC XML, поэтому многие элементы WSC-файлов окажутся вам знакомыми.В листинге 10.1 приводится несколько
Подсистема управления процессами
Подсистема управления процессами Запущенная на выполнение программа порождает в системе один или более процессов (или задач). Подсистема управления процессами контролирует:? Создание и удаление процессов? Распределение системных ресурсов (памяти, вычислительных
Глава 3 Подсистема управления процессами
Глава 3 Подсистема управления процессами Сердцем операционной системы UNIX является подсистема управления процессами. Практически все действия ядра имеют отношение к процессам, будь то обслуживание системного вызова, генерация сигнала, размещение памяти, обработка
5.3. Команды управления процессами
5.3. Команды управления процессами Команда psКоманда ps предназначена для вывода информации о выполняемых в текущий момент процессах. Данная команда имеет много параметров, о которых вы можете прочитать в руководстве (man ps). Здесь я опишу лишь наиболее часто используемые
9.2. Команды управления процессами
9.2. Команды управления процессами 9.2.1. Иерархия процессов: ps и pstree О том, что команда ps позволяет просмотреть сведения обо всех процессах, протекающих в системе в данный момент, вы уже знаете (п.3.2). С ключом -f эта команда выводит как PID самого процесса, так и PPID его родителя,
Схема ИЛИ-НЕ
Схема ИЛИ-НЕ В последнем примере главы 9 мы рассматривали логическую схему 7400: 2-входовую схему ИЛИ-НЕ. В качестве источников V1 и V2 были использованы источники напряжения типа PWL с выходным напряжением в виде последовательностей импульсов, представляющих уровни
Схема полусумматора
Схема полусумматора На самом деле нет необходимости использовать источник типа VPWL, чтобы обеспечить входные импульсы для цифровой схемы. Начните новый проект, использующий имя half. Библиотека Sourcestm содержит компонент DigStim1, условное обозначение которого показано на рис.
Общая схема связей компоновочных блоков
Общая схема связей компоновочных блоков Теперь, когда мы с вами изучили подробности того, как среда CLR осуществляет поиск запрошенных компоновочных блоков, вспомните о том, что простое на самом деле должно быть простым. Многие (если не все) ваши .NET-приложения будут иметь
Схема лизингового управления циклом существования САО-типов и WKO-синглетов
Схема лизингового управления циклом существования САО-типов и WKO-синглетов Вы уже видели, что WKO-типы, сконфигурированные для активизации одиночного вызова, существуют только в процессе текущего вызова метода. Поэтому WKO-типы одиночного вызова являются объектами, не
Схема лизингового управления, используемая по умолчанию
Схема лизингового управления, используемая по умолчанию Для MBR-объектов, являющихся САО-типами или WKO-синглетами, применяется так называемый лизинг по умолчанию, время которого равно пяти минутам. Если среда выполнения обнаружит, что MBR-объект, являющийся САО-типом или
Первые, вторые и третьи репликаторы по Сьюзен Блэкмор, происхождение жизни и общая схема фазовых переходов в эволюции Дмитрий Шабанов
Первые, вторые и третьи репликаторы по Сьюзен Блэкмор, происхождение жизни и общая схема фазовых переходов в эволюции Дмитрий Шабанов Опубликовано 07 марта 2013 Наэлектризовавшую читателей тему двух предыдущих колонок не затрагиваю; поговорю здесь