Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС - Методичка по лабам.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
319.49 Кб
Скачать

8.3Порядок виконання лабораторної роботи

1. Скласти макроси для спрощення використання функції CreateProcess для случав негайного й відкладеного запуску програми.

2. Скласти 3 програми. Перша програма має запустити текстовий редактор і створити текстові файли в заданій папці. Друга програма для всіх створених першою програмою файлів визначає їх розмір, кількість рядків і довжину кожного рядка. Третя програма запускає по черзі спочатку першу, а потім другу програму. Для другої програми має бути встановлений нижчий пріоритет ніж у інших програм.

3. Використовуючи функцію EnumProcesses, визначити кількість процесів, що виконуються, і ідентифікатори всіх процесів, що виконуються

BOOL WINAPI EnumProcesses(

DWORD* pProcessIds,

DWORD cb,

DWORD* pBytesReturned

);

де:

pProcessIds2 – масив ідентифікаторів процесу

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 файлів

8.4Зміст звіту

Звіт має містити:

      1. Опис всіх використаних функцій WINAPI;

      2. Складені макроси;

      3. Тексти всіх складених програм;

      4. Висновки по роботі з переліком вмінь, які отримані в результаті виконання лабораторної роботи.

8.5Контрольні запитання і завдання

  1. Як необхідно підготувати структуру STARTUPІNFO перед створенням процесу?

  2. Чим відрізняється запуск програм, що виконуються від запуску командного файлу?

  3. Як довідатися встановлені зовнішні пристрої?

  4. Як довідатися, які з файлів знову створені або модифікувалися?

  5. Як можна довідатися, які процеси виконуються?

  6. Як довідатися по ідентифікаторі процесу його дескриптор?

  7. Як довідатися ім'я програми, що виконується по дескрипторові процесу?

9 Керування потоками

9.1Мета роботи

Вивчити методи керування потоками, які використовують загальні ресурси.

9.2Підготовка до роботи і порядок її виконання

  1. Необхідно вивчити функції створення потоків: CreateThread та _beginthreadex.

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES SecurityAttributes, // Атрибути безпеки

DWORD StackSize, // Розмір стека

LPTHREAD_START_ROUTIN StartFunction, //Потокова функція

LPVOID ThreadParameter, // Параметр потокової функції

DWORD CreationFlags, // Прапорці створення потоку

LPDWORD ThreadId // Ідентифікатор потоку

);

uintptr_t _beginthreadex(

void *security, // Атрибути безпеки

unsigned stack_size, Розмір стека

unsigned ( *start_address )( void * ), // Потокова функція

void *arglist, // Параметр потокової функції

unsigned initflag, // Прапорці створення потоку

unsigned *thrdaddr // Ідентифікатор потоку

);

1 Скласти універсальний макрос для створення потоків;

2 Скласти програму, у якій 2 потоки пишуть у чергу рядки і 2 потоки читають із черги рядки, що були туди записані раніше. Після читання рядки мають бути видалені із черги. Розмір черги - не більше N елементів. Використовується загальна черга для всіх 4- х потоків.

3 Для програми, складеної в попередньому пункті, забезпечити можливість однократного запуску цієї програми.

4 Скласти програму для філософів, що обідають, якщо число філософів N, кількість циклів, що має виконати кожен із філософів M. Для потоків використовується одна програма (на чотири) і потоки з різних програм (на п'ять).

9.3Зміст звіту

У звіт мають бути включені всі складені програми й обґрунтування використаних засобів синхронізації.