- •1. Анализ современных тенденций развития вычислительных систем. Основные области и особенности применения многопроцессорных вс.
- •2. Классификация многопроцессорных систем. Вс с разделяемой общей памятью. Типовые схемы коммуникационных структур. Примеры.
- •3. Классификация многопроцессорных систем. Вс с разделяемой общей памятью. Машины smp иNuma. Примеры.
- •4. Классификация многопроцессорных систем. Вс с распределенной областью памяти. Примеры.
- •5. Классификация многопроцессорных систем. Матричные системы.
- •6. Классификация многопроцессорных систем. Системы с нетрадиционной структурой. Вс, управляемые потоком данных.
- •7. Классификация многопроцессорных систем. Системы с нетрадиционной структурой. Систолические машины.
- •8. Обобщенная архитектура параллельных систем.
- •9. Использование традиционных микропроцессоров для построения многопроцессорных систем. Микропроцессоры с нетрадиционной архитектурой. Архитектура транспьютера т-805.
- •10. Программная модель parix: статические и динамические возможности. Система индексации процессоров в малтикластереMc-3de. Идентификация процессоров
- •11. Средства и правила создания параллельных программ на одном процессоре. Работа встроенного планировщика.
- •12. Программная модель parix: статические и динамические возможности.
- •13. Основные средства взаимодействия процессов в среде parix. Синхронное и асинхронное взаимодействие процессов. Каналы
- •Int BreakLink (LinkCb_t *Link)
- •Int SendLink (LinkCb_t *Link, void *Buf, int Size), int RecvLink (LinkCb_t *Link, void *Buf, int Size)
- •14. Средства и правила создания параллельных программ на многопроцессорной структуре в средеParix. Пример программы.
- •15. Физические, виртуальные и локальные линки. Средства и правила создания линков между произвольными процессами в среде parix. Виртуальные и библиотечные топологии.
- •Int BreakLink (LinkCb_t *Link)
- •Int SendLink (LinkCb_t *Link, void *Buf, int Size), int RecvLink (LinkCb_t *Link, void *Buf, int Size)
- •Int MakeXxx (int RequestId,
- •Int FreeTop (int TopId),
- •Int AddTop_Data (int TopId, void *Data)
- •Void *GetTopData (int TopId, int *Error)
- •16.Принципы и алгоритм работы планировщика процессов в т-805
- •17. Машинные ресурсы. Проблема ограниченности машинных ресурсов. Единицы работы и управления в вычислительных средах.
- •18. Концепция процесса. Понятия алгоритма и процесса. Объективная потребность введения понятия «процесс».
- •19. Основные проблемы параллельного программирования
- •20. Основные направления решения проблем создания программного продукта с параллельной обработкой информации
- •21. Проблемы планирования, диспетчеризации и масштабирования в параллельном программировании
- •22. Краткая характеристика языка оболочки unix. Основные команды работы с файловой системой. Виды файлов
- •23. Многопользовательская защита информации в среде unix. Категории пользователей и атрибуты доступа к файлам
- •24. Управление доступом к файлам
- •25. Порождение процессов на уровне оболочки и их взаимодействие
- •26. Удаленный доступ и особенности работы в среде parix
- •27. Особенности структуры транспьютерного кластера. Проблема масштабирования
- •28. Глобальное планирование в транспьютерном кластере
- •29. Особенности взаимодействия асинхронных процессов. Информационные и логические связи. Основные механизмы взаимодействия процессов
- •30. Понятие синхропримитива. Синхропримитивы низкого уровня
- •31. Системные средства реализации взаимодействия процессов в среде unix
- •32. Взаимодействие процессов через программный канал. Понятие конвейера команд в ос unix
- •33. Именованный программный канал и взаимодействие процессов в unix. Пример
- •34. Типовые задачи взаимодействия асинхронных процессов. Спецификация дисциплины межпроцессного взаимодействия с использованием сетей Петри
- •35. Задача «о читателях и писателях». Требования адекватности спецификации и предметной интерпретации. Задача «о производителе и потребителе»
- •36. Задача «о курильщиках сигарет». Особенности задачи, используемые синхропримитивы.
- •37. Спецификация асинхронных интерфейсов взаимодействия процессов.
Int MakeXxx (int RequestId,
dims . . .,
int xmin, int xmax,
int ymin, int ymax,
int zmin, int zmax),
int FreeXXX (int topId),
XXXData_t * GetXXX_Data(int topId)
MakeXXX создает коммуникационную сеть с соответствующей топологией XXX размерностью dim, которая отображается на подмножество процессоров, описываемое параметрамиxmin, xmax, ymin, ymax, zmin. Только процессоры, имеющие в разделе координаты (x, y, z) такие, чтоxmin <=x <=xmax , ymin <=y <=ymaxиzmin<=z<=zmaxбудут использоваться в этой сети. Сети с топологией XXX (а именно ее каналам) необходимо сопоставить уникальный идентификатор канала, передаваемый через параметрRequestIdи используемый ОС для того, чтобы различать сообщения, передаваемые по каналам разных сетей. Функция возвращает идентификатор сети (топологии). Каждый узел сети имеет каналы, связывающие его с соседними узлами. Количество каналов зависит от вида топологии сети. Для указания каналов используются целые значения от 0 до <число соседних узлов>-1, называемыелогическими каналами. Например, все узлы сети с топологиейкольцоимеют два канала для двух направлений - вперед, назад, которым сопоставлены логические каналы 1 и 0 соответственно. В сети с топологиейкликакаждый узел имеет каналы, связывающие его со всеми остальными узлами сети, - логический каналiпредставляет виртуальный канал, ведущий из узла с номеромnк узлу с номером, получающимся изx инвертированиемi-го бита (x^ (1<<i)).
Функция FreeXXX удаляет сеть, имеющую указанный идентификатор. Функция GetXXX_Data возвращает указатель на дескриптор сети с указанным идентификатором. Дескриптор имеет следующий вид
struct XXXData_t { |
|
char type; |
/* содержит имя топологии вида: XXX_TYPE (например. RING_TYPE) */ |
int status; |
/* указывает статус процессора, характеризующий его отношение к сети, его положение в сети. Например, для конвейера это значения PIPE_HEAD, PIPE_IN и PIPE_TAIL. Если процессор не входит в соответствующую сеть, то он имеет статус XXX_NONE (например.PIPE_NONE). */ |
xxx_t id; |
/* идентифицирует положение процессора в топологии. Например, для конвейера это значение в диапазоне 0 .. <длина_конвейера>-1, причем процессор со статусом PIPE_HEAD имеет id =0 , а процессор со статусом PIPE_TAIL - id = <длина_конвейера>-1 */ |
xxx_t dims; |
/* хранит размерности топологии. Например, для 2D решеткиэто ее ширина и высота */ |
}; |
|
Функции int Send (int TopId, int LogLinkId, void *Data, int Size) int Recv (int TopId, int LogLinkId, void *Data, int Size)
реализуют синхронный обмен сообщениями в сети с топологией, имеющей идентификатор TopId. ПараметрLogLinkIdуказывает, какой логический канал топологии следует использовать для приема/передачи сообщения.
Используя функции int NewTop (int nLinks), int AddTop (int TopId, LinkCB_t *Link),
пользователь может создавать свои собственные топологии сетей виртуальных каналов. Функция NewTop, с вызова которой начинается процедура формирования топологии, создает в памяти вызвавшего ее процессора некоторую внутреннюю таблицу под предполагаемое количество (nLinks) каналов, и возвращает идентификатор топологии. Идентификатор с этого момента представляет вновь образованную топологию. Внутренняя таблица будет хранить указатели на дескрипторы виртуальных каналов топологии. Если количество созданных каналов превыситnLinks, то ОС увеличит размер таблицы на некоторую величину.
Функция AddTop добавляет новый виртуальный каналLinkк топологии TopId и возвращает идентификатор представляющего его логического канала (LogLinkId). С этого момента логический каналLinkIdтопологииTopIdможно использовать для обмена сообщениями.
Функция LinkCB_t *GetLinkCB (int TopId, int LogLinkId, int *Error)
позволяет получить указатель на виртуальный канал логического канала LinkIdтопологииTopId. Удалить топологию, её каналы можно с помощью функции