Вы находитесь на странице: 1из 8

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ

ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное
учреждение высшего образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Инженерная школа информационных технологий и робототехники


Направление «Информатика и ВТ»
Отделение информационных технологий

Лабораторная работа №4 по дисциплине


«ОПЕРАЦИОННЫЕ СИСТЕМЫ»

«Практическое знакомство с процессами, передачей данных между


процессами и их синхронизацией»

Выполнил:

Студентка группы 8В8А ____________ С. Р. Лобенко

Проверил:

Ассистент ОИТ ____________ Ю. В. Цыганков

Томск 2021
Цель работы
Практическое знакомство с объектом процесс, основными механизмами передачи
данных между процессами, а также синхронизацией взаимодействующих
процессов в ОС Unix.

Задание
1. Ознакомиться с теоретическим материалом.
2. Запустить несколько заданий (например, команд просмотра файлов less),
возвращаясь в командную строку комбинацией клавиш Ctrl-Z и изучить
действие команд ps, jobs, fg, bg, kill, killall.
3. Обеспечить синхронизацию процессов и передачу данных между ними на
примере двух приложений «клиент» и «сервер», создав два процесса (два
исполняемых файла) – процесс «клиент» (первый исполняемый файл) и
процесс «сервер» (второй исполняемый файл). С помощью механизмов
межпроцессного взаимодействия обеспечить передачу информации от
«клиента» к «серверу» и наоборот. В качестве типа передаваемой
информации можно использовать: данные, вводимые с клавиатуры; данные,
считываемые из файла; данные, генерируемые случайным образом и т. п.
4. Обмен данными между процессами «клиент»-«сервер» осуществить
следующим образом:
 с использованием программных каналов (именованных либо
неименованных, по указанию преподавателя);
 с использованием (по указанию преподавателя) одного из
перечисленных вариантов:
o разделяемая память (обязательна синхронизация процессов,
например, с помощью семафоров);
o очередь сообщений.

2
Ход работы
1. Изучение команд оперирования процессами в оболочке bash
o Jobs, ps, &. Запустим команду yes и направим ее вывод в устройство
dev/null. Чтобы перевести команду в фоновый режим припишем & в конец
команды. С помощью команды jobs узнаем статус нашего задания, а с
помощью команды ps список процессов (рис. 1).

Рисунок 1
o Kill. Прервем работу задания с помощью команды kill и PID задания.
Введем команды jobs и ps чтобы проверить результат предыдущего
действия (рис.2).

Рисунок 2
o Ctrl+Z, fg, bg. Снова запустим команду «yes» и сочетанием клавиш Ctrl+Z
приостановим ее выполнение. Затем возобновим выполнение задания на
переднем плане командой fg. Приостановим выполнение задания еще раз и
запустим его в фоновом режиме командой bg (рис. 3).

Рисунок 3
3
o Killall. Запустим команду yes еще три раза, а затем удалим все задания
одной командой killall с указанием имени задания (рис. 4). Задание, которое
было удалено последним помечено «+».

Рисунок 4
2. Обмен данными между процессами с помощью неименованных
каналов
Листинг программы представлен на рисунках 5-6. Результат работы
программы представлен на рисунке 7. Программа unnamed_pipes создает два
процесса и обеспечивает двустороннюю связь между ними посредством
неименованных каналов.

Рисунок 5 – Листинг программы 1, часть 1

4
Рисунок 6 – Листинг программы 1, часть 2

Рисунок 7 – Результат работы программы 1

3. Обмен данными между процессами с помощью очереди сообщений


Листинг программы представлен на рисунках 8-10. Результат работы
программы представлен на рисунке 11. Создается очередь сообщений, программа-
клиент посылает в программу-сервер введенное пользователем сообщение, сервер
выводит количество символов в сообщении. В конце сервер посылает сообщение
клиенту об окончании работы.

5
Рисунок 8 – Заголовочный файл

Рисунок 9 – Листинг программы №1(сервер)

6
Рисунок 10 – Листинг программы №2 (клиент)

7
Рисунок 11 – Результат работы программы №2

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