Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Sp6.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
233.47 Кб
Скачать

0

Министерство образования и науки Российской Федерации

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

Исследование моделей взаимодействия процессов именованные каналы

Методические указания к выполнению лабораторной работы

по дисциплине «Системное программирование»

для студентов дневной и заочной формы обучения

направления подготовки № 27.03.04 –

"Управление в технических системах»

по профилю № 27.03.04

"Управление и информатика в технических системах»

Севастополь

2015

УДК 681.5

Исследование механизмов взаимодействия процессов.

Именованные каналы. Методические указания к выполнению лабораторной работы по дисциплине «Системное программирование» /сост. А.Е. Осадченко – Севастополь: Издательство СевГУ, 2016. - 16 с.

Методические указания служат для освоения системных вызовов Linux, предназначенных для управления пользовательскими процессами и изучения механизма взаимодействия отдельных процессов посредством именованных каналов. Методические указания предназначены для студентов дневной и заочной формы обучения направления подготовки № 27.03.04 – «Управление в технических системах» по профилю № 27.03.04 «Управление и информатика в технических системах»

Методические указания рассмотрены и утверждены

(протокол № 2016 г.)

Допущено учебно-методическим центром СевГУ в качестве методических указаний.

Содержание

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

2. Краткие теоретические сведения 3

2.1 ИМЕНОВАННЫЕ КАНАЛЫ 3

2.2 ОТКРЫТИЕ ИМЕНОВАННОГО КАНАЛА 4

2.3 УДАЛЕНИЕ ФАЙЛОВ 5

2.4 пример программы 6

3. задания на лабораторную работу 6

4. техническиЕ средствА ДЛЯ выполнения работы. 8

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

6. Содержание отчета о выполнении лабораторной работы 9

7. Порядок защиты работы 9

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

Библиографический список 9

приложение а 10

приложение Б 13

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

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

2. Краткие теоретические сведения

2.1 Именованные каналы

Для организации потокового взаимодействия любых процессов в операционной системе UNIX применяется средство связи, получившее название FIFO (от First Input First Output) или именованный pipe. FIFO во всем подобен pip'у, за одним исключением: данные о  расположении FIFO  в адресном пространстве ядра и его состоянии процессы могут получать не через родственные связи, а через файловую систему.

Для этого при создании именованного pip'a на диске создается файл специального типа, обращаясь к которому процессы могут узнать интересующую их информацию. Для создания FIFO применяется системный вызов mknod() (рис. 1)

Frame1

Рис. 1 – Системный вызов mknod().

Pathname указывает обычное имя каталога Unix и имя FIFO. Режим указывается константой S_IFIFO из заголовочного файла <sys/stat.h>, параметр dev обычно устанавливается равным нулю.

Здесь же указываются права доступа. Пример создания именованного канала, с меткой a.fifo, с правами на чтение и запись для всех пользователей показан на рис.2.

Frame2

Рис. 2 – Создание именованного канала

При создании FIFO реально устанавливаемые права доступа получаются из стандартной комбинации параметра mode и маски создания файлов текущего процесса umask, а именно – они равны (0777 & mode) & ~umask.

Чтобы временно устранить влияние значения umask текущего процесса на устанавливаемые права доступа, перед вызовом mknod, можно использовать системный вызов umask(0).

При успешном создании FIFO функция возвращает значение 0, при неуспешном – отрицательное значение.

Файл типа FIFO не служит для размещения на диске информации, которая записывается в именованный pipe.

Эта информация располагается внутри адресного пространства операционной системы, а файл является только меткой, создающей предпосылки для ее размещения и позволяет осуществить реальную организацию FIFO в памяти при его открытии  с помощью системного вызова open().

  Время существования FIFO в адресном пространстве ядра операционной системы, как и в случае pip'а, не может превышать времени жизни последнего из использующих его процессов.

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

Вся непрочитанная информация теряется. В то же время файл-метка остается на диске, и он может быть использован для новой реальной организации FIFO в дальнейшем.

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