Потоки Браілова Анна

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

Потік - це об'єкт операційної системи, укладений в процес і реалізує якtcm завдання. Кожна програма (процес) Win32 має принаймні один потік, який називається головним (основним, стандартним). Кожен процес може містити кілька потоків.

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

- вміст набору регістрів процесора, що відображають стан процесора;

- два стека, один з яких використовується потоком при виконанні в режимі ядра, а інший - в режимі користувача;

- закриту область пам'яті, звану локальною пам'яттю потоку і використовувану підсистемами, бібліотеками виконуючих систем і DLL;

- унікальний ідентифікатор потоку;

- Іноді потоки володіють своїм контекстом захисту, який зазвичай використовується багатопотоковими серверними додатками, підмінюють контекст захисту обслуговуваних клієнтів.

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

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

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