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

Завдання:

  1. Розглянути, вiдкомпiлювати та запустити на виконання наведенi приклади.

  2. З'ясувати принципи взємодiї та синхронiзацiї потокiв при використаннi обмiнникiв.

  3. З'ясувати особливостi програмування та застосування обмiнникiв.

 

Iндивiдуальнi завдання до захисту роботи

  1. Створити три процеси та органiзувати обмiн даними мiж ними за топологiєю "Лiнiйка". Тобто перший процес передає данi другому, а другий - третьому.

  2. Створити три процеси та органiзувати циклiчний обмiн даними мiж ними. Тобто перший потiк повинен передавати дани до другого, другий - до третього, а третiй - до першого.

  3. Створити чотири процеси та органiзувати обмiн даними мiж ними за топологiєю "Зiрка". Тобто один (головний) процес повинен роздати данi iншим трьом (пiдлеглим) процесам.

  4. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = 1 + 1 / (1 + 1 / (1 + 1 / (1 + 1 / x))).

  5. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = a * (1 + a * (1 + a * (1 + a * (1 + a)))).

  6. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = a * x / (a * x / (a * x / (a * x))).

  7. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = a / (x + a / (x + a / (x + a / (x + a / x)))).

  8. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = a * b / (x + a * b / (x + a * b / (x + a * b / (x + a * b / x)))).

  9. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = 1 + (1 + (1 + (1 + x) / x) / x) / x.

  10. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = 2 * (2 * (2 * (2 * x - 1) * x - 1) * x - 1) * x - 1.

  11. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = a / (a / (a / (a / x - b) - b) - b) - b.

  12. Розробити паралельну програму - конвеєр даних для табулювання функцiї y = a * (b / (a * (b / (a * (b / x) + c)) + c)) + c.

 

Лабораторна робота №11.

Тема: Розподілене програмування на мовi Java з використанням механiзму Sockets.

Мета: Опанувати методику створення розподілених програм з використанням механізму Sockets.

 

Теоретичні відомості.

Розподілене програмування мовою Java з використанням сокетів

Мова Java підтримує розподілене програмування за допомогою потоків, поділюваних змінних і синхронізованих методів. Тому мову Java можна використовувати для написання розподілених програм. У цій мові немає вбудованих примітивів для передачі повідомлень, але є стандартний модуль java.net. Класи цього модуля підтримують низькорівневу взаємодію, використовуючи дейтаграми, зв'язок більш високого рівня за допомогою сокетів і взаємодію через Internet за допомогою адрес URL (Uniform Resource Locator - уніфікований покажчик інформаційного ресурсу).

 

Мережі і сокети

Мережа складається з набору вузлів (ведучих комп'ютерів - host), зв'язаних за допомогою комунікаційного простору. Наприклад, локальна мережа може складатися із серверів і робочих станцій, зв'язаних за допомогою Ethernet. Internet - це приклад глобальної мережі, що містить мільйони вузлів і тисячі взаємозалежних мереж. Кожен вузол має унікальне ім'я, тому інші вузли можуть зв'язуватися з ним. Фактично вузли мережі Internet мають по двох унікальних імені: символьне ім'я домена Internet і числова адреса для протоколу IP (Internet protocol).

Програми, що виконуються на різних вузлах, використовують протоколи взаємодії. Таких протоколів існує дуже багато. Вони підтримують різні типи даних (від тексту і графіки до фільмів), різні рівні абстракції (такі як передача файлів або пакетів даних) і різні співвідношення властивостей, наприклад, швидкості і надійності. Системні програмісти звичайно використовують два протоколи - TCP (Transmission Control Protocol - протокол керування передачею) і UDP (User Data Protocol - протокол даних користувача). Ці протоколи звичайно реалізовані на основі протоколу IP (Internet Protocol), що, у свою чергу, заснований на апаратних протоколах, таких як драйвер Ethernet. З іншого боку, на основі протоколу TCP реалізовані високорівневі протоколи передачі файлів (file transfer protocol - FTP) і передачі гіпертекстів (hypertext transfer protocol - HTTP).

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

Протокол UDP заснований на дейтаграмах. Дейтаграма складається з адреси призначення і невеликого “пакета” даних, що є просто масивом байтів. З'єднання не потрібні, оскільки адреса призначення є в кожної дейтаграмі. Зв'язок за протоколом UDP не надійний, оскільки дейтаграми можуть губитися або приходити не один за одним. З іншого боку, зв'язок за допомогою дейтаграм набагато швидше, ніж зв'язок, заснований на потоках. Таким чином, альтернативність протоколів TCP і UDP пов'язана головним чином з вибором між надійністю і швидкістю.

Модуль java.net містить кілька класів, що підтримують мережну взаємодію за допомогою як дейтаграм, так і потоків. Далі ілюструється використання двох класів, Socket і ServerSocket, що широко використовуються у додатках типу “клієнт-сервер”.