
- •1Розробка універсальних додатків для різних типів кодувань символьної інформації
- •1.1Мета роботи
- •1.2Підготовка до роботи. Теоретичні положення
- •1.2.1Типи даних char і wchar_t. Універсальне завдання типу
- •1.2.2Функції для роботи з рядками для ansi і unicode кодувань
- •1.2.3Файл tchar.H. Пошук імен для універсальних функцій
- •1.2.4Визначення типу тексту і перетворення типу кодування тексту
- •1.3Завдання до лабораторної роботи. Порядок виконання
- •2.2.2Загальна характеристика динамічних бібліотек
- •2.2.3Створення статичних бібліотек
- •2.2.4Створення dll
- •2.2.5Використання dll
- •2.2.6Алгоритм шифрування rsa
- •2.3Порядок виконання лабораторної роботи
- •3.3Порядок виконання лабораторної роботи. Завдання до лабораторної роботи
- •3.5Контрольні запитання і завдання
- •4Керування зовнішніми пристроями. Нестандартні пристрої
- •4.1Мета роботи
- •4.2Підготовка до роботи
- •4.3 Завдання до лабораторної роботи
- •4.4Контрольні питання и завдання
- •5.2.2Інформація про файлову систему пристрою
- •5.2.3Визначення вільного місця на пристрої
- •5.3Порядок виконання лабораторної роботи
- •5.4Контрольні запитання і завдання
- •6.2.1.2Функція GlobalMemoryStatusEx
- •6.2.1.3Функція VirtualQueryEx
- •6.2.2Функції для керування віртуальною та фізичною пам’яттю
- •6.2.2.1Функція VirtualAllocEx
- •6.2.2.2Функція VirtualFree
- •6.2.2.3Функція VirtualProtectEx
- •6.2.3.3Функція MapViewOfFile
- •6.2.3.4Функція UnmapViewOfFile
- •6.2.3.5Функція CloseHandle
- •6.3Завдання до лабораторної роботи
- •6.5Контрольні питання й завдання
- •7Планування процесів
- •7.1Мета роботи
- •7.2 Підготовка до роботи і порядок її виконання
- •8.3Порядок виконання лабораторної роботи
- •8.5Контрольні запитання і завдання
- •9 Керування потоками
- •9.1Мета роботи
- •9.2Підготовка до роботи і порядок її виконання
- •9.4Контрольні питання й завдання
- •10 Синхронізація процесів і потоків
- •10.1Мета роботи
- •10.2Підготовка до роботи і порядок її виконання
- •10.4 Контрольні питання й завдання
- •Список використаних джерел
- •Додаток а Стандартні функції для введення – виведення даних для стандартних пристроїв. Функції для роботи з файлами.
6.2.3.5Функція CloseHandle
BOOL WINAPI CloseHandle( HANDLE hObject);
hObject – дескриптор
Функцію треба викликати для дескриптора – відображення та дескриптору файлу, якщо функція CreateFile використовувалась
6.3Завдання до лабораторної роботи
У даній лабораторній роботі необхідно виконати наступне:
1. скласти програму для формування системної інформації про віртуальну пам'ять і пояснити отримані результати;
2. виділити пам'ять деякого розміру й визначити новий стан системної інформації, пояснити результати;
3. переробити програму для поштової скриньки з використанням відображення файлу на пам'ять ;
6.4Зміст звіту
- повний опис функцій для роботи з пам'яттю, що були використані у лабораторній роботі;
- тексти програми
- пояснення отриманих результатів;
- висновки.
6.5Контрольні питання й завдання
Дайте визначення різних типів пам'яті.
Поясните дії, необхідні для виділення пам'яті з погляду програміста і операційної системи.
Яка інформація про пам'ять може бути отримана і де використовується ця інформація?
Які атрибути можуть бути задані для сторінок?
Чим визначається максимальний розмір фізичної пам'яті, що може бути виділений однією операцією виділення?
Яким образом пам'ять звільняється?
Що буде, якщо:
програміст забув звільнити пам'ять?
у зв'язку з аварійним завершенням програми вона не дійшла до коду звільнення?
Що буде, якщо не передбачена перевірка благополучності виділення пам'яті і використовується фактично невиділена пам'ять?
Що буде, якщо використовується більший обсяг пам'яті, чим виділено?
7Планування процесів
7.1Мета роботи
Вивчити основні алгоритми планування, реалізувати програмно ці алгоритми і порівняти їх, використовуючи різні показники.
7.2 Підготовка до роботи і порядок її виконання
1 Вивчить основні алгоритми планування (матеріал відповідної лекції);
2 Реалізуйте основні функції для роботи із чергою процесів;
3 Реалізуйте алгоритм FCFS. Визначте основні критерії для цього алгоритму;
4 Реалізуйте алгоритм RR. Визначте основні критерії для цього алгоритму;
5 Реалізуйте алгоритм SJF. Визначте основні критерії для цього алгоритму;
6 Для однієї й тієї ж послідовності процесів визначте всі критерії. Порівняйте 3 розглянуті алгоритми й зробіть висновки по ефективності їх використання.
7.3Зміст звіту
Звіт має містити:
Програмні реалізації для трьох алгоритмів;
Вхідні дані й очікувані результати для кожного з алгоритмів;
Результати виконання кожного алгоритму (значення всіх показників);
Висновки по роботі.
7.4Контрольні запитання і завдання
Для чого використовуються алгоритми планування?
Для чого використовуються алгоритми диспетчеризації?
В який алгоритм переходить алгоритм RR, якщо квант часу збільшити до нескінченності?
Що таке статичний пріоритет?
Що таке динамічний пріоритет?
8КЕРУВАННЯ ПРОЦЕСАМИ
8.1Мета роботи
Навчитися запускати програми і командні файли із програми.
8.2Підготовка до роботи і порядок її виконання
Вивчить функцію CreateProcess і її використання для запуску програм. Складіть макрос для спрощення використання цієї функції.
BOOL WINAPI CreateProcess(
LPCTSTR lpApplicationName, // Ім'я додатка
LPTSTR lpCommandLine,// Командний рядок
LPSECURITY_ATTRIBUTES lpProcessAttributes, // Атрибути
LPSECURITY_ATTRIBUTES lpThreadAttributes, // безпеки
BOOL bInheritHandles, // Спадкування дескрипторів
DWORD dwCreationFlags, // Прапорці створення
LPVOID lpEnvironment, // Середа
LPCTSTR lpCurrentDirectory,// поточний каталог
LPSTARTUPINFO lpStartupInfo, // Структура з вхідними даними
LPPROCESS_INFORMATION lpProcessInformation
// Структура з дескрипторами створеного процесу та потоку
);
Необхідні структури:
typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpReserved; LPTSTR lpDesktop; LPTSTR lpTitle; DWORD dwX, dwY, dwXSize, dwYSize; DWORD dwXCountChars, dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput, hStdOutput; HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
typedef struct _PROCESS_INFORMATION { HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId;
} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;