- •Преимущества
- •Связь: ooa→oop→ood
- •Механизм работы virtual
- •Абстрактный класс
- •Виртуальный деструктор
- •{Основные элементы языка программирования}
- •Основные подходы к семантике:
- •Формальное описание семантики:
- •Среда программирования
- •Объекты данных
- •Атрибуты объекта данных
- •Система типизации данных
- •Реализация типов данных
- •Типизация
- •Система типизации данных
- •Реализация типов данных
- •Связывание переменных
- •Контроль типов
- •Статистический контроль типов
- •Алгоритм статистического контроля типов
- •Динамический контроль типов
- •Параллелизм
- •Полиморфизм
- •Статический полиморфизм
- •Динамический полиморфизм
- •Преобразование типов
- •Связь: ooa→oop→ood
- •Среда программирования
- •Цель технологий параллелизма
- •Схемы параллелизма
- •Проблемы параллельного программирования
- •Показатели эффективности параллельного алгоритма Ускорение
- •Закон Густавсона-Барсиса
- •Масштабируемый алгоритм
- •Схемы параллелизма
- •Подтипы данных
- •Разновидности массивов. Статические
- •Кортежи
- •Разновидности массивов. Статические
- •Динамические
- •Атрибуты объекта данных
- •Операции над целыми числами
- •Вещественные числа
- •Числа с фиксированной точкой
- •Числа с плавающей точкой(float)
- •Ошибки вычислений с вещественными числами
- •Утечки памяти и повисшие указатели
- •Указатели на указатели
- •Типизированные указатели
- •Указатели на функции
- •[Отличия указателей и ссылок]
- •Параметры подпрограмм
- •Преимущества подпрограмм
- •Позиционное сопоставление
- •Сопоставление по имени
- •Методы передачи параметров:
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Передача параметров по значению-результату
- •Параметр по результату
- •Стековые языки
- •Циклы и рекурсия
- •Циклы со счетчиком
- •Операторы циклы без заданного числа повторений (бесконечно)
- •Динамический полиморфизм
- •Родовые (настраиваемые) сегменты и шаблоны
Цель технологий параллелизма
• Обеспечить условия, позволяющие компьютерным программам делать больший объем работы за тот же интервал времени. (Загрузить компьютер по полной)
• Проектирование программ должно ориентироваться…..
Два подхода к достижению параллельности
• Методы параллельного программирования позволяют распределить работу программы между двумя (или более) процессорами в рамках одного физического или одного виртуального компьютера.
• Методы распределенного программирования позволяют распределить работу программы между двумя (или более) процессорами, причем процессоры могут существовать на одном и том же компьютере или на разных.
Схемы параллелизма
Одна программа – много данных
(Sungle-program,Multiple-data(SPMD))
Одна программа, несколько потоков данных.
• Все процессоры выполняют одни и те же операции, но с разными данными.
• Запускается несколько копий одной и той же программы.
Множество программ – множество данных
(Multiple-programs,Multiple-Data(MPMD))
• Процессоры выполняют различные виды работы.
• При этом они вместе пытаются решить одну проблему.
• Каждому из них выдается свой аспект этой проблемы.
35. Основные проблемы параллельного и распределенного программирования.
Параллельное программирование является более сложным по сравнению с последовательным как в написании кода, так и в его отладки. Для облегчения процесса параллельного программирования существуют специализированные инструменты, например, отладчик TotalView, статический анализатор кода VivaMP.
Параллельное программирование
•Программы – совокупность описаний процессов, которые могут выполняться как в действительности одновременно, так и в псевдопараллельном режиме.
•Позволяют достичь заметного выигрыша при обработке больших объемов данных, поступающих от одновременно работающих пользователей, либо имеющих высокую интенсивность.
•Часто применяют в системах реального времени.
•Недостаток – высокие накладные расходы на разработку программ.
•Ada,MC#.
• Параллелизм – свойство, отличающее активные объекты от пассивных.
• Разделение предметной области на объекты позволит разнести общий функционал системы по нескольким потокам и процессам, часть из которых сможет выполняться одновременно.
Проблемы параллельного программирования
• Трудность организации связи. Зачастую параллельные среды состоят из гетерогенных компьютерных сетей. Разным может быть все, начиная от ОС и разрядности, заканчивая форматами передачи данных.
• Выбор оптимального количества процессоров. При увеличении степени параллельности в определенный момент она становится неэффективной.
36. Оценка максимально возможного параллелизма.
Процесс проектирования распределенных и параллельных систем состоит из этапов
1) Декомпозиция – процесс разбиения задачи на части и её решение.
2) Связывание – связь частей между собой.
3) Синхронизация – координация функционирования компонентов единой системы, порядка работы, определения критерия, когда цель достигнута.
Проблемы параллельного и распределенного программирования
1) Гонка данных – если несколько задач одновременно попытаются изменить некоторую общую область данных, а конечное значение данных при этом будет зависеть от того, какая задача обратится к этой области первой.
2) Бесконечная отсрочка – ситуация, когда задача должна ожидаться до тех пор, пока не произойдет событие или не создадутся определенные условия для их запуска. Если ожидаемое событие не состоится, то задачи могут никогда не выполниться.
3) Взаимоблокировка – возникает, когда две и более задачи постоянно блокируют друг друга в ситуации, когда у каждой задачи заблокирован ресурс, который пытается заблокировать другие задачи.
4) Трудности организации связи
5) Выбор оптимального количества процессоров – при увеличении степени параллельности она становится не эффективной.
