- Цели и задачи дисциплины
- Целью дисциплины является ознакомление студентов с основами многопоточного программирования. В задачи входит изучение принципов и освоение на практике инструментов многопоточного программирования.
- Краткое содержание дисциплины
- Процессы и нити с точки зрения операционной системы. Достоинства и недостатки использования нитей. Модели параллельного программирования: автономные процессы, IPC, процессы с общей памятью, многопоточные программы, событийно-ориентированные. Ускорение, закон Амдала, следствия из него, закон Густафсона. Модели реализации многопоточности: зелёные нити, cистемные нити, гибридные нити. Жизненный цикл нити. Многопоточное программирование с использованием fork() и IPC (signal, pipe, socket, message queue, shared memory, message passing). Синхронизация. Программные способы решения проблемы критической секции: алгоритм Деккера, алгоритм Петерсона, алгоритм Eisenberg & McGuire, алгоритм Лэм-порта и булочной. Аппаратные способы решения проблемы критической секции. Семафоры, мониторы, мьютексы, условные переменные и их реализация. Отладка. Ошибки типа deadlock, livelock, starvation и алгоритмы их обнаружения. Отладка многопоточных программ. Многопоточное программирование с помощью OpenMP.
- Компетенции обучающегося, формируемые в результате освоения дисциплины
- Выпускник должен обладать:
- ПК-2 Способен к проектированию архитектуры программного обеспечения с учетом функциональных и нефункциональных требований
- Образование
- Учебный план 09.03.01, 2024, (4.5), Информатика и вычислительная техника
- Технологии параллельной обработки данных