Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Сигналы





Презентация 3-09: сигналы

Сигналы — одно из традиционных средств межпроцессного взаимодействия в UNIX. Сигнал может быть отправлен процессу операционной системой или другим процессом. Операционная система использует сигналы для доставки процессу уведомлений об ошибках и неправильном поведении.

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

У сигнала есть только одна характеристика, несущая информацию — его номер (целое число). Иначе говоря, сигналы — это заранее определённый и пронумерованный список сообщений. Для удобства использования каждый сигнал имеет сокращённое буквенное имя. Список сигналов и их имён стандартизован и практически не отличается в различных версиях UNIX. Для отправки сигналов процессам используется специальный системный вызов kill и одноимённая ему пользовательская утилита. К основным сигналам относятся:

SIGALRM (14)

Процесс может с помощью специального системного вызова abort задать время, через которое ему необходимо отправить сигнал. Через указанный промежуток времени операционная система доставит процессу сигнал SIGALARM. Обычно этот прием применяется для задания таймаутов. Если процесс не разегистрировал обработчик этого сигнала, то обработчик по умолчанию завершает процесс.

SIGCHLD

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

SIGCONT

Сигнал продолжения исполнения программы после остановки. Обработчика по умолчанию нет.

SIGFPE (8)

Сигнал ошибки в вычислениях с плавующей точкой, отправляется операционной системой при некорректном исполении программы. Обработчик по умолчанию завершает процесс.

SIGHUP (1)

Сигнал закрытия терминала, к которому привязан данный процесс. Обычно отправляется операционной системой всем процессам, запущенным из командной строки при завершении сеанса пользователя. Обработчик по умолчанию завершает процесс.

SIGILL (4)

Сигнал некорректной инструкции. Отправляется операционной системой процессу в случае, если в исполнении программы встретилась некорректная инструкция процессора. Обработчик по умолчанию завершает процесс.

SIGKILL (9)

Сигнал аварийного завершения процесса. По этому сигналу процесс завершается немедленно — без освобождения ресурсов. Этот сигнал не может быть перехвачен, заблокирован или переопределён самим процессом, всегда используется стандартный обработчик опрационной системы. Этот сигнал используется для гарантированного завершения процесса.

SIGPIPE (13)

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

SIGSEGV (11)

Сигнал отправляется процессу операционной системой, если была произведена неверная операция с памятью (обращение по несуществующему или защищённому адресу). Обработчик по умолчанию завершает процесс.

SIGSTOP

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

SIGTERM (15)

Сигнал завершения процесса, как правило используется для корректного завершения его работы. Пример использования сигнала показан на рисунке Рисунок 1.45, «Пример использования сигнала SIGTERM»

Рисунок 1.45. Пример использования сигнала SIGTERM

 

SIGUSR1, SIGUSR2

«Пользовательские» сигналы — могут использоваться процессами для всевозможных уведомлений. Обработчик по умолчанию завершает процесс.

Сигналы являются ограниченным средством межпроцесснного обмена. Они прекрасно подходят для уведомлений, но не могут использоваться для передачи информации между процессами. Сигналы передаются без каких-либо сопутствующих данных, поэтому они обычно комбинируются с другими способами обмена (например, как показано на рисунке Рисунок 1.46, «Использование сигналов при межпроцессном обмене» — здесь сообщения между процессами сохраняются в общем файле, а сигнал служит для уведомления о приходе нового сообщения). Ещё одна интересная особенность сигналов — в случае поступления нескольких сигналов одного вида в течение короткого интервала времени, принимающий процесс рассматривает их как один поступивший сигнал, и вызывает обработчик только один раз, т. е. сигналы не накапливаются.

Рисунок 1.46. Использование сигналов при межпроцессном обмене

 

Каналы

Презентация 3-10: каналы

