Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые работы ОС.doc
Скачиваний:
11
Добавлен:
12.08.2019
Размер:
158.72 Кб
Скачать

Задание 7 Курсовая работа «Распределённое вычисление простых чисел»

Интерфейс – консольный или графический на выбор студента.

Требуется разработать систему для распределённого вычисления простых чисел методом решета Эратосфена. Клиент коннектится к серверу и запрашивает задачу на выполнение. Задача представляет собой проверку является ли чиcло m делителем числа p. Можно предусмотреть передачу списка (диапазона) чисел. Клиент отсылает серверу информацию является ли хотя бы одно число из списка делителем p. Первоначально в списке чисел для проверки у сервера все числа, большие 2 (2 уже отмечено как простое число). На практике можно ограничить список миллионом (то есть надо найти все простые числа лежащие в диапазоне [2; 1 000 000]). Если сервер проверил все простые числа m > 1, m < p для очередного p из списка, ни одно из них не является делителем p, следовательно p является простым числом. Сервер удаляет из списка все числа, кратные p и переходит к проверке следующего числа в списке. Если p оказалось составным числом, сервер удаляет его из списка и переходит к проверке следующего числа в списке.

Сервер должен поддерживать запрос всех вычисленных простых чисел, прогресс вычисления, передачу простого числа с указанным порядовым номером, передачу простого числа из указанного диапазона. Клиент должен позволять выполнять все указанные запросы и выводить ответ от сервера.

Задание 8 Курсовая работа «Параллельный волновой алгоритм»

Интерфейс – консольный или графический на выбор студента.

Требуется реализовать волновой алгоритм с использованием параллельных потоков.

Описание идеи волнового алгоритма: http://algolist.manual.ru/maths/graphs/shortpath/wave.php

Задача: дан лабиринт MxN клеток. Каждая клетка лабиринта может иметь от 1 до 4 стенок. Дана стартовая клетка. Все эти характеристики и структура лабиринта читаются из входного файла. Количество рабочих потоков также должно читаться из входного файла.

Требуется определить длину пути из стартовой клетки во все остальные клетки лабиринта. Если клетка недостижима (или еще не исследована), то расстояние должно быть установлено равным -1.

Для повышения эффективности использования параллельных потоков следует использовать обход в глубину.

Основной алгоритм: При обнаружении нескольких возможных путей продолжения обхода – требуется направить текущий поток в последний найденных путь. А в пути, найденные ранее, нужно направить новые потоки, если еще не все рабочие потоки (указанные на входе) были задействованы.

Для каждой клетки нужно хранить ее расстояние от стартовой клетки и номер потока, который записал это расстояние.

Чтение и запись данных в структуру лабиринта (в матрицу MxN) должно быть синхронизовано между всеми потоками.

В результате работы программы требуется вывести на экран, в выходной поток или в файл следующую информацию:

Клетки лабиринта, пройденные первым потоком и записанная в них длина пути;

Клетки лабиринта, пройденные 2 потоком и записанная в них длина пути;

...

Клетки лабиринта, пройденные n потоком и записанная в них длина пути;

Итоговый лабиринт, в котором отображены расстояния от начальной клетки и номера потоков, которые последними записывали информацию в данную клетку.

(Допускается работе в паре и сдача одного отчета на двоих).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]