Параллельное программирование (Язык С/С++) — SynergyCom

Параллельное программирование (Язык С/С++)

Код курса: DEV-028 Продолжительность: 5 дней (40 часов)

 1. Введение

  • Объектная модель Windows. Распределение ресурсов вычислительной системы в ОС Windows.
  • Виды объектов. Диспетчер объектов. Структура объекта исполнительной системы.
  • Понятие дескриптора, создание, использование и уничтожение объекта. Учет пользователей объекта ядра, защита. Совместное использование объектов несколькими процессами. Наследование дескрипторов объектов. Именованные объекты. Дублирование дескрипторов объектов.
  • Виды (способы) организации многозадачности. Объекты исполнительной системы, предназначенные для поддержки многозадачности. Каким образом процесс «владеет» объектами ядра.
  • Многозадачность, основанная на процессах.
  • Создание процесса. Способы порождения дочерних процессов.

2. Межпроцессное взаимодействие (IPC)

  • Способы обмена данными между процессами, выполняющимися на одном компьютере, и по сети (между процессами, выполняющимися на разных компьютерах).
  • Простейшие средства взаимодействия. Пользовательское межпроцессное сообщение.
  • Сообщение WM_COPYDATA. Механизм передачи сообщения WM_COPYDATA. Специфика передачи данных посредством WM_COPYDATA.
  • Отображение файлов на память (file mapping).
  • Способы использования механизма отображения на память. Специфика механизма отображения файлов на память. Преимущества использования.

3. Библиотеки

  • Виды библиотек. Статическая библиотека. Динамическая библиотека (DLL)
  • DLL – стержень компонентной модели ОС Windows. Назначение DLL. Отличия приложения и DLL. Отличия статической библиотеки и DLL. Понятия, связанные с DLL: “подключение” DLL к исполняемому файлу (загрузка), совместное использование DLL несколькими приложениями, выполнение DLL в контексте вызвавшего потока, “отключение” DLL.
  • Виды “связывания” DLL с исполняемым файлом: неявное (во время загрузки), явное (во время выполнения).
  • Составные DLL: функция входа/выхода (DllMain). DEF – файлы.
  • Экспорт данных и функций из DLL.
  • Импорт данных и функций приложением из DLL.

4. Приоритеты процессов и потоков

  • Классы приоритетов процессов. Понятие активного процесса. Изменение класса приоритета процесса.
  • Относительный приоритет потока. Динамическое изменение уровня приоритета потока.
    Поток.
  • Создание потока. Потоковая функция. Завершение потока.
  • Способы «приостановки» выполнения потока. Взаимодействие потоков с разными приоритетами.
  • Синхронизация потоков.
  • Функции ожидания. Критическая секция. Синхронизирующие объекты Windows: событие, мьютекс, семафор, ожидаемый таймер.

5. Каналы (pipes). Сокеты (sockets)

  • Виды каналов. Понятия и термины, связанные с каналами: односторонние и дуплексные каналы, передача сообщениями или блоками байтов, блокирующие (синхронные) и неблокирующие (асинхронные), именованные и анонимные каналы.
  • Анонимные каналы.
  • Создание объекта канала процессом-сервером. Способы передачи дескриптора объекта процессу-клиенту. Виды взаимодействия процессов посредством неименованного канала.
  • Именованные каналы
  • Создание объекта канала процессом-сервером. Установка соединения с каналом со стороны сервера. Установка соединения с каналом со стороны клиента. Запись/чтение данных из канала. Отключение серверного процесса от клиентского процесса. Способы (и соответствующие функции) взаимодействия процессов.
  • посредством именованного канала.
  • Виды сокетов. Установление соединения посредством сокета. Многопоточный сервер на базе сокетов.

Практика 1. Способы межпроцессного взаимодействия.

  • Исследование разных способов порождения дочерних процессов.
  • Взаимодействие посредством пользовательского межпроцессного сообщения.
  • Взаимодействие посредством сообщения WM_COPYDATA
  • Взаимодействие посредством механизма отображения файлов на память:
  • совместное использование двумя процессами общей области памяти,
  • совместное использование двумя процессами одного и того же файла.

Практика 2. Создание библиотек

  • Статическая библиотека.
  • Динамическая библиотека. Неявная загрузка DLL. Явная загрузка DLL. DEF файлы.
  • Утилита DUMPBIN

Практика 3. Потоки

  • Запуск потоков. Приоритеты потоков. Взаимодействие потоков с разными приоритетами.
  • Синхронизирующие объекты Windows. Синхронизация потоков, выполняющихся в одном процессе. Критическая секция, событие, мьютекс, семафор.
  • Синхронизация потоков, выполняющихся в разных процессах. Ожидаемый таймер, событие, мьютекс, семафор.

Практика 4. Каналы

  • Неименованный канал. Создание тестовых приложений: клиента и сервера. Взаимодействие тестовых приложений посредством неименованного канала на одном компьютере.
  • Именованный канал. Создание тестовых приложений: клиента и сервера. Взаимодействие тестовых приложений посредством именованного канала на разных компьютерах. Многопоточный сервер.

Практика 5

  • Создание клиент-серверного приложения для исследования взаимодействия посредством сокета.
  • Многопоточный сервер.

Время проведения курса пока не определено, отправьте нам заявку, пожалуйста.

Возможно, мы предложим пройти курс в дистанционном режиме или организуем выездной курс, если у Вас группа.

Каталог услуг

Поиск по сайту