Лабораторна робота 6
Тема: Міжпроцесна взаємодія (IPC)
Мета: Отримати практичні навички роботи з механізмами міжпроцесної взаємодії в Linux, навчитися використовувати канали, черги повідомлень, спільну пам’ять та сокети для обміну даними між процесами.
Завдання роботи
- Огляд механізмів IPC.
- Пояснити основні механізми IPC:
- канали (pipes)
- іменовані канали (named pipes)
- черги повідомлень
- спільна пам’ять
- сокети
- Навести приклади використання IPC у Linux.
- Пояснити основні механізми IPC:
- Робота з каналами (pipes).
- Створити простий канал між командами:
ls -l | grep ".txt" - Пояснити роботу оператора
|. - Виконати приклад з кількома каналами:
ps aux | grep bash | wc -l - Проаналізувати результати.
- Створити простий канал між командами:
- Робота з іменованими каналами (FIFO).
- Створити іменований канал:
mkfifo mypipe - У першому терміналі записати дані:
echo "Hello IPC" > mypipe - У другому терміналі зчитати дані:
cat mypipe
- Створити іменований канал:
- Спільна пам’ять.
- Пояснити призначення спільної пам’яті.
- Навести приклад використання (теоретичний).
- Обговорити переваги та недоліки спільної пам’яті.
- Черги повідомлень.
- Пояснити принцип роботи черг повідомлень.
- Навести приклади застосування.
- Порівняти черги повідомлень із каналами.
- Сокети для IPC.
- Пояснити різницю між мережевими та локальними сокетами.
- Навести приклад використання локального сокета.
- Обговорити сфери застосування сокетів.
- Практика: простий сервер та клієнт (Python).
- Створити файл сервера:
server.py - Додати код сервера:
import socket server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) server.bind("/tmp/ipc_socket") server.listen(1) conn, _ = server.accept() data = conn.recv(1024) print("Received:", data.decode()) conn.close() - Створити файл клієнта:
client.py - Додати код клієнта:
import socket client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) client.connect("/tmp/ipc_socket") client.send(b"Hello IPC") client.close() - Запустити сервер і клієнт та проаналізувати обмін даними.
- Створити файл сервера:
Необхідне програмне забезпечення
- Операційна система Linux (Ubuntu або інший дистрибутив).
- Термінал Linux.
- Python (для прикладу із сокетами).
Короткий опис виконання роботи
У ході лабораторної роботи студент вивчає механізми міжпроцесної взаємодії в Linux. Практичні завдання охоплюють роботу з каналами, іменованими каналами, а також теоретичне ознайомлення зі спільною пам’яттю та чергами повідомлень. Окремо розглядається використання сокетів для обміну даними між процесами.
Результат виконання роботи
У результаті виконання лабораторної роботи студент отримує навички роботи з IPC, розуміння принципів обміну даними між процесами та практичний досвід використання каналів і сокетів.
Контрольні питання для самоперевірки
- Що таке міжпроцесна взаємодія (IPC)?
- Які існують основні механізми IPC?
- Для чого використовуються канали (pipes)?
- У чому різниця між звичайними та іменованими каналами?
- Що таке спільна пам’ять і для чого вона застосовується?
- Як працюють черги повідомлень?
- У чому різниця між мережевими та локальними сокетами?
Критерії оцінювання
Максимальна кількість балів — 5 балів
| N | Кількість балів | Критерій |
|---|---|---|
| 1 | 0 | Лабораторну роботу не здано |
| 2 | 2 | Виконано частину завдань, студент не розуміє IPC |
| 3 | 3 | Усі основні завдання виконані, але студент частково орієнтується у поясненні |
| 4 | 4 | Усі завдання виконані коректно, студент розуміє принципи IPC |
| 5 | 5 | Усі завдання виконані, студент впевнено пояснює механізми IPC |
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу