Курсы C/C++
Общая информация Расписание и стоимость
Условия обучения
Проведение занятий Преподаватели Учебные материалы Документы об окончании Отзывы слушателей

Другие курсы

Курсы C++ Курсы Java Курсы C# (.NET) Курсы Microsoft C# (.NET) Программирование Android Курсы Web-технологий Программирование Linux Тестирование ПО Программирование микроконтроллеров

Обратная связь

+7 (812) 703-02-02 Форум
Печать

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


График обучения: 40 ак.часов

Курс пока не поставлен в расписание. Оставить заявку

Аннотация

В настоящее время актуальными задачами для прикладного программиста являются:

  • распараллеливание выполнения задачи в рамках одного приложения;
  • взаимодействие приложений на одном компьютере;
  • создание распределенных приложений (распараллеливание задачи в рамках сети).

Такие современные многозадачные операционные как Windows XP для обеспечения надежности работы всей системы в целом в первую очередь изолируют приложения друг от друга (то есть предоставляют каждому приложению выполняться в виртуальном защищенном адресном пространстве), позволяя им общаться между собой только средствами, предоставляемыми самой ОС. Поэтому прикладной программист для решения перечисленных задач должен знать способы обмен данными и средства синхронизации.

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

Для разработчика программного обеспечения реализация многозадачности – это:

  • умение представлять задачу как совокупность одновременно выполняющихся и взаимодействующих приложений;
  • способы обмена данными между разными приложениями;
  • способы совместного использования несколькими приложениями данных (файлов, области памяти) и кода (создание собственных и использование существующих динамически загружаемых библиотек - DLL);
  • возможность дробить приложение на более мелкие независимые задачи (threads, fibers), которые могут выполняться с точки зрениям пользователя «одновременно»;
  • изучение средств синхронизации выполнения как отдельных частей одного приложения, так и разных приложений.

Документы об окончании обучения

  • Сертификат учебного центра
    Сертификат учебного центра
  • Удостоверение повышении квалификации (выдается лицам имеющим высшее или среднее профессиональное образование)
    Удостоверение повышении квалификации (выдается лицам имеющим высшее или среднее профессиональное образование)

Преподаватели

Знания и умения, полученные в результате обучения

В процессе обучения слушатель:

  • получает представление о реализации многозадачности в ОС Windows (понятия: job, process, thread, fiber)
  • реализует на простых примерах способы реализации многозадачности (умение порождать дочерние процессы и запускать вторичные потоки)
  • исследует способы обмена данными между процессами
  • осваивает способы создания и использования библиотек (создание статических и динамических библиотек. Способы подключения динамических библиотек.)
  • изучает способы и объекты синхронизации ОС Windows для обеспечения корректного взаимодействия потоков одного и того же процесса или потоков, выполняющихся в разных процессах.

Расписание

Курс пока не поставлен в расписание. Оставить заявку на курс

Стоимость

Дата Физ. лица, руб. Юр. лица, руб.
Без скидки Cкидка 10%* Cкидка 15%** Без скидки Cкидка 10% Cкидка 15%
Цена c 17.10.2017 17900 16100 15200 21850 19650 18550

*Скидка 10% для ранее обучавшихся, при одновременной оплате 2х курсов, а также по акциям.
**Скидка 15% при одновременной оплате 3х и более курсов.
Примечание. Студентам ВУЗов Санкт-Петербурга очной формы обучения скидка до 25%.
Скидки не предоставляется на курсы с дистанционной формой обучения.
Скидки не предоставляется на комплексные и модульные программы обучения.

Требования к начальному уровню знаний

Слушатель должен обладать следующими знаниями:

  • Общие сведения об ОС Windows.
  • Знакомство с архитектурой персонального компьютера.
  • Знание языка программирования С для эффективного использования Win32 API сервисов.
  • Необязательным является умение пользоваться библиотекой классов MFC (для ускорения создания пользовательского интерфейса в демонстрационных примерах)

Перед прохождением данного курса мы рекомендуем прослушать следующие курсы:

Программа курса

Лекция 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

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