№6 Процеси і потоки.
З одного боку, процес можна розглядати як спосіб об'єднання споріднених ресурсів в одну групу.
З іншого боку, процес можна розглядати як потік виконуваних команд або просто потік. У потоку є лічильник команд, що відслідковує порядок виконання дій. У нього є регістри, в яких зберігаються поточні змінні. У нього є стек, що містить протокол виконання процесу, де на кожну процедуру, викликану, але ще не повернулася, відведений окремий фрейм. Хоча потік повинен виконуватися всередині процесу, слід розрізняти концепції потоку і процесу. Процеси використовуються для групування ресурсів, а потоки є об'єктами, по черзі що виконуються на центральному процесорі.
Відмінності потоків і процесів:
Потоки мають «власний» стек і набір регістрів. Глобальні дані є загальними.
Як локальні, так і глобальні змінні процесів є «власними».
Будь потік состоітіз двох компонентів:
1) об'єкта ядра. через який операційна система управляє потоком. Там же зберігається статистична інформація про потік (додаткові потоки створюються також ядром); 2) стека потоку. який містить параметри всіх функцій і локальні змінні, необхідні потоку для виконання коду.
Потік (thread) визначає послідовність виконання коду в процесі.
Процес нічого не виконує, він просто служить контейнером потоків.
Потоки завжди створюються в контексті будь-якого процесу, і все їхнє життя проходить тільки в його межах.
Потоки можуть виконувати один і той же код і маніпулювати одними і тими ж даними, а також спільно використовувати описатели об'єктів ядра, оскільки таблиця описателей створюється не в окремих потоках, а в процесах.