Основы многопоточного и распределенного программирования

       

Основы многопоточного и распределенного программирования

Предисловие
Обзор области параллельных вычислений
Суть параллельного программирования
Структуры аппаратного обеспечения

Приложения и стили программирования
Итеративный параллелизм: умножение матриц

Производители и потребители: каналы ОС Unix
Клиенты и серверы: файловые системы
Взаимодействующие равные: распределенное умножение матриц

Обзор программной нотации
Историческая справка



Литература
Упражнения
Процессы и синхронизация
Состояние, действие, история и свойства

Распараллеливание: поиск образца в файле
Синхронизация: поиск максимального элемента массива
Неделимые действия и операторы ожидания

Синхронизация типа "производитель-потребитель"
Обзор аксиоматической семантики
Техника устранения взаимного вмешательства
Свойства безопасности и живучести

Блокировки и барьеры
Критические секции: решения со справедливой стратегией
Барьерная синхронизация
Алгоритмы, параллельные по данным

Основы многопоточного и распределенного программирования

Семафоры
Синтаксис и семантика
Задача об обедающих философах
Распределение ресурсов и планирование

Учебные примеры: библиотека Pthreads
Мониторы
Методы синхронизации
Планирование работы диска: программные структуры
Однопроцессорное ядро
Реализация семафоров в ядре
Реализация мониторов в ядре

Реализация мониторов с помощью семафоров
Удаленный вызов процедур

Основы многопоточного и распределенного программирования

Нотация совместно используемых примитивов
Новые решения задачи о читателях и писателях
Учебные примеры: язык Java

Учебные примеры: язык Ada
Учебные примеры: язык SR
Модели взаимодействия процессов
Управляющий-рабочие (распределенный портфель задач)

Алгоритмы пульсации
Конвейерные алгоритмы

Алгоритмы типа "зонд-эхо"
Алгоритмы рассылки
Алгоритмы передачи маркера
Дублируемые серверы
Реализация языковых механизмов
Асинхронная передача сообщений
Удаленный вызов процедур и рандеву

Синхронное параллельное программирование
Сеточные вычисления

Основы многопоточного и распределенного программирования

Матричные вычисления
Языки, компиляторы, библиотеки и инструментальные средства
Библиотеки параллельного программирования

Распараллеливающие компиляторы
Языки и модели
Инструментальные средства параллельного программирования
Словарь