3.6.  Напишите программу, которая работает по следующему сценарию:

1)  вызвать функцию procinfo()

2)  породить новый процесс и в нем запустить программу procinfo

3)  ждать завершения процесса-потомка с помощью вызова wait()

4)  породить для запуска procinfo() новый поток выполнения

5)  ждать завершения порожденного потока

6)  завершить работу.

4. Содержание отчета

4.1. Синтаксис и краткое описание изученных системных вызовов.

4.2. Исходные тексты и результаты выполнения программ п. 3.2 - 3.6 с комментариями.

5. Конторльные вопросы

Лабораторная работа N8

Интерфейс прикладного программирования ОС UNIX:

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

1. Цель работы

Изучение программного интерфейса сигналов а также механизмов посылки, получения и обработки сигналов процессами.

2. Основные положения

Сигналы в ОС UNIX являются средством оповещения процесса о внешних или внутренних по отношению к процессу событиях. Собственно посылка сигнала осуществляется ядром ОС путем установки соответствующего сигналу бита в специальной переменной контекста процесса. Процесс обрабатывает полученные сигналы при переходе из режима ядра в режим задачи. Сигналы различают по номерам, обычно их в системе не более 32. Список использующихся в системе сигналов обычно можно посмотреть в системе помощи "man" или "info". Например, сигналы ОС Linux описаны в 7-ой секции "man". Сигналы некоторых типов могут быть сгенерированы ядром ОС при возникновении соответствующих событий, кроме того, процесс может с помощью ядра послать сигнал другому процессу или группе процессов (если имеет на это право). Реакция процесса на получение конкретного сигнала задается с помощью системных вызовов signal() и sigaction(). Посылка или проверка полномочий на посылку сигнала осуществляется системным вызовом kill() (или raise() - самому себе). Во многих системах процесс может блокировать получение сигналов (кроме SIGKILL и SIGSTOP) с помощью так называемой сигнальной маски, которая устанавливается и опрашивается вызовом sigprocmask().

НЕ нашли? Не то? Что вы ищете?

Пользовательский обработчик сигнала должен представлять собой функцию, получающую в качестве параметра номер пришедшего сигнала и указатель на структуру с дополнительной информацией (только если обработчик был установлен с помощью sigaction()). При получении сигнала ядро ОС может восстановить для процесса реакцию по-умолчанию на этот сигнал, кроме того, выполнение функции-обработчика может быть "прервано" таким же или другим сигналом. Такое поведение системы зависит от реализации и обычно может быть задано параметрами sigaction().

При получении большинства сигналов стандартной реакцией процесса является завершение работы, а при получении некоторых - еще и создание файла 'core' в текущем каталоге. Файл 'core' представляет собой образ процесса на момент получения сигнала и может быть передан в качестве параметра отладчику для выяснения причин возникновения сигнала. Поведение программы при перехвате таких сигналов зависит от реализации системы.

3. Порядок выполнения работы

3.1.  Ознакомьтесь с синтаксом и особенностями работы перечисленных в предыдущем пункте системных вызовов API сигналов.

3.2.  Выясните формат файла 'core' для используемой системы и поместите его в отчет.

3.3.  Поместите в отчет имя, номер и краткое описание для сигналов управления процессами.

3.4.  В соответствии с индивидуальным вариантом напишите программу, реагирующую на перехватываемые сигналы выводом на экран строки вида "Получен сигнал SIGXXX от процесса YYY". Позаботьтесь о демонстрации правильности установки реакции на сигналы в соответствии с заданием (возможно, понадобится еще одна программа).

Варианты заданий

Вариант

Сигнал №

Перехватывать

Маскировать

Восстанавливать реакцию по умолчанию при получении

Не восстанав-ливать реакцию по умолчанию при получении

Разрешить получение сигнала внутри его обработчика

Не разрешать получение сигнала внутри его обработчика

1

1,10,17

22

10

1,17

1

17

2

2,13,21

1

13,21

2

2,21

13

3

14,18,27

4

18

14,27

14,18

27

4

4,11,12

14

12

4,11

4,11,12

-

5

1,3,15

18

-

1,3,15

1

3,15

6

6,17,28

3

17,28

6

-

6,17,28

7

5,14,20

7

14,20

5

20

5,14

8

2,7,18

11

7

2,18

-

2,7,18

9

10,13,28

2

10,13

28

13,28

10

10

4,12,21

13

4

12,21

4,12,21

-

11

3,13,22

6

13

3,22

3,22

13

12

7,15,20

21

-

7,15,20

15

7,20

4. Содержание отчета

4.1.  Синтаксис и краткое описание изученных системных вызовов.

4.2.  Формат файла 'core'.

4.3.  Описание сигналов, используемых для управления процессами.

4.2. Исходные тексты и программы п. 3.4 с комментариями.

5. Конторльные вопросы

Лабораторная работа N9

Интерфейс прикладного программирования ОС UNIX:

Межпроцессное взаимодействие

1. Цель работы

Изучение программного интерфейса обмена данными между процессами (IPC).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5