Программа курса:
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. Введение
· Объектная модель 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)
· Виды каналов. Понятия и термины, связанные с каналами: односторонние и дуплексные каналы, передача сообщениями или блоками байтов, блокирующие (синхронные) и неблокирующие (асинхронные), именованные и анонимные каналы.
· Анонимные каналы.
· Создание объекта канала процессом-сервером. Способы передачи дескриптора объекта процессу-клиенту. Виды взаимодействия процессов посредством неименованного канала.
· Именованные каналы
· Создание объекта канала процессом-сервером. Установка соединения с каналом со стороны сервера. Установка соединения с каналом со стороны клиента. Запись/чтение данных из канала. Отключение серверного процесса от клиентского процесса. Способы (и соответствующие функции) взаимодействия процессов.
· Посредством именованного канала.
6. Практическое занятие 1. Способы межпроцессного взаимодействия.
· Исследование разных способов порождения дочерних процессов.
· Взаимодействие посредством пользовательского межпроцессного сообщения.
· Взаимодействие посредством сообщения WM_COPYDATA
· Взаимодействие посредством механизма отображения файлов на память:
· совместное использование двумя процессами общей области памяти,
· совместное использование двумя процессами одного и того же файла.
7. Практическое занятие 2. Создание библиотек
· Статическая библиотека.
· Динамическая библиотека. Неявная загрузка DLL. Явная загрузка DLL. DEF файлы.
· Утилита DUMPBIN
8. Практическое занятие 3. Потоки
· Запуск потоков. Приоритеты потоков. Взаимодействие потоков с разными приоритетами.
· Синхронизирующие объекты Windows. Синхронизация потоков, выполняющихся в одном процессе. Критическая секция, событие, мьютекс, семафор.
· Синхронизация потоков, выполняющихся в разных процессах. Ожидаемый таймер, событие, мьютекс, семафор.
9. Практическое занятие 4. Каналы
· Неименованный канал. Создание тестовых приложений: клиента и сервера. Взаимодействие тестовых приложений посредством неименованного канала на одном компьютере.
· Именованный канал. Создание тестовых приложений: клиента и сервера. Взаимодействие тестовых приложений посредством именованного канала на разных компьютерах. Многопоточный сервер.
10. Практическое занятие 5.
· Создание клиент-серверного приложения для исследования взаимодействия посредством сокета.
· Многопоточный сервер.