Многопоточное программирование Киреев С. Отдел МО ВВС ИВМиМГ.

Презентация:



Advertisements
Похожие презентации
POSIX Threads. Общая модель Программа Общая память Поток 1 CPU Поток 2 Поток N Потоки – наборы инструкций, исполняющиеся на CPU. Все потоки одной программы.
Advertisements

POSIX Threads МО ВВС ИВМ и МГ СО РАН Городничев Максим Александрович.
Многопоточное программирование в OpenMP Киреев Сергей ИВМиМГ.
6. Средства синхронизации и взаимодействия процессов 6.1. Проблема синхронизации Процессам Процессам часто нужно взаимодействовать друг с другом, например,
Разработка параллельных приложений для многоядерных систем С.В. Ковальчук НИИ Наукоемких компьютерных технологий, СПбГУ ИТМО.
Программирование многоядерных архитектур (слайды для лекции 2013/04/20) Киреев С.Е., Маркова В.П., Остапкевич М.Б., Перепелкин В.А. МО ВВС ИВМиМГ СО РАН.
Выполнили: Мартышкин А. И. Кутузов В. В., Трояшкин П. В., Руководитель проекта – Мартышкин А. И., аспирант, ассистент кафедры ВМиС ПГТА.
Учебный курс Операционные среды, системы и оболочки Лекция 5 Лекции читает доктор технических наук, профессор Назаров Станислав Викторович.
Управление процессами Синхронизация процессов и потоков.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 3 Томский политехнический.
Разработка библиотеки нитей POSIX реального времени Магистерская диссертация Студент: Фёдоров Александр, 418 гр. Научный руководитель: Гилязов С.С.
Процессы и потоки. Процессы В общем представлении, процесс - это программа, выполняющаяся в оперативной памяти компьютера. Реально, все гораздо сложней.
Лекция 15 Организация параллельных взаимодействующих вычислений.
Дисциплина: Операционные системы § 7. Организация памяти компьютера План: 1.Физическая память компьютера. 2.Логическая память компьютера. 3.Функции системы.
МультиТредовые архитектуры.
Лекция 6 Понятие операционных систем Учебные вопросы: 1. Характеристики ОС 2. Свободные и проприетарные ОС.
Многопоточное программирование Java Advanced. 2Georgiy Korneev Краткое содержание 1.Введение 2.Классические задачи многопоточного программирования 3.Атомарные.
Встроенные Системы Часть 9. ОС Реального Времени Кафедра Информатики, мат-мех СПбГУ Copyright © 2004 Victor Vengerov
Многопоточное программирование Синхронизация потоков Лекция 11.
POSIX Threads & OpenMP Общая память Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.
Транксрипт:

Многопоточное программирование Киреев С. Отдел МО ВВС ИВМиМГ

Процессы и потоки Процесс Адресное пространство Глобальные данные Куча Потоки Код Много статей на английском: l /2/1 Internet Parallel Computing Archive Много электронных учебников: ucation/how_much100/ Сборка инфы по архитектуре: Useful documents ftp:// Стек Код Много документации по программированию и т.п Есть кой-чего про ассемблер,архитектуру l Энциклопедия по всему подряд, включая общую информацию о микропроцессорах ence/en/wikipedia/x/x8/x86.html Книги по математике Неготовый сайт по ASM P4 Форум по процессорам AMD-INTEL Код Parallel Programming Systems: COPS, Enterprise,... Fortran reference rm/dflrm.htm#book-toc Compaq C Compiler Programmer's Guide ftp://ftp.compaq.com/pub/products/C- CXX/linux/compaq_c/docs/ccc/Programm ers_Guide/TITLE.HTM Вообще по Альфе много чего: ftp://ftp.compaq.com/pub/products Научная литература в Интернет CPU Память CPU Память

Процессы и потоки Преимущества потоков: Быстрое переключение между потоками Простая организация взаимодействия – общая память Недостатки потоков: Некорректное использование данных одним потоком отражается на всех других Необходимость в синхронизации при доступе к общим данным Используемые библиотеки должны поддерживать многопоточность

Разработка многопоточной программы Потоки: Решают задачу над общими данными Взаимодействуют через общую память Упорядочивают взаимодействие путем синхронизации Ключ к созданию корректной параллельной программы – правильная синхронизация процессов и потоков.

Средства создания многопоточных программ Библиотеки потоков –Posix Threads –Windows Threads –… OpenMP Распараллеливающие компиляторы

Разработка многопоточной программы (WinAPI, Pthreads) Все потоки описываются в виде отдельных функций Первичный поток выполняет функцию main Новые потоки могут запускаться выполняющимися потоками

Управление потоками Создание потока Завершение потока Приостановка потока Возобновление потока Переключение между потоками Не завершайте поток вручную, пусть завершится функция потока.

Способы передачи данных между потоками Передача числа через параметр функции потока Передача указателя на объект через параметр функции потока Работа с глобальными переменными

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

Средства синхронизации потоков Windows ThreadsPosix Threads Interlocked-функции Критические секции Мьютексы СобытияУсловные переменные Семафоры

Средства синхронизации потоков в Windows В пользовательском режиме: Interlocked-функции Критические секции С использованием объектов ядра: Процессы, потоки События Семафоры Мьютексы Таймеры

Interlocked-функции Функции атомарного доступа к переменным: Присваивание целого числа Присваивание указателя Условное присваивание целого числа Условное присваивание указателя Прибавление целого числа Инкремент целого числа Декремент целого числа

Критические секции Используются для взаимоисключающего доступа к ресурсу Обеспечивают атомарное исполнение участка кода Операции: –Вход в критическую секцию (ожидание) –Выход из критической секции В начале ожидания используют спин- блокировку При длительном ожидании используют мьютекс

Объекты ядра Объект может быть «занят» или «свободен» Операции: –Создание объекта ядра –Получение доступа к существующему объекту ядра –Удаление объекта ядра –…

Синхронизация с помощью объектов ядра Синхронизация осуществляется с помощью wait-функций, ожидающих освобождения одного или нескольких объектов: –WaitForSingleObject –WaitForMultipleObjects –…

События Используются для уведомления потоков о некотором событии Операции –Перевести в свободное состояние –Перевести в занятое состояние –Ждать освобождения (wait-функция) Типы событий –С автосбросом: просыпается 1 ожидающий поток –Со сбросом вручную: просыпаются все ожидающие потоки

Семафоры Используются для учета некоторого числа ресурсов Содержат счетчик доступных ресурсов (i=0…max) Операции –Занять ресурс: i=i-1 (wait-функция) –Освободить ресурс: i=i+1

Мьютексы Используются для взаимоисключающего доступа к ресурсу Операции: –Занять мьютекс (wait-функция) –Освободить мьютекс

Таймеры Используются для уведомления о наступлении определенного времени Операции –Установить таймер –Ждать срабатывания таймера –Сбросить таймер