Канал — поток данных между двумя или несколькими процессами, имеющий интерфейс, аналогичный чтению или записи в файл. Каналы бывают одно- и двунаправленными. В UNIX каналы, как и многие другие системные объекты, представлены в виде файлов, вся работа с ними производится через базовый файловый интерфейс — открытие и закрытие файла, чтение и запись данных и т. п. В этом смысле каналы можно представлять в виде специализированных файлов, которые не хранят информацию, а лишь накапливают её до следующей операции чтения из канала другим процессом, образуя очередь.

По умолчанию в UNIX каждому процессу при запуске ставится в соответствие три открытых файла: стандартного ввода, стандартного вывода и стандартного вывода для ошибок. С помощью средств командной строки (см. подробнее в «Терминал и командная строка») такие потоки для разных процессов могут быть объединены так, что, к примеру, вывод одного процесса будет подаваться на ввод другого (см. рисунок Рисунок 1.47, «Неименованный канал между двумя процессами». То есть процесс работает с тремя потоками данных одинаково вне зависимости от того, обычные это файлы или же кананлы. В более общем смысле такие потоки называют неименованными каналами. Канал создаётся по запросу и существует только в ходе работы двух процессов, другие процессы в системе не могут обратиться к этому каналу. Если процесс на одной из сторон канала завершается и закрывает канал, другому процессу посылается специальный сигнал — SIGPIPE.

Рисунок 1.47. Неименованный канал между двумя процессами

 

Другой вид каналов в UNIX — именованные каналы — представляют собой особый тип файлов. Эти файлы располагаются в файловой системе и могут быть открыты любым процессом (если это позволяется правами доступа, см. раздел «Введение в безопасность UNIX»). Одни процессы записывают данные в канал, другие — читают из него, данные продвигаются по каналу в порядке очереди (FIFO).

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

Рисунок 1.48. Датаграммный и потоковый сокеты

Сокеты

Презентация 3-11: сокеты

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

Интерфейс сокетов позволяет явно разделить во взаимодействии двух процессов серверную и клиентскую часть. Серверный процесс инициализирует сокет и ждёт входящих соединений от других процессов. Клиентский процесс устанавливает соединение, и с этого момента по образовавшемуся каналу можно передавать поток данных в обе стороны. Такие сокеты называются потоковыми. Другой тип сокетов, датаграммный, позволяет отправлять сообщения (длиной не более 64 кбайт) между процессами, привязанными к данному сокету.

 

Интерфейс сокетов впервые появился в операционной системе BSD и использовался для связи компьютеров через сеть Internet по протоколам TCP (потоковые сокеты) и UDP (датаграммные сокеты), о чём подробнее рассказывается в разделе «Сеть в UNIX». Это основное применение сокетов, и до настоящего времени они являются стандартным средством взаимодействия процессов в сети. Кроме того, существует локальный вариант взаимодействия через сокеты, в котором обмен данными происходит через специальные файлы, расположенные в файловой системе (фактически, это аналог именованных каналов, но с интерфейсом сокетов).

Резюме

Презентация 3-12: резюме

Управление процессами — второй важный аспект работы операционной системы UNIX. В операционной системе реализован сложный механизм управления памятью, позволяющий организовать собственное виртуальное адресное пространство для каждого процессса в системе.

Каждый процесс в системе имеет уникальный идентификатор, состояние и контекст исполнения. В UNIX реализован механизм псевдопараллельного исполнения множества процессов. Планирование процессов производится на основе динамических приоритетов.

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

Для межпроцессного взаимодействия используются специальные средства, основными среди которых являются разделяемая память, каналы, сигналы и сокеты. Каждый из этих способов взаимодействия обладает своими достоинствами и характерной областью применения.

Ключевые термины: страница, область подкачки, файлы, проецируемые в память, контекст процесса, идентификатор процесса, родительский процесс, init, состояние процесса, зомби, приоритет процесса, планирование, Round Robin, поток, межпроцессное взаимодействие, разделяемая память, окружение, переменная окружения, сигнал, канал, неименованный канал, сокет

 

Date: 2015-10-18; view: 286; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию