Тема 6. Потоки та нитки в Windows.
Процеси
- Процесом (задачею) зазвичай називають екземпляр програми що виконується.
Хоча на перший погляд здається що програма і процес поняття практично однакові, вони фундаментально відрізняються одне від одного. Програма є статичним набором команд, а процес це набір ресурсів і даних, що використовуються при виконанні програми.
Будь-який процес може знаходитися у трьох станах:
- виконання
- очікування
- готовності
- Під виконанням процесу розуміють активний стан процесу під час якого він споживає процесорний час, а також користується іншими ресурсами системи.
- Очікування – пасивний стан процесу при якому процес очікує вивільнення потрібного йому ресурсу або свого кванту часу у процесорі.
Процес у Windows характеризується наступними компонентами:
- - Структура даних, що містить всю інформацію про процес, зокрема список відкритих дескрипторів різних системних ресурсів, унікальний ідентифікатор процесу, різну статистичну інформацію і т.д.;
- - Адресний простір - діапазон адрес віртуальної пам'яті, яким може користуватися процес;
- - Виконувана програма і дані, проектовані на віртуальний адресний простір процесу.
Потоки (нитки)
Процеси інертні. Відповідають же за виконання коду, що міститься в адресному просторі процесу, потоки. Потік (thread) –мінізадача,яка запускається всередині процесу і використовує псевдопаралельну роботу мікропроцесора.У кожному процесі є мінімум один потік. Цей первинний потік створюється системою автоматично при створенні процесу. Далі цей потік може породити інші потоки, ті в свою чергу нові і т.д. Таким чином, один процес може володіти декількома потоками, і тоді вони одночасно виконують код в адресному просторі процесу.
Для потоку дозволені наступні стани:
- створення (new);
- виконання (running);
- очікування (waiting);
- готовність (ready);
- завершення (terminated).
Кожен потік має:
- унікальний ідентифікатор потоку;
- вміст набору регістрів процесора, що відображають стан процесора;
- два стеки, один з яких використовується потоком при виконанні в режимі ядра, а інший - в користувацькому режимі;
- закриту область пам'яті, звану локальною пам'яттю потоку (thread local storage, TLS) що використовується підсистемами, run-time бібліотеками і DLL.
Потоки мають усі властивості процесів за одним винятком: виконання потоків може бути припинене при закритті процесу, незалежно від того в якому стані вони знаходились.