Методичні вказівки з організації самостійної роботи студентів



При підготовці до лабораторної роботи необхідно повторити матеріал відповідних лекцій та ознайомитися з основними алгоритмами планування по [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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!