POSIX Threads МО ВВС ИВМ и МГ СО РАН Городничев Максим Александрович.

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



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

Многопоточное программирование в OpenMP Киреев Сергей ИВМиМГ.
Многопоточное программирование. Виды параллелизма. Общая память Распределенная память.
POSIX Threads & OpenMP Общая память Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.
Другие примитивы синхронизации Программирование с использованием POSIX thread library.
Программирование многоядерных архитектур (слайды для лекции 2013/04/20) Киреев С.Е., Маркова В.П., Остапкевич М.Б., Перепелкин В.А. МО ВВС ИВМиМГ СО РАН.
Посыпкин М.А. (С) Многопоточное программирование.
Разработка библиотеки нитей POSIX реального времени Магистерская диссертация Студент: Фёдоров Александр, 418 гр. Научный руководитель: Гилязов С.С.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Томский политехнический университет.
Процессор П1П2П3П4П2П1 Контроллер Завершение операции ввода-вывода Вызов операции ввода-вывода Операция ввода-вывода Синхронное выполнение операции ввода-вывода.
Операционные системы семейства Unix. UNIX группа переносимых, многозадачных и многопользовательских операционных систем.
Блокировки чтения-записи Введение Получение и сброс блокировки чтения-записи Атрибуты блокировки чтения-записи Реализация Отмена выполнения потоков Пример.
Создание и завершение нитей Программирование с использованием POSIX thread library Иртегов Д.В. Учебное пособие подготовлено по заказу и при.
О ПРЕДЕЛЕНИЕ. Операционная система, сокр. ОС (англ. operating system, OS ) комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают.
Разработка параллельных приложений для многоядерных систем С.В. Ковальчук НИИ Наукоемких компьютерных технологий, СПбГУ ИТМО.
Пользователь (User) Приложение (Software) Операционная система (ОС, Operating System, OS) Оборудование (Hardware)
Мутексы Программирование с использованием POSIX thread library.
Лекция 6 Понятие операционных систем Учебные вопросы: 1. Характеристики ОС 2. Свободные и проприетарные ОС.
ПОТОКИ Начальные сведенияПОТОКИ Начальные сведения.
МультиТредовые архитектуры.
Транксрипт:

POSIX Threads МО ВВС ИВМ и МГ СО РАН Городничев Максим Александрович

Что такое POSIX Threads Threads = поток = нить POSIX = Portable Operating System Interface for UNIX = Интерфейс переносимой операционной системы UNIX набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой.

Многопоточное программирование Используется для создания параллельных программ для систем с общей памятью Процессор Ядро Процессор Ядро Процессор Ядро Процессор Ядро Оперативная память (с) Киреев С.E.

Процессы и потоки Процесс – это среда выполнения задачи (программы). Процесс создаётся ОС и содержит информацию о программных ресурсах и текущем состоянии выполнения программы. (с) Киреев С.E.

Процессы и потоки Поток – это «облегченный процесс». Создается в рамках процесса, Имеет свой поток управления, Разделяет ресурсы процесса-родителя с другими потоками, Погибает, если погибает родительский процесс. (с) Киреев С.E.

Зачем использовать несколько процессов (потоков) в одном приложении распределение работы между процессорами (ядрами) в мультипроцессорной системе одновременное выполнение операций ввода- вывода с использованием центрального процессора для решения других частей задачи асинхронная обработка событий выполнение задач в соответствии с приоритетами

Преимущества набора потоков вместо набора процессов Затраты на создание и управление потоками в операционной системе гораздо ниже затрат на процессы Все потоки в пределах одного процесса разделяют одно адресное пространство. Взаимодействие между потоками реализуется проще, чем между процессами.

POSIX Threads API Управление потоками Мьютексы Условные переменные

Умножение вектора на вектор (управление потоками и мьютексы) #include int globalRes = 0; int v1[100], v2[100]; int ids[4] = {0,1,2,3}; pthread_t thrs[4]; pthread_mutex_t mutex; void* prod(void* me) { int offset = *((int*)me); offset *= 25; int res = 0; for(int i = offset; i

Ошибочная передача параметров int t; pthread_t thrs[NUM_THREADS]; for(t=0; t

Основные виды ошибок синхронизации: Race Condition – состояние гонок –Неупорядоченное чтение-запись или запись-запись общей переменной несколькими потоками – результат недетерминирован Deadlock – взаимная блокировка –Все потоки ожидают наступления событий, которые никогда не наступят

Завершение потока Возврат из функции потока Вызов функции pthread_exit() из потока Вызов pthread_cancel() другим потоком Завершение всего процесса через exec(), exit(), выход из main() через return.

Условные переменные ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ pthread_mutex_t mutex; pthread_cond_t cond; int counter = 0; ПОТОК НОМЕР 1 pthread_mutex_lock(&mutex); if(counter!=criticalValue) pthread_cond_wait(&cond, &mutex); processCriticalValue(); pthread_mutex_unlock(); ПОТОК НОМЕР 2 do {... pthread_mutex_lock(&mutex); doSomethingWith(&counter); if(counter==criticalValue) pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex);... }while(...);

Понятие thread-safeness («потокобезопасность») Код называется потокобезопасным, если использование его несколькими потоками без взаимного исключения корректно. В разработке многопоточных приложений важно быть уверенным в том, что используются потокобезопасные библиотеки.

Компиляция программ, использующих POSIX Threads API gcc filename.c -lpthread

Размер стека: обратить внимание Размер стека потока по умолчанию зависит от реализации POSIX Threads API и должен быть настроен по потребностям приложения с помощью функций: pthread_attr_getstacksize (attr, stacksize) pthread_attr_setstacksize (attr, stacksize) pthread_attr_getstackaddr (attr, stackaddr) pthread_attr_setstackaddr (attr, stackaddr)

Источники дополнительных сведений POSIX Threads Programming tutorial International Organization for Standardization, Geneva. Information technology --- Portable Operating System Interface (POSIX) --- Part 1: System Application Program Interface (API) [C Language], December The Open Group Base Specifications Issue 6 IEEE Std , 2004 Edition. Follow the links. Потоки в UNIX. Лабораторная работа Manual pages. В командной строке UNIX набрать: man.

Вопросы?