- •Билет №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
Билет №4
1. Ускорение решения задачи в распределенной параллельной системе
2. Язык idl
Язык IDL (Interface Definition Language) предназначен для определения интерфейсов и поддержки удаленного вызова процедур и маршалинга параметров процедуры.
Синтаксис языка IDL (Interface Definition Language) похож на С и С++. Язык обладает богатыми возможностями описания интерфейсов и данных, используемых клиентом и компонентом.
Давайте рассмотрим пример описания интерфейса на IDL.
import “unknwn.idl”;
// Интерфейс IX
[
object,
uuid(32bb8323-b41b-11cf-a6bb-0080c7b2d682),
helpstring(“IX Interface”),
pointer_default(unique)
]
interface IX : IUnknown {
HRESULT FxStringIn([in, string] char* szIn);
HRESULT FxStringOut([out, string] char** szOut);
};
На С++ соответствующие функции выглядели бы так:
virtual HRESULT __stdcall FxStringIn(char* szIn);
virtual HRESULT __stdcall FxStringOut(char** szOut);
Синтаксис MIDL не очень отличается от синтаксиса С++. Самое очевидное отличие — информация в квадратных скобках []. Перед каждым интерфейсом идет список атрибутов, или заголовок интерфейса. В данном примере заголовок состоит из четырех записей. Ключевое слово object задает, что данный интерфейс является интерфейсом СОМ. Это ключевое слово представляет собой расширение IDL от Microsoft. Второе ключевое слово — uuid — задает IID интерфейса. Третье ключевое слово используется для помещения строки подсказки в библиотеку типа. Библиотеки типа связаны с серверами вне процесса. Четвертое ключевое слово — pointer_default — говорит компилятору MIDL, как работать с указателями, атрибуты которых не заданы явно:
ref — указатели рассматриваются как ссылки. Они всегда будут содержать допустимый адрес памяти и всегда могут быть разыменованы. Они не могут иметь значение NULL. Они указывают на одно и то же место в памяти как до, так и после вызова. Кроме того, внутри функции для них нельзя создавать синонимы (aliases).
unique — эти указатели могут иметь значение NULL. Кроме того, их значение может изменяться при работе функции. Однако внутри функции для них нельзя создавать синонимы.
ptr — эта опция указывает, что по умолчанию указатель эквивалентен указателю С. Указатель может иметь синоним, может иметь значение NULL и может изменяться.
Входные и выходные параметры в IDL. Если параметр помечен как входной in, то MIDL знает, что этот параметр нужно передавать только от клиента компоненту. Ключевое слово out говорит о том, что параметр используется только для возврата данных от компонента клиенту.
HRESULT. IDL требует, чтобы функции интерфейсов, помеченные как object, возвращали HRESULT. Основная причина этого — требование поддержки удаленных серверов.
Ключевое слово import в IDL. Ключевое слово import используется для включения определений из других файлов IDL. unknwn.idl содержит описание на IDL интерфейса IUnknown; import является аналогом команды препроцессора С++ #include, но с помощью import файл можно импортировать сколько угодно раз, не создавая проблем с повторными определениями.
Задача - Дать пример полиморфизма на языке С++
Полиморфизм. В языке С++ полиморфизм трактуется как объявление функции в базовом классе и ее специфическое определение в каждом классе иерархии, наследующей базовый класс. На базе полиморфизма строится еще одна плоскость, отделяющая интерфейс объекта от его реализации. Он поддерживает создание программ, расширяемых не только в период их создания, но также в период использования. Полиморфный тип, определяемый через иерархию классов объектов, – это тип, описываемый посредством виртуальных функций.
Пример полиморфизма в С++. Он строится на иерархии классов духовых инструментов:
// Инструмент
class Instrument { public: virtual void play () { cout << “Instrument :: play” << endl; }};
// Духовые
class Wind : public Instrument { public: void play () { cout << “Wind :: play” << endl; }};
// Мелодия
void tune ( Instrument& i ) { i.play (); }
// Исполнение
void main () {
Wind flute; // Флейта
tune (flute); // Upcasting
}
