РуЛиб - онлайн библиотека > Богачёв Кирилл > Учебники и пособия ВУЗов > Основы параллельного программирования. Учебное пособие

Читаем онлайн «Основы параллельного программирования. Учебное пособие»

стр.
.
.
К. Ю. Богачёв
ОСНОВЫ
параллельного
программирования
4-е издание, электронное
Москва
Лаборатория знаний
2020
УДК 004.65
ББК 32.073
Б73
Б73
Богачёв К. Ю.
Основы параллельного программирования : учебное пособие / К. Ю. Богачёв. — 4-е изд., электрон. — М. : Лаборатория знаний, 2020. — 345 с. — Систем. требования: Adobe
Reader XI ; экран 10".— Загл. с титул. экрана. — Текст :
электронный.
ISBN 978-5-00101-758-5
Данная книга представляет собой введение в методы программирования для параллельных ЭВМ.
Основной ее целью является научить читателя самостоятельно
разрабатывать максимально эффективные программы для таких
компьютеров.
Вопросы распараллеливания конкретных алгоритмов рассмотрены на многочисленных примерах программ на языке С. В основу
книги положен курс лекций для студентов механико-математического факультета МГУ им. М. В. Ломоносова.
Для студентов, аспирантов, научных работников, программистов
и всех, кто хочет научиться разрабатывать программы для параллельных ЭВМ.
УДК 004.65
ББК 32.073
Деривативное издание на основе печатного аналога: Основы
параллельного программирования : учебное пособие / К. Ю. Богачёв. — 2-е изд. — М. : БИНОМ. Лаборатория знаний, 2013. — 342 с. :
ил. — ISBN 978-5-9963-1616-8.
В соответствии со ст. 1299 и 1301 ГК РФ при устранении
ограничений, установленных техническими средствами защиты
авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации
ISBN 978-5-00101-758-5
c Лаборатория знаний, 2015

Оглавление
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Порядок чтения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
9
Глава 1. Для нетерпеливого читателя . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1. Последовательная программа . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Ускорение работы за счет параллелизма . . . . . . . . . . . . .
1.3. Параллельная программа, использующая процессы .
1.4. Параллельная программа, использующая задачи . . . .
1.5. Параллельная программа, использующая MPI . . . . . .
10
10
12
13
18
21
Глава 2. Пути повышения производительности процессоров . . .
2.1. CISC- и RISC-процессоры . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Основные черты RISC-архитектуры . . . . . . . . . . . . . . . . .
2.3. Конвейеризация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4. Кэш-память . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Многопроцессорные архитектуры . . . . . . . . . . . . . . . . . . . .
2.5.1. Основные архитектуры . . . . . . . . . . . . . . . . . . . . . .
2.5.2. Комбинированные архитектуры . . . . . . . . . . . . .
2.5.3. Обанкротившиеся архитектуры . . . . . . . . . . . . . .
2.6. Поддержка многозадачности и многопроцессорности
2.7. Использование параллелизма процессора для повышения эффективности программ . . . . . . . . . . . . . . . . . . . . . . .
24
24
25
26
34
39
39
40
43
44
45
Глава 3. Пути повышения производительности оперативной памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
Глава 4. Организация данных во внешней памяти . . . . . . . . . . . . .
64
4
Оглавление
Глава 5. Основные положения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1. Основные определения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Виды ресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3. Типы взаимодействия процессов . . . . . . . . . . . . . . . . . . . . .
5.4. Состояния процесса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
66
72
73
77
Глава 6. Стандарты на операционные системы UNIX . . . . . . . . . .
6.1. Стандарт BSD 4.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Стандарт UNIX System V Release 4 . . . . . . . . . . . . . . . . . .
6.3. Стандарт POSIX 1003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Стандарт UNIX X/Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
79
79
80
80
Глава 7. Управление процессами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1. Функция fork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Функции execl, execv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. Функция waitpid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4. Функция kill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.5. Функция signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
81
84
84
87
88
Глава 8. Синхронизация и взаимодействие процессов . . . . . . . . . .
8.1. Разделяемая память . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1. Функция shmget . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.2. Функция shmat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.3. Функция shmctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2. Семафоры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.1. Функция semget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.2. Функция semop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.3. Функция semctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.4. Пример использования семафоров и разделяемой памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3. События . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4. Очереди сообщений (почтовые ящики) . . . . . . . . . . . . . .
8.4.1. Функция msgget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.2. Функция msgsnd . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.3. Функция msgrcv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.4. Функция msgctl . . . . . . . . . . . . .
стр.