Методичні вказівки з організації самостійної роботи студентів
При підготовці до лабораторної роботи необхідно повторити матеріал відповідних лекцій та ознайомитися з основними алгоритмами планування по [1, c. 126 – 148, 6, c. 41 - 103].
Порядок виконання лабораторної роботи
1 Реалізуйте основні функції для роботи із чергою процесів;
2 Реалізуйте алгоритм FCFS. Визначте основні критерії для цього алгоритму;
3 Реалізуйте алгоритм RR. Визначте основні критерії для цього алгоритму;
4 Реалізуйте алгоритм SJF. Визначте основні критерії для цього алгоритму;
5 Для однієї й тієї ж послідовності процесів визначте всі критерії. Порівняйте 3 розглянуті алгоритми й зробіть висновки по ефективності їх використання.
Зміст звіту
Звіт має містити:
1. Програмні реалізації для трьох алгоритмів;
2. Вхідні дані й очікувані результати для кожного з алгоритмів;
3. Результати виконання кожного алгоритму (значення всіх показників);
4. Висновки по роботі.
Контрольні запитання і завдання
1. Для чого використовуються алгоритми планування?
2. Для чого використовуються алгоритми диспетчеризації?
3. В який алгоритм переходить алгоритм RR, якщо квант часу збільшити до нескінченності?
4. Що таке статичний пріоритет?
5. Що таке динамічний пріоритет?
КЕРУВАННЯ ПРОЦЕСАМИ
Мета роботи
Навчитися запускати програми і командні файли із програми.
Методичні вказівки з організації самостійної роботи студентів
|
|
При підготовці до лабораторної роботи необхідно повторити матеріал відповідних лекцій та ознайомитися з [1, c. c. 134 – 148, 3, c. 48 – 83, 6, 103 - 121].
Вивчить функцію 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;
Порядок виконання лабораторної роботи
1. Скласти макроси для спрощення використання функції CreateProcess для случав негайного й відкладеного запуску програми.
2. Скласти 3 програми. Перша програма має запустити текстовий редактор і створити текстові файли в заданій папці. Друга програма для всіх створених першою програмою файлів визначає їх розмір, кількість рядків і довжину кожного рядка. Третя програма запускає по черзі спочатку першу, а потім другу програму. Для другої програми має бути встановлений нижчий пріоритет ніж у інших програм.
3. Використовуючи функцію EnumProcesses, визначити кількість процесів, що виконуються, і ідентифікатори всіх процесів, що виконуються
BOOL WINAPI EnumProcesses(
DWORD* pProcessIds,
DWORD cb,
DWORD* pBytesReturned
);
де:
pProcessIds[2] – масив ідентифікаторів процесу
cb - розмір масиву( в байтах);
pBytesReturned - кількість байтів у масиві-результаті;
4. Після визначення ідентифікатори процесів, використовуючи функцію OpenProcess, визначити дескриптори процесів, що виконуються;
HANDLE WINAPI OpenProcess(
DWORD dwDesiredAccess,
//PROCESS_QUERY_INFORMATION | PROCESS_VM_READ
|
|
BOOL bInheritHandle, // FALSE
DWORD dwProcessId // Ідентифікатор процесу
);
5. Для кожного дескриптора процесу визначити ім'я основного модуля, що відповідає дескриптору, використовуючи функцію:
DWORD WINAPI GetModuleBaseName(
HANDLE hProcess, // Дескриптор процесу
HMODULE hModule, //дескриптор модуля; якщо дорівнює 0, то ім'я .exe файлу
LPTSTR lpBaseName, // ім'я модуля
DWORD nSize // розмір буфера для імені модуля
);
6. Надрукувати таблицю ідентифікаторів процесів, дескрипторів і імен .exe файлів
Зміст звіту
Звіт має містити:
1. Опис всіх використаних функцій WINAPI;
2. Складені макроси;
3. Тексти всіх складених програм;
4. Висновки по роботі з переліком вмінь, які отримані в результаті виконання лабораторної роботи.
Дата добавления: 2018-05-13; просмотров: 358; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!