|
|
Рядок 1: |
Рядок 1: |
− | Потік - це об'єкт операційної системи, укладений в процес і реалізує якtcm завдання. Кожна програма (процес) Win32 має принаймні один потік, який називається головним (основним, стандартним). Кожен процес може містити кілька потоків.
| |
| | | |
− | Без потоку програма процесу не може виконуватися. Потік включає наступні найбільш важливі елементи:
| |
− |
| |
− | - вміст набору регістрів процесора, що відображають стан процесора;
| |
− |
| |
− | - два стека, один з яких використовується потоком при виконанні в режимі ядра, а інший - в режимі користувача;
| |
− |
| |
− | - закриту область пам'яті, звану локальною пам'яттю потоку і використовувану підсистемами, бібліотеками виконуючих систем і DLL;
| |
− |
| |
− | - унікальний ідентифікатор потоку;
| |
− |
| |
− | - Іноді потоки володіють своїм контекстом захисту, який зазвичай використовується багатопотоковими серверними додатками, підмінюють контекст захисту обслуговуваних клієнтів.
| |
− |
| |
− | Вибір поточного потоку з декількох активних потоків, що намагаються отримати доступ до процесора називається '''плануванням'''.
| |
− |
| |
− | Обраний для виконання потік працює протягом якогось періоду, званого квантом, після закінчення якого потік витісняється. Передбачається, що потік не знає, в який момент він буде витіснений. Потік також може бути витіснений навіть, якщо його квант ще не закінчився.
| |
− |
| |
− | Потік знаходиться в адресному просторі процесу, використовуючи його для зберігання даних під час виконання. Якщо в одному процесі існує декілька потоків, то вони спільно використовують адресний простір і всі ресурси, включаючи маркер доступу, базовий пріоритет і описи об'єктів з таблиці об'єктів процесу. Ядро NT направляє потоки на виконання деякого процесору. Таким чином, кожен процес NT повинен мати, щонайменше, один потік.
| |