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

os-2015-06-dist

.pdf
Скачиваний:
4
Добавлен:
23.05.2015
Размер:
2.2 Mб
Скачать

Коммуникация процессов

Коммуникация – передача информации от одного процесса другому

Передача может осуществляться следующими способами:

Посредством разделяемой памяти Посредством передачи сообщений или потоков данных

Механизмы

обеспечения

коммуникации

Средства

коммуникации

Разделяемая

память

Простейшие

средства

Сигналы

Почтовые ящики

Каналы (трубы

Передача

сообщений и потоков данных

Базисный стек протоколов

Семиуровневая

модель

Стек TCP/IP

Высокоуровневы

е

средства

Сокеты (гнезда)

Удаленный

вызов

Вызов заданий в грид

22

Сигналы как простейшие средства коммуникации

Сигналы (signals) — это программное средство, с помощью которого может быть прервано функционирование процесса в операционной системе Unix

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

Каждому сигналу ставится в соответствие:

номер сигнала

символическая константа, используемая для осмысленной идентификации сигнала

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

реакция процесса на сигнал:

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

завершение процесса (возможно, с порождением дампа памяти)

игнорирование сигнала

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

23

Следующие ситуации приводят к генерации сигналов ОС

Ядро отправляет процессу сигнал при нажатии пользователем определенной комбинации клавиш на клавиатуре

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

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

24

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

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

SIGFPE (8) — исключительная ситуация при выполнении операции с плавающей или фиксированной точкой

SIGILL (4) — попытка выполнить неверную машинную команду

SIGSEGV (11) — нарушение защиты памяти

SIGBUS (10) — ошибка шины (адресации)

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

посылаемые одним процессом другому

SIGINT (2) — сигнал прерывания от терминала (пользователь нажал комбинацию клавиш

<Ctrl> + <C>)

SIGQUIT (3) — сигнал аварийного завершения работы от терминала (пользователь нажал комбинацию клавиш <Ctrl> + <\>)

SIGTERM (15) — сигнал программного прерывания, посылаемого по умолчанию командой kill

SIGKILL (9) — сигнал программного прерывания, который не может быть ни перехвачен, ни проигнорирован никаким процессом

SIGHUP (1) — разрыв связи с терминалом

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

SIGSTOP (23) — остановка процесса

SIGTSTP (24) — остановка процесса пользователем (пользователь нажал комбинацию клавиш

<Ctrl> + <z>)

SIGCONT (25) — продолжение приостановленного процесса

25

SIGCHLD (18) — изменение статуса порожденного процесса

 

Программа на языке Pascal, исполнение которой приведет к генерации сигнала

SIGSEGV

program SegmentationViolation; type

Pinteger = ^integer; var

IntVar: integer; NullPtr: Pinteger;

begin

NullPtr := nil;

{Попытка выполнить следующее присваивание приведет к сигналу SIGSEGV }

IntVar := NullPtr^;

end.

26

Установка обработчика сигнала прерывания от терминала

#include <signal.h>

static void reaction(int i) {

printf("Вызван обработчик сигнала %d \n", i); exit(i);

}

void main() {

if ( signal(SIGINT, SIG_IGN) != SIG_IGN ) signal(SIGINT, reaction);

printf("Перед подачей сигнала с клавиатуры \n"); while ( 1 )

;

printf("После подачи сигнала с клавиатуры \n");

}

27

Механизмы

обеспечения

коммуникации

Средства

коммуникации

Разделяемая

память

Простейшие

средства

Сигналы

Почтовые ящики

Каналы (трубы

Передача

сообщений и потоков данных

Базисный стек протоколов

Семиуровневая

модель

Стек TCP/IP

Высокоуровневы

е

средства

Сокеты (гнезда)

Удаленный

вызов

Вызов заданий в грид

28

Уровневые протоколы

Протокол — это совокупность синтаксических и семантических правил, которые определяют поведение функциональных блоков при передаче данных

Уровень — компонент иерархической структуры

Назначение уровневых протоколов таково:

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

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

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

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

29

Семиуровневая модель протоколов Взаимосвязи Открытых Систем

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

2.Уровень представления. Выполняет интерпретацию данных (например, определение кодировки).

3.Сеансовый уровень. Осуществляет проверку полномочий (аутентификацию).

4.Транспортный уровень. Обеспечивает корректную сквозную передачу данных.

5.Сетевой уровень. Выполняет маршрутизацию и ведение учета.

6.Канальный уровень. Обеспечивает прием и передачу пакетов, определение аппаратных адресов.

7.Физический уровень. Отвечает за передачу неструктурированного потока данных по физической среде.

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]