Відмінності між версіями «Тема 6. Потоки та нитки в Windows.»

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

Поточна версія на 17:50, 11 жовтня 2016