
- •Билет №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
Билет №19
1. Сведение планирования к задаче целочисленного линейного программирования
Пусть N={1,…n} - множество планируемых операций.
Бинарное отношение H непосредственного предшествования операций (если (i,j)H, то i непосредственно предшествует j) строится в результате анализа информационных зависимостей между операциями
Отношение H представляется конечным ориентированным графом GH.
Минимальный шаг Si выполнения операции i определяется по плану, генерируемому ASAP.
Максимальный шаг Li выполнения операции i определяется по плану, генерируемому ALAP.
Число используемых в плане процессоров типа k есть bk при k=1,…,TYPES.
Стоимость процессора типа k определяется величиной сk.
Обозначим через xij двоичную переменную, принимающую значение 1 в случае, если операция i выполняется на шаге j, и принимающую значение 0 в случае, если операция i не выполняется на шаге j.
Рассмотрим задачу построения обыкновенного плана, имеющего минимальную стоимость при заданном числе Т шагов управления (time-constrained scheduling). Стоимость выразим суммарной стоимостью используемых планом процессоров всех типов.
Эта задача формулируется в виде следующей задачи целочисленного линейного программирования:
Целевая функция:
Система ограничений:
при
1jT,
1kTYPES,
при
1in,
при
(i,j)H.
Ограничение (1) вытекает из того факта, что на каждом шаге число используемых процессоров типа k не должно превышать число bk имеющихся процессоров этого типа.
Ограничение (2) выражает возможность выполнения любой операции ровно на одном шаге управления (обыкновенное планирование).
Ограничение (3) формализует тот факт, что операция j должна выполняться на шаге с номером большим, чем номер шага, на котором выполняется операция i, в случае, если операция i предшествует операции j.
Для рассмотренного ранее графа предшествования операций и числа шагов управления T=5 планы ASAP и ALAP имеют вид, представленный на рис.1.
Рис. 1. Планы ASAP и ALAP, построенные на 5 шагах управления
Значения величин Si и Li при i=1,…,n определяются следующей таблицей:
Тип процессора |
type1 |
type2 |
||||||
Операция |
1 |
3 |
5 |
6 |
8 |
2 |
4 |
7 |
Si |
1 |
1 |
3 |
1 |
4 |
2 |
2 |
2 |
Li |
2 |
2 |
4 |
3 |
5 |
3 |
3 |
4 |
2. Запрос интерфейса. Интерфейс iUnknown. Реализация интерфейса
Клиент всегда взаимодействует с компонентом через некоторый интерфейс. Даже для запроса интерфейса у компонента клиент использует специальный интерфейс IUnknown. Определение IUnknown, содержащееся в заголовочном файле unknwn.h, входящем в состав Win32 SDK, выглядит так:
interface IUnknown {
virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv) = 0;
virtual ULONG __stdcall AddRef() = 0;
virtual ULONG __stdcall Release() = 0;
}
Поскольку все интерфейсы СОМ наследуют IUnknown, в каждом интерфейсе есть функции QueryInterface, AddRef и Release —первые три функции в vtbl:
interface IType_1 : IUnknown { virtual void __stdcall operT1(int, int, int*) = 0; };
Все интерфейсы СОМ можно полиморфно трактовать как интерфейсы IUnknown. Поскольку все указатели интерфейсов являются также и указателями на IUnknown, клиенту не требуется хранить отдельный указатель на компонент. Клиент работает только с указателями на интерфейсы. Для получения указателя на IUnknown используется вместо оператора new функция
IUnknown* CreateInstance();
Она создает компонент и возвращает указатель на IUnknown
В IUnknown имеется функция с именем QueryInterface. Клиент вызывает ее, чтобы определить, поддерживает ли компонент некоторый интерфейс. QueryInterface возвращает указатель на интерфейс, если компонент его поддерживает; в противном случае возвращает код ошибки. У QueryInterface два параметра:
Virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv);
Первый параметр — идентификатор интерфейса. Второй параметр — адрес, по которому QueryInterface помещает указатель на искомый интерфейс. QueryInterface возвращает HRESULT; это не описатель handle,. это —32-разрядный код результата, записанный в определенном формате. QueryInterface может возвратить либо S_OK, либо E_NOINTERFACE. Клиент не должен прямо сравнивать возвращаемое значение с этими константами; для проверки надо использовать макросы SUCCEEDED или FAILED.
Пример реализация функции QueryInterface:
HRESULT __stdcall COMP::QueryInterface(const IID& iid, void** ppv) {
if (iid == IID_IUnknown) {
*ppv = static_cast<IType_1*>(this);
} else if (iid == IID_IType_1) {
*ppv = static_cast<IType_1*>(this);
} ... else {
*ppv = NULL;
return E_NOINTERFACE;
}
reinterpret_cast<IUnknown*>(*ppv)->AddRef();
return S_OK;
}
Пример использования функции QueryInterface:
void main() {
HRESULT hr;
IUnknown* pIUnknown = CreateInstance();
IType_1* pIType_1 = NULL;
hr = pIUnknown->QueryInterface(IID_IType_1, (void**)&pIType_1);
if (SUCCEEDED(hr)) {
cout<<s_conv("Клиент: IType_1 получен успешно")<<endl;
} else return;
...
}
Задача - Привести пример цепочечного плана
Цепочечное планирование на базе ASAP
Тип – планирование на достижимость.
Исходные данные:
Граф непосредственного предшествования операций.
Времена t(i), iN выполнения операций.
Время tstep шага управления.
Результирующие данные:
Шаги управления.
Распределение операций по шагам управления.
Число процессоров каждого типа.
Граф по которому планируем:
Рис. 4. Цепочечное планирование ASAP; t(1)= t(3)= t(5)= t(6)= t(8)=1; t(2)= t(4)= t(7)=2; tstep=2; общее время решения задачи 6 единиц (при простом планировании 8 единиц)