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