
- •Процессы и задачи в Microsoft Windows
- •Запуск задач
- •Управление запущенными задачами
- •Изменение приоритета задачи
- •Определение приоритета задачи
- •Приостановка и возобновление выполнения задачи
- •Временная приостановка работы задачи
- •Завершение задачи
- •Освобождение идентификатора задачи
- •Критические секции
- •Инициализация критической секции
- •Удаление критической секции
- •Вход в критическую секцию и выход из нее
- •4. Контрольные вопросы
- •5. Содержание работы
- •Создание объекта - событие
- •Открытие объекта - событие
- •Управление состоянием объекта - событие
- •Объекты – событие с автосбросом
- •Создание объекта Mutex
- •Освобождение идентификатора объекта Mutex
- •Открытие объекта Mutex
- •Как завладеть объектом Mutex
- •Освобождение объекта Mutex
- •Как работает семафор
- •Функции для работы с семафорами
- •Создание семафора
- •Уничтожение семафора •
- •Увеличение значения счетчика семафора
- •Уменьшение значения счетчика семафора
- •Определение текущего значения счетчика семафора
- •Создание и открытие ожидаемого таймера
- •Функции для работы с ожидаемым таймером
- •Контрольные вопросы
- •Содержание работы
- •Содержание отчета
- •Теоретический материал
- •7.1. Универсальные функции для работы с файлами в операционных системах Microsoft Windows
- •Функция CreateFile
- •Функция CloseHandle
- •Функции ReadFile и WriteFile
- •Механизм отображения файлов на память
- •Создание отображения файла
- •Выполнение отображения файла в память
- •Открытие отображения
- •Отмена отображения файла
- •Принудительная запись измененных данных
- •Обмен через файлы, отображаемые на память
- •Пример приложения, использующего файлы, отображаемые на память
- •Именованные и анонимные каналы
- •Имена каналов
- •Реализации каналов
- •Создание канала
- •Установка соединения с каналом со стороны сервера
- •Пример приложения, использующего каналы передачи данных Pipes
- •Создание канала Mailslot
- •Открытие канала Mailslot
- •Запись сообщений в канал Mailslot
- •Чтение сообщений из канала Mailslot
- •Определение состояния канала Mailslot
- •Изменение состояния канала Mailslot
- •Пример приложения, использующего каналы передачи данных MailSlot
- •Пример приложения, использующего передачу сообщений между процессами
Пример приложения, использующего передачу сообщений между процессами
Рассмотрим реализацию клиентской части приложения (отправителя):
HWND hWnd; //Идентификатор главного окна приложения - отправителя
HWND hWndServer; // Идентификатор главного окна приложения - получателя
COPYDATASTRUCT cd; // Структура для передачи данных между процессами
char szBuf[80]; // Буферы для передаваемых данных
// Записываем адрес и размер строки в структуру типа COPYDATASTRUCT
cd.lpData=szBuf;
cd.cbData=strlen(szBuf) + 1;
// Посылаем сообщение серверному приложениию-получателю
SendMessage(hWndServer, WM_COPYDATA,(WPARAM)hWnd, (LPARAM)&cd);
Реализацию серверной части приложения (получателя). сводится к получению и обработке сообщения WM_COPYDATA. В качестве примера рассмотрим обработчик, осуществляющий вывод на экран полученной информации:
LRESULT WINAPI
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ char szBuf[80]; // Буферы для передаваемых данных switch(msg)
{ case WM_COPYDATA:
{ // Копируем полученные данные во внутренний буфер
strcpy(szBuf, ((PCOPYDATASTRUCT)lParam)->lpData);
printf(szBuf,%s);
break;
}
HANDLE_MSG(hWnd, WM_CREATE, WndProc_OnCreate); HANDLE_MSG(hWnd, WM_DESTROY, WndProc_OnDestroy);
HANDLE_MSG(hWnd, WM_PAINT, WndProc_OnPaint);
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
}
Номер варианта
Последняя цифра зачетной книжки |
|||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Номер варианта |
|||||||||
8 |
3 |
4 |
1 |
6 |
7 |
9 |
7 |
5 |
10 |
Варианты заданий
Номер варианта |
Способ взаимодействия процессов |
1 |
Взаимодействие посредством механизма отображения файлов на память: совместное использование двумя процессами виртуальной памяти; |
2 |
Взаимодействие посредством анонимного канала Pipe; |
3 |
Взаимодействие посредством канала передачи данных Mailslot; |
4 |
Взаимодействие посредством сообщения WM_COPYDATA; |
5 |
Взаимодействие посредством механизма отображения файлов на память: совместное использование двумя процессами виртуальной памяти; |
6 |
Взаимодействие посредством сообщения WM_COPYDATA; |
7 |
Взаимодействие посредством механизма отображения файлов на память: совместное использование двумя процессами одного и того же файла; |
8 |
Взаимодействие посредством именованного канала Pipe; |
9 |
Взаимодействие посредством канала передачи данных Mailslot; |
10 |
Взаимодействие посредством сообщения WM_COPYDATA; |
СОДЕРЖАНИЕ
Введение 1
Лабораторная работа №1 2
«Разработка и исследование мультизадачных приложений в операционных системах Microsoft Windows» 2
Лабораторная работа №2 18
«Синхронизация задач в операционных системах 18
Microsoft Windows» 18
Лабораторная работа №3 43
«Передача данных между процессами в операционных системах Microsoft Windows» 43