- •Лабораторна робота 1 Тема: Процеси і потоки
- •Створення процесу в win32 api
- •Створення потоку в win32 api
- •Лабораторна робота 2 Тема: Планування і взаємодія процесів і потоків
- •1.Дослідити роботу програми.
- •Приклад синхронізації потоків за допомогою об’єкта critical_section
- •Лабораторна робота 3 Тема: Практична реалізація багатопотоковості
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Синхронізація потоків, які виконуються в різних процесах за допомогою м’ютекса
- •Лабораторна робота 4 Тема: Керування оперативною пам’яттю
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Ініціалізація і копіювання блоків віртуальної пам’яті
- •Лабораторна робота 5 Тема: Файлові системи і операції з файлами і каталогами
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Функції Win32api для файлових операцій
- •Лабораторна робота 6 (ч.1) Тема: Керування пристроями вводу-виводу
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Отримання інформації про перший фізичний диск в системі за допомогою функції DeviceIoControl
- •Лабораторна робота 6 (ч.2) Тема: Створення та використання dll
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого.
- •Створення модальних форм розміщених у dll
- •Лабораторна робота 7 Тема: Взаємодія з користувачем в Windows xp
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Основи створення gui в Win32api
- •Лабораторна робота 8 Тема: Мережні засоби операційних систем
- •3.За завданням викладача розробити власний проект на основі існуючого.
- •Лабораторна робота 9 Тема: Безпека даних в ос
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Додання елементів в список вибіркового керування доступом (dacl) файла або каталога
Лабораторна робота 1 Тема: Процеси і потоки
Завдання:
1.Дослідити роботу програми.
2.Описати документацію на типи даних, структури та функції win32 API, які використовуються в програмі.
3.За завданням викладача розробити власний проект на основі існуючого.
Створення процесу в win32 api
#include <windows.h>
#include <iostream.h>
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
// заполняем значения структуры STARTUPINFO по умолчанию
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
// запускаем процесс Notepad
if (!CreateProcess(
NULL, // имя не задаем
"Notepad.exe", // имя программы
NULL, // атрибуты защиты процесса устанавливаем по умолчанию
NULL, // атрибуты защиты первичного потока по умолчанию
FALSE, // дескрипторы текущего процесса не наследуются
0, // по умолчанию NORMAL_PRIORITY_CLASS
NULL, // используем среду окружения вызывающего процесса
NULL, // текущий диск и каталог, как и в вызывающем процессе
&si, // вид главного окна - по умолчанию
&pi // информация о новом процессе
)
)
{
cout << "The mew process is not created." << endl
<< "Check a name of the process." << endl;
return 0;
}
Sleep(1000); // немного подождем и закончим свою работу
// закроем дескрипторы запущенного процесса в текущем процессе
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return 0;
}
Створення потоку в win32 api
#include <windows.h>
#include <iostream.h>
volatile int n;
DWORD WINAPI Add(LPVOID iNum)
{
cout << "Thread is started." << endl;
n += (int)iNum;
cout << "Thread is finished." << endl;
return 0;
}
int main()
{
int inc = 10;
HANDLE hThread;
DWORD IDThread;
cout << "n = " << n << endl;
// запускаем поток Add
hThread = CreateThread(NULL, 0, Add, (void*)inc, 0, &IDThread);
if (hThread == NULL)
return GetLastError();
// ждем, пока поток Add закончит работу
WaitForSingleObject(hThread, INFINITE);
// закрываем дескриптор потока Add
CloseHandle(hThread);
cout << "n = " << n << endl;
return 0;
}
Лабораторна робота 2 Тема: Планування і взаємодія процесів і потоків
Завдання:
1.Дослідити роботу програми.
2.Описати документацію на типи даних, структури та функції win32 API, які використовуються в програмі.
3.За завданням викладача розробити власний проект на основі існуючого.
Приклад синхронізації потоків за допомогою об’єкта critical_section
#include <windows.h>
#include <iostream.h>
CRITICAL_SECTION cs;
DWORD WINAPI thread(LPVOID)
{
int i,j;
for (j = 0; j < 10; ++j)
{
// входим в критическую секцию
EnterCriticalSection (&cs);
for (i = 0; i < 10; ++i)
{
cout << j << ' '<< flush;
Sleep(7);
}
cout << endl;
// выходим из критической секции
LeaveCriticalSection(&cs);
}
return 0;
}
int main()
{
int i,j;
HANDLE hThread;
DWORD IDThread;
// инициализируем критическую секцию
InitializeCriticalSection(&cs);
hThread=CreateThread(NULL, 0, thread, NULL, 0, &IDThread);
if (hThread == NULL)
return GetLastError();
for (j = 10; j < 20; ++j)
{
// входим в критическую секцию
EnterCriticalSection(&cs);
for (i = 0; i < 10; ++i)
{
cout << j << ' ' << flush;
Sleep(7);
}
cout << endl;
// выходим из критической секции
LeaveCriticalSection(&cs);
}
// ждем, пока поток thread закончит свою работу
WaitForSingleObject(hThread, INFINITE);
// закрываем критическую секцию
DeleteCriticalSection(&cs);
return 0;
}
