Чим процес відрізняється від потоку, бcб

У попередньому пості, я розповів Вам про поняття процесу в ОС. Сьогодні ж, я викладу більш докладно про потік, його відмінності від процесу, а за допомогою своїх чудо-рук, ти зможеш створити консольний варіант Диспетчера завдань (такий, трохи убогий і без функції звичайно ... ну все-таки).

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

Будь потік состоітіз двох компонентів:

об'єкта ядра. через який операційна система управляє потоком. Там же зберігається статистична інформація про потік (додаткові потоки створюються також ядром);
стека потоку. який містить параметри всіх функцій і локальні змінні, необхідні потоку для виконання коду.

Зрозуміти пост не Новомосковськ або для ледачих:

  1. Потік (thread) визначає послідовність виконання коду в процесі.
  2. Процес нічого не виконує, він просто служить контейнером потоків.
  3. Потоки завжди створюються в контексті будь-якого процесу, і все їхнє життя проходить тільки в його межах.
  4. Потоки можуть виконувати один і той же код і маніпулювати одними і тими ж даними, а також спільно використовувати описатели об'єктів ядра, оскільки таблиця описателей створюється не в окремих потоках, а в процесах.
  5. Так як потоки витрачають значно менше ресурсів, ніж процеси, намагайтеся вирішувати свої завдання за рахунок використання додаткових потоків і уникайте створення нових процесів (але підходите до цього з розумом).

А почитати ще теорії? Ріхтер і Таненбаум ...