В. Ю. Арьков

Параллельные потоки Windows. Лабораторный практикум


Скачать книгу

стеме Ridero

      Введение

      Большинство современных процессоров в настольных компьютерах и мобильных устройствах – многоядерные. Чтобы эффективно использовать такие вычислительные ресурсы, необходимо составлять параллельные программы. Для этого можно задействовать параллельные потоки либо параллельные процессы.

      В данной работе рассматривается технология параллельного программирования потоков Microsoft Windows встроенными средствами, без специальных библиотек. Для составления и компиляции программ на Си используется бесплатная интегрированная среда разработки Microsoft Visual Studio Community Edition.

      Общие теоретические сведения об организации параллельных вычислений можно найти в соответствующей литературе [1—6]. В данной работе мы рассматриваем только основы организации параллельных потоков.

      1. Общие сведения о работе

      Целью работы является изучение технологии программирования параллельных потоков Microsoft Windows.

      Основные этапы выполнения работы:

      – Процессы и потоки

      – Процессоры и ядра

      – Компилятор

      – Параллельные потоки

      – Состояние процесса

      – Время выполнения

      – Ускорение и эффективность

      – Привязка задач к ядрам

      – «Гонка» за доступ к данным

      – Критическая секция

      По результатам выполнения работы оформляется отчёт.

      1.1. Составление и оформление отчёта

      Отчёт оформляется в виде рабочей книги Microsoft Excel.

      Состав отчёта:

      – Титульный лист

      – Оглавление

      – Остальные листы

      Для удобства навигации вкладки листов нумеруем.

      В оглавлении делаем ссылку на каждый лист.

      Подробнее оформление отчёта в пакете Excel описано в работе [7].

      Задание. Создайте файл отчёта и оформите титульный лист и оглавление.

      1.2. Ключевые определения

      Перед началом выполнения работы необходимо определиться с основными терминами.

      Задание. Выясните, что означают перечисленные термины:

      – прикладная программа (application);

      – алгоритм программы

      – исходный текст программы;

      – компилятор;

      – вычислительный процесс (process);

      – поток исполнения / выполнения (thread);

      – многопоточность;

      – центральный процессор (CPU);

      – ядро микропроцессора (Core);

      – HyperThreading;

      – виртуальный процессор.

      Заметим, что независимо от физической конфигурации компьютера, операционная система представляет все вычислительные устройства как виртуальные процессоры.

      Задание. Запустите Task Manager (Диспетчер задач) и определите следующие параметры:

      – число виртуальных процессоров;

      – размер доступной оперативной памяти;

      – число выполняемых процессов;

      – число потоков – общее и в каждом процессе;

      – уровень загрузки процессора в целом и каждого виртуального процессора.

      2. Организация вычислительных экспериментов

      2.1. Конфигурация компьютера

      Возможности улучшения вычислительной производительности компьютера ограничены его конфигурацией. Поэтому нам предстоит познакомиться со своим компьютером.

      Задание. Ознакомьтесь с конфигурацией компьютера и параметрами системы с помощью следующих средств:

      – свойства компьютера;

      – диспетчер устройств;

      – параметр окружения NUMBER OF PROCESSORS;

      – сайт производителя процессора;

      – диспетчер задач.

      Опишите в отчёте конфигурацию и состояние системы:

      – процессор;

      – разрядность процессора;

      – число ядер;

      – поддержка HyperThreading;

      – версия операционной системы;

      – разрядность операционной системы;

      – число выполняемых потоков на ядро;

      – число виртуальных процессоров;

      – объём занятой оперативной памяти;

      – объём виртуальной памяти

      – наличие подкачки.

      2.2. Среда разработки

      Данная работа выполняется с использованием среды разработки Microsoft Visual Studio. Далее рассматриваются примеры программ на языке программирования С, хотя компилятор поддерживает