Тема 6. Потоки та нитки в Windows.

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Процеси

Процесом (задачею) зазвичай називають екземпляр програми що виконується.

Хоча на перший погляд здається що програма і процес поняття практично однакові, вони фундаментально відрізняються одне від одного. Програма є статичним набором команд, а процес це набір ресурсів і даних, що використовуються при виконанні програми.

Будь-який процес може знаходитися у трьох станах:

  • виконання
  • очікування
  • готовності
Під виконанням процесу розуміють активний стан процесу під час якого він споживає процесорний час, а також користується іншими ресурсами системи.
Очікування – пасивний стан процесу при якому процес очікує вивільнення потрібного йому ресурсу або свого кванту часу у процесорі.

Процес у Windows характеризується наступними компонентами:

- Структура даних, що містить всю інформацію про процес, зокрема список відкритих дескрипторів різних системних ресурсів, унікальний ідентифікатор процесу, різну статистичну інформацію і т.д.;
- Адресний простір - діапазон адрес віртуальної пам'яті, яким може користуватися процес;
- Виконувана програма і дані, проектовані на віртуальний адресний простір процесу.

Потоки (нитки)

Процеси інертні. Відповідають же за виконання коду, що міститься в адресному просторі процесу, потоки. Потік (thread) –мінізадача,яка запускається всередині процесу і використовує псевдопаралельну роботу мікропроцесора.У кожному процесі є мінімум один потік. Цей первинний потік створюється системою автоматично при створенні процесу. Далі цей потік може породити інші потоки, ті в свою чергу нові і т.д. Таким чином, один процес може володіти декількома потоками, і тоді вони одночасно виконують код в адресному просторі процесу.

Для потоку дозволені наступні стани:

  • створення (new);
  • виконання (running);
  • очікування (waiting);
  • готовність (ready);
  • завершення (terminated).

Кожен потік має:

  • унікальний ідентифікатор потоку;
  • вміст набору регістрів процесора, що відображають стан процесора;
  • два стеки, один з яких використовується потоком при виконанні в режимі ядра, а інший - в користувацькому режимі;
  • закриту область пам'яті, звану локальною пам'яттю потоку (thread local storage, TLS) що використовується підсистемами, run-time бібліотеками і DLL.

Потоки мають усі властивості процесів за одним винятком: виконання потоків може бути припинене при закритті процесу, незалежно від того в якому стані вони знаходились.