
- •Билет №1
- •1.Составные части и свойства распределенной системы
- •2. Удаленный сервер
- •Билет №2
- •1. Параллелизм в распределенной системе
- •2. Реализация локального сервера
- •Билет №3
- •1. Закон Амдала
- •2. Заместитель/заглушка. Компилятор midl
- •Билет №4
- •1. Ускорение решения задачи в распределенной параллельной системе
- •2. Язык idl
- •Билет №5
- •1. Последовательные операции. Параллельные операции. Число процессоров.
- •2. Назначение данных на узлы распределенной системы. Модель назначения объектов на узлы. Сокращение трафика в каналах передачи данных.
- •Билет №6
- •1. Планирование параллельной распределенной обработки данных.
- •2. Модель назначения объектов на узлы. Частоты запросов к объектам. Длины объектов. Производительность узлов. Производительность каналов передачи данных.
- •Билет №7
- •1. Параллелизм в пространстве и во времени (конвейерный параллелизм)
- •2. Среднее время обработки одного запроса. Минимизация времени
- •Многошаговое планирование на базе asap
- •Билет №8
- •1. Синхронное и асинхронное планирование.
- •2. Время обработки всех запросов к объектам. Загрузка узлов. Загрузка каналов передачи данных.
- •Билет №9
- •1. Планирование при ограничениях на ресурсы, время, достижимость
- •2. Локальный вызов процедуры. Маршалинг Локальный вызов процедуры
- •Маршалинг
- •Б илет №10
- •Стратегия планирования asap Алгоритм планирования asap (как можно раньше)
- •2. Серверы в exe.
- •Билет №11
- •1. Стратегия планирования alap
- •2. Включение и агрегирование компонентов
- •Стратегия планирования «Группировка доминирующей последовательности» (Dominant Sequence Clustering - dsc)
- •Билет №12
- •1. Стратегия спискового планирования
- •Регистрация компонента в реестре
- •Билет №13
- •1. Многошаговое планирование
- •2. Функции CoGetClassObject и DllGetClassObject и их использование
- •Билет №14
- •1. Цепочечное планирование
- •2. Интерфейс iClassFactory
- •Билет №15
- •1. Граф предшествования и граф распараллеленности операций
- •2. Фабрика класса
- •Билет №16
- •1. Свертывание графа распараллеленности операций
- •2. Использование динамической библиотеки. Экспорт функций из библиотеки. Загрузка и выгрузка dll
- •Билет №17
- •1. Синтез последовательно параллельного плана
- •2. Динамическая компоновка. Библиотеки dll. Создание динамической библиотеки
- •Билет №18
- •1. Модель разнородной распределенной системы
- •2. Управление временем жизни компонента. Подсчет ссылок
- •Билет №19
- •1. Сведение планирования к задаче целочисленного линейного программирования
- •2. Запрос интерфейса. Интерфейс iUnknown. Реализация интерфейса
- •Билет №20
- •1. Задача минимизации ресурсов при заданном времени реализации плана
- •2. Таблица виртуальных функций
- •Билет №21
- •1. Целочисленное линейное программирование. Пример. Целевая функция. Система ограничений
- •Многошаговое планирование на базе asap
- •Билет №22
- •1. Планирование выполнения графа задач на узлах распределенной системы с учетом обмена данными
- •2. Теория интерфейсов
- •Неизменность интерфейсов
- •Билет №23
- •1. Граф задач. Назначение задач на процессоры. Обмен данными. План решения задач на каждом процессоре. Планирование выполнения графа задач на узлах распределенной системы с учетом обмена данными
- •Планирование графа задач
- •2. Языки и инструменты программирования распределенной обработки данных.
- •Билет №24
- •1. Стратегии планирования на графе задач. Планирование графа задач
- •2. Процессы и потоки. Многопоточные приложения. Модель многопоточных приложений
- •Билет №25
- •1. Стратегия планирования «Наиболее ранняя задача первая» (Earliest Task First - etf). Стратегия планирования «Наиболее ранняя задача первая» (Earliest Task First - etf)
- •2. Инкапсуляция. Полиморфизм. Виртуальные функции. Чисто абстрактные базовые классы. Множественное наследование. Инкапсуляция.
- •Полиморфизм и виртуальные функции
- •Чисто абстрактные базовые классы
- •Множественное наследование классов. Компоненты
- •Типы операций:
- •Билет №26
- •1. Стратегия планирования «Зануление дуг» (Edge Zeroing - ez). Стратегия планирования «Зануление дуг» (Edge Zeroing - ez)
- •2. Преимущество использования компонентов. Требования к компонентам. Преимущества использования компонентов
- •Требования к компонентам
- •Билет №27
- •2. Модель компонентных объектов com.
- •Билет №28
- •1. Стратегия планирования «Управление мобильностью» (Mobility Directed - md). Стратегия планирования «Управление мобильностью» (Mobility Directed - md)
- •2. Интерфейс передачи сообщений (Message Passing Interface - mpi). Интерфейс передачи сообщений mpi
- •Билет №29
- •1. Граф взаимодействия задач. Граф разнородной сети. Планирование решения задач в разнородной распределенной системе
- •Постановка проблемы
- •2 . Интерфейс OpenMp. Интерфейс OpenMp
- •Билет №30
- •Постановка проблемы
- •Алгоритм а* оптимального назначения задач на процессоры
- •2. Технологический стандарт написания распределённых приложений corba. Технологический стандарт corba
Чисто абстрактные базовые классы
Часто необходимо, чтобы базовый класс представлял лишь интерфейс для производных классов, наследующих базовый. Не ставится цель или не имеет смысла создавать объекты базового класса. Это осуществляется с помощью чисто абстрактных классов, содержащих объявления чисто виртуальных функций.
В начале объявления чисто виртуальной функции ставится спецификатор virtual, а за функцией следует присваивание нуля =0 (это знак спецификатора чистоты - pure specifier). Реализация чисто виртуальных функций выполняется в классах, наследующих абстрактный базовый класс. При попытке создать объект абстрактного класса, компилятор предотвращает операцию создания.
Пример.
// Чисто абстрактные базовые классы - интерфейсы
class IType_1 { public: virtual void __stdcall operT1(int, int, int*) = 0; };
class IType_2 { public: virtual void __stdcall operT2(int, int, int*) = 0; };
Любой компилятор, поддерживающий разработку для Win32, поддерживает и это ключевое слово __stdcall. Функция, помеченная как __stdcall, использует соглашение о вызове языка Pascal. Такая функция выбирает параметры из стека перед возвратом в вызывающую процедуру. В соответствии же с обычным соглашением о вызове С/С++ стек очищает вызывающая процедура, а не вызываемая.
Множественное наследование классов. Компоненты
Р
еализация
чисто абстрактных базовых классов
выполняется классом объектов-компонентов,
наследующим базовые классы:
// Класс объектов (компонентов), реализующих интерфейсы
class COMP : public IType_1, public IType_2 {
public:
// Реализация интерфейса IType_1
virtual void __stdcall operT1(int a, int b, int* pr) {
*pr = a + b;
}
// Реализация интерфейса IType_2
virtual void __stdcall operT2(int c, int d, int* ps) {
*ps = c * d;
}
};
При множественном наследовании, одновременно наследуются два и более базовых класса. Функцией main создает и поддерживает жизненный цикл компонента, реализованного классом COMP. Она представляет также клиент компонента COMP, реализующий алгоритм, изображенный на рис.2.
void main() { //Клиент
int a=1, b=2, c=3, q, r, u, v, w, x, y, z;
COMP* pC = new COMP;
// Получить указатель IType_1
IType_1* pIType_1 = pC;
// Получить указатель IType_2
IType_2* pIType_2 = pC;
p
IType_1->operT1(b,c,&u);
pIType_2->operT2(a,u,&v);
pIType_1->operT1(a,c,&w);
pIType_2->operT2(b,w,&r);
pIType_1->operT1(v,r,&x);
pIType_1->operT1(a,b,&z);
pIType_2->operT2(c,z,&q);
pIType_1->operT1(x,q,&y);
delete pC;
}
Приведенный пример реализации клиента и сервера на С++ дает лишь начальное представление о компонентах. Он пока не удовлетворяет всем требованиям модели COM.
Задача - Привести пример плана, построенного в соответствии со стратегией ALAP.
Тип – планирование на достижимость.
Исходные данные: 1) Граф непосредственного предшествования операций.
Результирующие данные:
Шаги управления.
Распределение операций по шагам управления
Число процессоров каждого типа.
Описание алгоритма:
Планирование выполняется в цикле, начиная с последнего шага и кончая первым шагом.
Алгоритм начинает работу с введения последнего шага управления и размещения на нем операций, не имеющих операций-последователей.
Алгоритм завершает работу в случае назначения всех операций на шаги управления.
Для каждого шага управления выполняются следующие действия по планированию:
з
множества всех операций выбираются не спланированные операции.
Для каждой из них проверяется, все ли операции-последователи спланированы на последующих шагах управления.
Если да, то операция включается в текущий шаг, в противном случае остается не спланированной.
Граф по которому планируем: