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

6.2.3.5Функція CloseHandle

BOOL WINAPI CloseHandle( HANDLE hObject);

hObject – дескриптор

Функцію треба викликати для дескриптора – відображення та дескриптору файлу, якщо функція CreateFile використовувалась

6.3Завдання до лабораторної роботи

У даній лабораторній роботі необхідно виконати наступне:

1. скласти програму для формування системної інформації про віртуальну пам'ять і пояснити отримані результати;

2. виділити пам'ять деякого розміру й визначити новий стан системної інформації, пояснити результати;

3. переробити програму для поштової скриньки з використанням відображення файлу на пам'ять ;

6.4Зміст звіту

- повний опис функцій для роботи з пам'яттю, що були використані у лабораторній роботі;

- тексти програми

- пояснення отриманих результатів;

- висновки.

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

    1. Дайте визначення різних типів пам'яті.

    2. Поясните дії, необхідні для виділення пам'яті з погляду програміста і операційної системи.

    3. Яка інформація про пам'ять може бути отримана і де використовується ця інформація?

  1. Які атрибути можуть бути задані для сторінок?

  2. Чим визначається максимальний розмір фізичної пам'яті, що може бути виділений однією операцією виділення?

  3. Яким образом пам'ять звільняється?

  4. Що буде, якщо:

  • програміст забув звільнити пам'ять?

  • у зв'язку з аварійним завершенням програми вона не дійшла до коду звільнення?

  1. Що буде, якщо не передбачена перевірка благополучності виділення пам'яті і використовується фактично невиділена пам'ять?

  2. Що буде, якщо використовується більший обсяг пам'яті, чим виділено?

7Планування процесів

7.1Мета роботи

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

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

1 Вивчить основні алгоритми планування (матеріал відповідної лекції);

2 Реалізуйте основні функції для роботи із чергою процесів;

3 Реалізуйте алгоритм FCFS. Визначте основні критерії для цього алгоритму;

4 Реалізуйте алгоритм RR. Визначте основні критерії для цього алгоритму;

5 Реалізуйте алгоритм SJF. Визначте основні критерії для цього алгоритму;

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

7.3Зміст звіту

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

  1. Програмні реалізації для трьох алгоритмів;

  2. Вхідні дані й очікувані результати для кожного з алгоритмів;

  3. Результати виконання кожного алгоритму (значення всіх показників);

  4. Висновки по роботі.

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

  1. Для чого використовуються алгоритми планування?

  2. Для чого використовуються алгоритми диспетчеризації?

  3. В який алгоритм переходить алгоритм RR, якщо квант часу збільшити до нескінченності?

  4. Що таке статичний пріоритет?

  5. Що таке динамічний пріоритет?

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;