Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5.docx
Скачиваний:
14
Добавлен:
12.02.2016
Размер:
400.53 Кб
Скачать

Міністерство освіти і науки україни

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”

Передача даних між процесами в ОС Linux

МЕТОДИЧНІ ВКАЗІВКИ

до лабораторної роботи № 5

з курсу «Операційні системи»

Львів 2015

Тема : Передача даних між процесами в ОС Linux.

Мета : Оволодіти практичними навичками роботи з процесами в ОС Linux. Ознайомитись із механізмами взаємодії між процесами (Inter-Process Communication Facilities - IPC) в Linux. Навчитись створювати та використовувати іменовані та не іменовані канали, черги повідомлень та сегменти розподіленої пам’яті.

Порядок виконання роботи

По номеру варіанту вибрати завдання і відповідно до методичних вказівок, за матеріалами рекомендованої літератури і конспекту лекцій виконати завдання і оформити звіт по роботі.

Зміст звіту

  1. Початкові дані і постановка задачі.

  2. Текст програми.

  3. Результати виконання програми

  4. Висновки.

Міжпроцесна взаємодія

Для підвищення ефективності функціонування обчислювальної системи використовують два види взаємодії процесів

• псевдопаралельне (виконання на одній обчислювальній системі);

• паралельне (виконання на різних обчислювальних системах).

Існують різні причини кооперації процесів :

  • підвищення швидкості роботи (один процес в очікуванні, інший виконує корисну роботу, спрямовану на вирішення загального завдання);

  • спільне використання даних (використання різними процесами однієї і тієї ж динамічної бази даних або файлу);

  • модульна конструкція якої-небудь системи (наприклад, мікроядерний спосіб побудови ОС, коли взаємодія процесів здійснюється шляхом передачі повідомлень через мікроядро);

  • для зручності роботи користувача (наприклад, при одночасному редагуванні і відлагодженні програми, процеси редактора і відладчика повинні взаємодіяти).

Розрізняють два види процесів:

• кооперативні (впливають на взаємну поведінку шляхом обміну інформацією);

• незалежні (діяльність процесів залишається незмінною при будь прийнятої інформації).

За обсягом переданої інформації та ступеня можливого впливу на поведінку іншого процесу всі засоби такого обміну можна розділити на три категорії

1) сигнальні;

2) канальні;

3) розділена пам'ять.

У разі сигнального обміну передається мінімальна кількість інформації, достатня для сповіщення процесу про настання події.

При канальному обміні інформацією «спілкування» процесів відбувається через лінії зв'язку, надані ОС. Обсяг переданої інформації в цьому випадку в одиницю часу обмежений пропускною здатністю ліній зв'язку.

При використанні процесами розділеної пам'яті спільно використовується деяка область адресного простору, сформована ОС. Цей спосіб обміну інформацією являє собою найбільш швидкий спосіб взаємодії процесів в одній обчислювальній системі, але вимагає при використанні підвищеної уважності.

Розрізняють два способи адресації при обміні інформацією між процесами

• прямий - процеси здійснюють операції обміну даними явно вказуючи ім'я або номер цих процесів;

непрямий - дані поміщаються передаючим процесом в певний проміжний об'єкт для зберігання даних з адресою, звідки вони потім можуть бути вилучені яким-небудь іншим процесом.

Пряма адресація може бути двох типів

• симетрична - процеси, які приймають і передають дані, вказують імена своїх партнерів по взаємодії, при цьому жоден інший процес не може втрутитися в процедуру симетричного прямого спілкування двох процесів, перехопити послані або підмінити очікувані дані;

• асиметрична - тільки один з взаємодіючих процесів вказує ім'я свого партнера по кооперації, а другий процес як можливого партнера розглядає будь-який процес в системі.

Слід виділити дві різні моделі передачі даних по каналах зв'язку

• З використанням потоку вводу-виводу. Не важлива структура даних, не здійснюється їх інтерпретація; процес, який прочитав 100 байт з лінії зв'язку, не знає, чи були вони передані одночасно, прийшли від одного процесу або від різних. Прикладом такої моделі є «pipe» (пайп або канал);

• За допомогою повідомлень. На передані дані накладається певна структура, весь потік інформації розділяється на окремі повідомлення, вводячи між даними, принаймні, кордони повідомлень.

Найбільш простий варіант пайпа (каналу) - неіменованого канал створює оболонка Unix (наприклад, bash) між програмами, що запускаються з командного рядка, розділеними символом «|».

Наприклад, командний рядок

dmesg | less

створює канал від програми dmesg до less, що виводить налагоджувальні повідомлення ядра, до програми посторінкового перегляду less.