- •Билет №1
- •1.Составные части и свойства распределенной системы
- •2. Удаленный сервер
- •Билет №2
- •1. Параллелизм в распределенной системе
- •2. Реализация локального сервера
- •Билет №3
- •1. Закон Амдала
- •2. Заместитель/заглушка. Компилятор midl
- •Билет №4
- •1. Ускорение решения задачи в распределенной параллельной системе
- •2. Язык idl
- •Билет №5
- •1. Последовательные операции. Параллельные операции. Число процессоров.
- •2. Назначение данных на узлы распределенной системы. Модель назначения объектов на узлы. Сокращение трафика в каналах передачи данных.
- •Билет №6
- •1. Планирование параллельной распределенной обработки данных.
- •2. Модель назначения объектов на узлы. Частоты запросов к объектам. Длины объектов. Производительность узлов. Производительность каналов передачи данных.
- •Билет №7
- •1. Параллелизм в пространстве и во времени (конвейерный параллелизм)
- •2. Среднее время обработки одного запроса. Минимизация времени
- •Многошаговое планирование на базе asap
- •1 31 6 Типы операций:
- •Билет №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
- •AБилет №15
- •1. Граф предшествования и граф распараллеленности операций
- •2. Фабрика класса
- •Билет №16
- •1. Свертывание графа распараллеленности операций
- •2. Использование динамической библиотеки. Экспорт функций из библиотеки. Загрузка и выгрузка dll
- •Билет №17
- •1. Синтез последовательно параллельного плана
- •2. Динамическая компоновка. Библиотеки dll. Создание динамической библиотеки
- •Билет №18
- •1. Модель разнородной распределенной системы
- •2. Управление временем жизни компонента. Подсчет ссылок
- •Билет №19
- •1. Сведение планирования к задаче целочисленного линейного программирования
- •2. Запрос интерфейса. Интерфейс iUnknown. Реализация интерфейса
- •1 31 6 Типы операций:
- •Билет №20
- •1. Задача минимизации ресурсов при заданном времени реализации плана
- •2. Таблица виртуальных функций
- •Билет №21
- •1. Целочисленное линейное программирование. Пример. Целевая функция. Система ограничений
- •Многошаговое планирование на базе asap
- •Билет №22
- •1. Планирование выполнения графа задач на узлах распределенной системы с учетом обмена данными
- •2. Теория интерфейсов
- •Неизменность интерфейсов
- •Билет №23
- •1. Граф задач. Назначение задач на процессоры. Обмен данными. План решения задач на каждом процессоре. Планирование выполнения графа задач на узлах распределенной системы с учетом обмена данными
- •Планирование графа задач
- •2. Языки и инструменты программирования распределенной обработки данных.
- •1 31 6 Типы операций:
- •Билет №24
- •1. Стратегии планирования на графе задач. Планирование графа задач
- •2. Процессы и потоки. Многопоточные приложения. Модель многопоточных приложений
- •Билет №25
- •1. Стратегия планирования «Наиболее ранняя задача первая» (Earliest Task First - etf). Стратегия планирования «Наиболее ранняя задача первая» (Earliest Task First - etf)
- •2 . Инкапсуляция. Полиморфизм. Виртуальные функции. Чисто абстрактные базовые классы. Множественное наследование. Инкапсуляция.
- •Полиморфизм и виртуальные функции
- •Чисто абстрактные базовые классы
- •Множественное наследование классов. Компоненты
- •1 31 6 Типы операций:
- •Билет №26
- •1. Стратегия планирования «Зануление дуг» (Edge Zeroing - ez). Стратегия планирования «Зануление дуг» (Edge Zeroing - ez)
- •2. Преимущество использования компонентов. Требования к компонентам. Преимущества использования компонентов
- •Требования к компонентам
- •Билет №27
- •2. Модель компонентных объектов com.
- •1 31 6 Типы операций:
- •Билет №28
- •1. Стратегия планирования «Управление мобильностью» (Mobility Directed - md). Стратегия планирования «Управление мобильностью» (Mobility Directed - md)
- •2. Интерфейс передачи сообщений (Message Passing Interface - mpi). Интерфейс передачи сообщений mpi
- •Постановка проблемы
- •Билет №29
- •1. Граф взаимодействия задач. Граф разнородной сети. Планирование решения задач в разнородной распределенной системе
- •2. Интерфейс OpenMp. Интерфейс OpenMp
- •Билет №30
- •Постановка проблемы
- •Алгоритм а* оптимального назначения задач на процессоры
- •2. Технологический стандарт написания распределённых приложений corba. Технологический стандарт corba
Билет №6
1. Планирование параллельной распределенной обработки данных.
2. Модель назначения объектов на узлы. Частоты запросов к объектам. Длины объектов. Производительность узлов. Производительность каналов передачи данных.
Модель, которую мы рассмотрим, позволит, с одной стороны, с достаточной степенью точности и, с другой стороны, с достаточной степенью абстрактности сформулировать задачу оптимизации назначения объектов на узлы.
Пусть N={1,…,n} — множество узлов, M={1,…,m} — множество объектов. Длины объектов опишем множеством L={l1,…,lm}. Эти длины определяют размеры памяти, необходимые для размещения объектов на узлах.
Пусть Q={qij|iN, jM} — множество запросов к объектам, принимаемых или генерируемых на узлах. Частоты появления запросов опишем множеством F={fij|iN, jM}, где fij — число запросов qij к объекту j с узла i в течение времени наблюдения Time_Period. Общее число запросов, поступивших за Time_Period, обозначим через (F). В ответ на запрос пересылается либо весь объект длиной lj, либо его часть длиной send(lj).
Узлы распределенной системы характеризуются параметрами. Пусть S={s1,…sn} — множество объемов памяти на узлах. Для того чтобы все объекты могли быть размещены, суммарный объем памяти (S) должен превышать суммарную длину объектов (L). Собственные времена обработки запросов на узлах опишем множеством R={rij|iN, jM}. Величина 1/rij есть число запросов к объекту j, обрабатываемых узлом i за единицу времени. Узлы различной производительности обрабатывают запросы к одному объекту за различное время.
Если запрос к объекту j принят или сгенерирован на узле k, но обрабатывается узлом i, данные об объекте длиной send(lj) составляют часть потока в канале (i,k) передачи данных. От того, на каких узлах размещаются объекты, зависят размеры потоков в каналах передачи данных. Временную задержку передачи единицы данных в канале (i,k) обозначим через cik. Множество C={cik | i,kN} описывает задержки во всех каналах передачи данных. Если узлы i, k не связаны каналом передачи данных, cik=. Производительность канала (i,k) определяется величиной 1/cik.
Распределенная информационно-вычислительная система характеризуется двумя основными временными параметрами: средним временем Trequest обработки одного запроса к объекту и временем Ttotal обработки всех запросов. Каждый из этих параметров складывается из двух составляющих Tprocessing+Twaiting, где Tprocessing — время непосредственной обработки (пересылки) на узле (канале связи); Twaiting — общее время ожидания, обусловленное случайным характером процесса поступления и обработки запросов. Внимание сфокусируем на первой составляющей.
Обозначим через X={xij|xij{0,1}, iN, jM} матрицу назначения объектов на узлы. Если xij=1, объект j размещается на узле i, в противном случае не размещается. Число объектов, размещенных на узле i, определяется выражением
na = , (1)
а емкость памяти, занимаемая объектами на узле i, определяется выражением
Sai= . (2)
Время обработки запроса к объекту j, поступившего с узла i и обрабатываемого узлом k, можно описать с достаточной степенью точности выражением fij * (rkj+cik*lj)*xkj. Поскольку при размещении объектов без репликаций все запросы к объекту j обрабатываются на одном узле, среднее время обработки запроса по всем узлам, всем объектам и всем запросам зависит от матрицы назначения X и оценивается выражением:
Trequest(X)= . (3)
Время Ttotal обработки всех запросов оценим через максимальную временную загрузку всех узлов и каналов. Загрузка узла kN определяется выражением
LoadNodek(X)= , (4)
в то время как максимальная загрузка узла выражением
LoadNodemax(X)= . (5)
Загрузка канала (i,k) оценивается в виде
LoadChannelik(X)= , (6)
в то время как максимальная загрузка канала в виде
LoadChannelmax(X)= . (7)
Тогда время обработки всех запросов определяется выражением
Ttotal(X)= . (8)
Рис. 1. Иллюстративный пример модели назначения объектов на узлы; число узлов n=3, число объектов m=10; время в R и C измерено в миллисекундах; время в векторе загрузки узлов Lnd и матрице загрузки каналов Lch выражено в секундах; значением функции send(lj) является lj; среднее время обработки запроса Trequest=7,3 мс; время обработки всех запросов Ttotal=2,19 с; средняя загрузка узла 74,3%; средняя загрузка канала 51,2%
Назначение объектов на узлы является корректным, если время обработки всех запросов не превышает ширину диапазона времени, на котором измерены частоты появления запросов, другими словами, если выполняется отношение
Ttotal(X) ≤ Time_Period. (9)
Относительная загрузка узлов оценивается как
LoadNdRelk =(LoadNodek(X) / Ttotal(X))*100%, для kN (10)
а относительная загрузка каналов оценивается как
LoadNdRelik=(LoadChannelik (X)/Ttotal(X))*100%, для i,kN (11)
Иллюстративный пример модели назначения объектов на узлы распределенной системы дан на рис. 1. Все компоненты модели представлены векторами и матрицами. Матрица X описывает одно из возможных назначений объектов на узлы и позволяет оценить объем используемой памяти на каждом узле, загрузку всех узлов и каналов, среднее время обработки одного запроса и время обработки всех запросов.
Задача - Дать пример виртуальной функции на языке С++.
Виртуальные функции отделяют интерфейс от реализации в зависимости от типов. Виртуальные функции предоставляют возможность объявлять в базовом классе методы, которые можно определять по-своему в каждом производном классе. Объявление виртуальной функции работает в качестве интерфейса к функциям, определенным в производных классах.
Типы аргументов функции в производном классе не должны отличаться от типов аргументов, объявленных в базовом классе. Небольшие изменения допускаются для типа возвращаемого значения
Спецификация функции в базовом классе как virtual вызываем позднее связывание (так называемое связывание во время выполнения). Если функция виртуальная в базовом классе, она виртуальная также во всех производных классах. Позднее связывание имеет место только при использовании адреса объекта базового класса, в котором функция объявляется.
class Animal
{
public:
char *Title; //кличка животного
Animal(char *t) {Title=t;} //простой конструктор
virtual void speak(void); //чистая виртуальная функция
};
//класс лягушка
class Frog: public Animal
{
public:
Frog(char *Title): Animal(Title) { };
virtual void speak(void) { cout<<Title<<" говорит "<<"'ква-ква'"<<endl; };
};
