Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6262.pdf
Скачиваний:
37
Добавлен:
13.02.2021
Размер:
6.54 Mб
Скачать

141

3.8 Лабораторная работа по теме №9

Выполнение лабораторной работы №9 опирается на теоретический материал и примеры, изложенные в первом разделе данного методического руководства. Поэтому, приступая к выполнению работы, следует сначала подробно изучить подразделы 3.1 — 3.3 данного пособия, особо обратив внимание на подраздел 3.3, где дан перечень основных определений атрибутов процессов.

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

подраздел 3.8.1 — системные вызовы общей группы, включающие «Функции управления атрибутами процессов» и «Функции порождения и завершения процессов»;

подраздел 3.8.2 — управление потоками процессов, относящийся к группе системных вызовов «Управление потоками и сигналами»;

подраздел 3.8.3 — обработка сигалов ОС, составляющий основу группы системных вызовов «Управление потоками и сигналами».

Чтобы, во время выполнения работы, были доступны проекты примеров среды разработки Eclipse C (PDP), следует:

выйти из среды разработки Eclipse, если она еще запущена;

правой кнопкой мыши активировать меню значка EclipseC, расположенного на рабочем столе и выбрать пункт меню «Свойства...»;

отредактировать команду запуска, указав рабочую область среды Eclipse в директорию /home/upk/lab9, как показано на рисунке 3.9.

закрыть окно «Eclipse — Свойства» и снова запустить среду разработки, которая должна содержать проекты лабораторной работы №9.

Рисунок 3.9 — Настройка среды разработки Eclipse С (PDP)

142

3.8.1 Системные вызовы общей группы

Описание системных вызовов общей группы приведено в подразделах 3.4 и 3.5 данного руководства.

Сначала, необходимо обратиться к подразделу 3.4 и изучить перечень системных вызовов, представленных в таблице 3.2. Затем, следует приступить к выполнению задания 3.1.

Задание 3.1

Запустить среду разработки Eclipse С и убедиться, что доступны проекты lab9.1 lab9.8.

В процессе изучения системных вызовов подраздела 3.4, изучить и запустить на выполнение проекты lab9.1 и lab9.2, которым соответствуют примеры программ, представленных на листингх 3.1 и 3.2.

Отразить результаты работы в личном отчете.

Завершив выполнение задания 3.8.1, следует перейти к изучению подраздела 3.5 и выполнению задания 3.2.

Задание 3.2

В процессе изучения системных вызовов подраздела 3.5, разобраться с текстом листинга 1.3, а затем, запустить на выполнение проект lab9.3.

Продолжая изучение учебного материала подраздела 3.5:

рассмотреть пример создания каналов процессов, изучив программу листинга 3.4 и запустив на выполнение проект lab9.4;

рассмотреть пример программы, имитирующей создание каналов интепретатором shell, изучив программу листинга 3.5 и запустив на выполнение проект

lab9.5;

Отразить результаты работы в личном отчете.

3.8.2 Управление потоками процессов

Управление потоками процессов занимает особое место в нашей теме, потому что реализация этой идеи может сильно отличаться в разных операционных системах. Мы будем рассматривать реализацию потоков (нитей, threads) в плане реализации их по стандарту POSIX, который предлагает нам набор системных вызовов с общим обозначением pthread_*(...).

Замечание

Весь набор системных вызовов pthread_*(...) - гораздо шире, чем мы рассмотрели в данной теме. Тем не менее, он является достаточным для реализации многих приложений.

143

Задание 3.3

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

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

Результаты исследования следует отразить в личном отчете.

Замечание

Для правильной компиляции программы проекта необходимо использовать дополнительный ключ: -lthread

Для этого, необходимо мышкой выделить имя проекта и, правой кнопкой, вызвать меню выбора, в котором активировать пункт «Properties».

Затем, установить нужный параметр, как показано на рисунке 3.10.

Рисунок 3.10 - Установка дополнительного ключа проекта

144

3.8.3 Обработка сигналов ОС

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

В данной теме нами рассмотрен лишь классический способ обработки сигналов, который также соответствует стандарту POSIX.

Задание 3.4

В процессе изучения подраздела 3.6 следует разобраться с двумя примерами программ, представленных листингами 3.7 и 3.8. Им соответствуют проекты примеров lab9.7 и lab9.8.

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

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

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

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