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

3.9.6. Програмний інтерфейс керування процесами Win32 арі

Треба звернути увагу на систему типів Win32 АРІ. Розробники цього АРІ для визначення типів широко застосовували синоніми імен типів, тому потрібно вміти знаходити в типах Win32 АРІ традиційні типи мови С. Виділимо деякі базові типи:

  • B00L — його використовують для зберігання логічного значення, насправді він є цілочисловим;

  • DWORD – двобайтовий цілочисловий тип без знака, аналог unsigned int;

  • HANDLE — цілочисловий дескриптор об'єкта;

  • LPTSTR — покажчик на рядок, що складається із двобайтових або однобайтових символів (залежно від режиму компіляції програми — із підтримкою Unicode або без неї), аналої - char * або wchart *;

  • LPCTSTR — покажчик на константний рядок, аналог const char * або const wchar_t *.

Взагалі для створення імені типу покажчика потрібно додати до імені базового типу префікс LP. Таке утворення імен траплятиметься й далі (наприклад, LPV0ID оз­начає void *, LPSECURITY_ATTRIBUTES - покажчик на структуру SECURITYATTRIBUTES).

Для використання засобів Win32 АРІ у більшості випадків достатньо підклю­чити заголовний файл windows. h. Надалі підключення цього файлу матиметься на увазі за замовчуванням.

Для закриття дескрипторів об'єктів буде використана API-функція CloseHandle ( ).

    1. Керування потоками у Windows хр

Для того щоб виконувати код, у рамках процесу обов'язково необхідно створити потік. У системі Windows ХР реалізована модель потоків «у чистому вигляді». Процеси і потоки є різними сутностями в системі, що перебувають у чітко визна­ченому взаємозв'язку один з одним; для роботи з ними використовують різні системні виклики. У Windows ХР ніколи не використовували модель процесів, подібну до традиційної моделі UNIX.

Багатопотоковість Windows ХР базується на схемі 1:1. Кожному потоку кори­стувача відповідає сутність у ядрі, при цьому ядро відповідає за планування пото­ків. Процеси не плануються.

3.10.1. Складові елементи потоку

Потік у Windows ХР складається з таких елементів:

  • вмісту набору регістрів, який визначає стан процесора;

  • двох стеків — один використовують для роботи в режимі користувача, ін­ший — у режимі ядра; ці стеки розміщені в адресному просторі процесу, що створив цей потік;

  • локальної пам'яті потоку (TLS);

  • унікального ідентифікатора потоку (thread id, tid), який вибирають із того са­мого простору імен, що й ідентифікатори процесів.

Сукупність стану процесора, стеків і локальної пам'яті потоку становить кон­текст потоку. Кожний потік має власний контекст. Усі інші ресурси процесу (його адресний простір, відкриті файли тощо) спільно використовуються потоками.

Розрізняють два види потоків: потоки користувача і потоки ядра, які у Win­dows ХР називають системними робочими потоками — system worker threads. Перші з них створюють у режимі користувача й тільки за необхідності перемикають у режим ядра. Інші створюють в ядрі під час його ініціалізації і виконують у режимі ядра протягом усього часу їхнього існування.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]