![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Теми лабораторних занять.
Завдання до лабораторної роботи на тему «Технологія MPI»
Для моделювання роботи КА використати наступну топологію процесів:
Завдання до лабораторної роботи на тему «Взаємодія між процесами ОС Unix» 1. Створити клас, що дозволяє використати «множинні семафори». Використовуючи цей клас, написати наступний програмний додаток мовою С++. Файли f1, f2, f3, f4, f5 містять цілі числа. П'ять однакових процесів обробляють ці файли. Кожному процесу для роботи необхідно два файли. Результат роботи процес записує у файл out_i.
Процес виконує одне з наступних дій (визначається варіантом завдання): a. Знаходить у файлах будь-яку пару парних чисел (по одному числу у файлі), заміняє їхніми нулями. Знайдені числа виводить у файл out_i. Якщо хоча б в одному файлі потрібних чисел немає - закінчує роботу. b. Знаходить у файлах будь-яку пару непарних чисел (по одному числу у файлі), заміняє їхніми нулями. Знайдені числа виводить у файл out_i. Якщо хоча б в одному файлі потрібних чисел немає - закінчує роботу. c. Знаходить у файлах будь-яку пару натуральних чисел (по одному числу у файлі), заміняє їхніми нулями. Знайдені числа виводить у файл out_i. Якщо хоча б в одному файлі потрібних чисел немає - закінчує роботу. d. Знаходить у файлах будь-яку пару простих чисел (по одному числу у файлі), заміняє їхніми нулями. Знайдені числа виводить у файл out_i. Якщо хоча б в одному файлі потрібних чисел немає - закінчує роботу. 2. Для рішення задачі спроектувати монітор Хоара. Описати алгоритм рішення задачі з використанням цього монітора. Написати програму мовою С++, що реалізує цей алгоритм (монітор реалізувати з використанням класу семафора). a) Процеси PW, PR1 й PR2 спільно обробляють файл f.pub. PW читає з файлу f.in довільні натуральні числа й записує їх у файл f.pub. PR1 читає з файлу f.pub парні числа й записує у файл f1.out їхні прості дільники. PR2 читає з файлу f.pub непарні числа, перевіряє їх на простоту. Результат записує у файл f2.out. PW пише числа у файл, якщо файл порожній або число прочитано. Процеси PR1, PR2 читають числа по одному разі. b) Процеси PW, PR1 й PR2 взаємодіють через загальну пам'ять. PW читає з файлу f.in і записує загальну пам'ять довільні натуральні числа. PR1 читає із загальної пам'яті парні числа й записує у файл f1.out їхні прості дільники. PR2 читає із загальної пам'яті непарні числа, перевіряє їх на простоту. Результат записує у файл f2.out. PW пише числа в загальну пам'ять, якщо загальна пам'ять порожня або число прочитане. Процеси PR1, PR2 читають числа по одному разі. 3. Процес P1 читає з файлу f1.in цілі числа й записує їх у файл f.pub. Процес P2 читає числа з файлу f.pub і записує їхні прості дільники у файл f2.out. Процеси звертаються до файлу f.pub по черзі. 4. Процес P1 читає з файлу f1.in цілі числа й записує їх у загальну пам'ять. Процес P2 читає числа із загальної пам'яті й записує їхні прості дільники у файл f2.out. Процеси звертаються до загальної пам'яті по черзі. 5. Процес P1 читає з файлу f1.in рядок символів, шифрує її й записує у файл f.pub. Процес P2 читає зашифрований рядок з файлу f.pub, розшифровує її й записує у файл f2.out. Процеси звертаються до файлу f.pub по черзі. Рядки шифруються алгоритмом Цезаря. 6. Процес P1 читає з файлу f1.in рядок символів, шифрує її й записує в загальну пам'ять. Процес P2 читає зашифрований рядок із загальної пам'яті, розшифровує її й записує у файл f2.out. Процеси звертаються до загальної пам'яті по черзі. Рядки шифруються алгоритмом Цезаря. 7. Описати клас «рахункові семафори» і вирішити наступну задачу («читачі-письменники»). Процес-письменник PW читає з файлу f1.in цілі числа й записує у файл f.pub (якщо лічено 0 – додаток завершує роботу). Процеси-читачі виконують наступне: PR1 читає з файлу f.pub парні числа й знаходить його найбільший простий дільник. Результат записує у файл f1.out. PR2 читає з файлу f.pub непарні числа, перевіряє їх на простоту й результат виводить у файл f2.out. PR3 читає з файлу f.pub негативні числа й виводить у файл f3.out. 8. Додаток-сервер створює черга повідомлень. Потім, читаючи із черги повідомлення записує у файл f1.out повідомлення типу 1, а у файл f2.out – повідомлення типу 2. Одержавши повідомлення типу 3, додаток-сервер видаляє чергу й завершує роботу. Додаток-клієнт читає з файлу f1.in числа (тип повідомлення) і рядка символів і записує цю інформацію в чергу повідомлень. Продемонструвати роботу додатка-сервера й мінімум двох клієнтів, що працюють одночасно. 9. Створити конвеєр із трьох процесів P1, P2, P3. Процес P1 читає з файлу f1.in рядок з латинських символів і пробілів і заміняє в ній всі малі літери прописними. Процес P2 видаляє з рядка зайві пробіли. Процес P3 заміняє пробіли символом ‘_’ і виводить рядок у файл f1.out. Використати семафори Unix System Y, описавши на їхній основі клас семафорів. Для взаємодії між собою процеси використають FIFO. 10. Створити конвеєр із трьох процесів P1, P2, P3. Процес P1 читає з файлу f1.in рядок з латинських символів і пробілів і заміняє в ній всі малі літери прописними. Процес P2 видаляє з рядка зайві пробіли. Процес P3 заміняє пробіли символом ‘_’ і виводить рядок у файл f1.out. Використати семафори Unix System Y, описавши на їхній основі клас семафорів. Для взаємодії між собою процеси використають загальну пам'ять. 11. Створити конвеєр із трьох процесів P1, P2, P3. Процес P1 читає з файлу f1.in рядок з латинських символів і пробілів і заміняє в ній всі малі літери прописними. Процес P2 видаляє з рядка зайві пробіли. Процес P3 заміняє пробіли символом ‘_’ і виводить рядок у файл f1.out. Використати семафори Unix System Y, описавши на їхній основі клас семафорів. Для взаємодії між собою процеси використають чергу повідомлень. 12. Створити конвеєр із трьох родинних процесів. Перший процес читає з файлу f1.in рядок з латинських символів і пробілів і заміняє в ній всі малі літери прописними. Другий процес видаляє з рядка зайві пробіли. Третій заміняє пробіли символом ‘_’ і виводить рядок у файл f.out. Використати семафори Unix System Y, описавши на їхній основі клас семафорів. Для взаємодії між собою процеси використають анонімні канали. Завдання до лабораторної роботи на тему «Потоки ОС Unix стандарту POSIX» А. Додаток клієнт посилає додатку сервер запит, використовуючи один з механізмів межпроцессного взаємодії. Головний потік додатка сервер приймає запити від клієнта (клієнтів) і поміщає їх у чергу запитів. Деяка кількість потоків сервера одночасно обробляють ці запити, витягаючи їх із черги. Сервер завершує роботу, одержавши запит певного зразка. Результати обробки запитів потоки поміщають у файл. Для синхронізації роботи потоків використати мютексы й POSIX-семафори.
Б. Додаток клієнт посилає додатку сервер запити двох типів, використовуючи один з механізмів межпроцессного взаємодії. Клієнт читає запити з файлу. Головний потік сервера приймає запити від клієнта (клієнтів) і поміщає їх у чергу запитів. Деяка кількість потоків (двох типів) сервера одночасно обробляють ці запити, витягаючи їх із черги. Сервер завершує роботу, одержавши запит певного зразка. Результати обробки запитів потоки поміщають у різні файли залежно від типу запиту. Для синхронізації роботи потоків використати мютексы, POSIX-семафори й умовні змінні.
В. Головний потік програми формує черга завдань із вхідного файлу. Для обробки завдань із цієї черги використається конвеєр із трьох потоків. Перший потік витягає завдання із черги, обробляє й передає другому. Другий потік обробляє завдання й передає третьому. Третій потік обробляє завдання й виводить результат у файл. Потоки виконуються одночасно. Для синхронізації роботи потоків використати мютексы й POSIX-семафори.
Вимоги до звіту: 1. Постановка задачі. 2. Алгоритм рішення задачі. 3. Текст програми. 4. Тестовий приклад. 5. Результати роботи програми на тестовому прикладі. Завдання до лабораторної роботи на тему «Технологія OpenMP» На языке С/С++ написать последовательную программу решения поставленной задачи. Программа должна определять время, потраченное потоком процесса на решение задачи. Преобразовать последовательную программу в параллельную для 2-процессорной SMP-системы. Программа должна выводить время, потраченное каждым потоком программы на решение задачи.
Отчет должен состоять из следующих пунктов:
9. Індивідуальне навчально-дослідне завдання Не передбачено
|