Чим процес відрізняється від потоку, бcб
У попередньому пості, я розповів Вам про поняття процесу в ОС. Сьогодні ж, я викладу більш докладно про потік, його відмінності від процесу, а за допомогою своїх чудо-рук, ти зможеш створити консольний варіант Диспетчера завдань (такий, трохи убогий і без функції звичайно ... ну все-таки).
З іншого боку, процес можна розглядати як потік виконуваних кокоманд або просто потік. У потоку є лічильник команд, що відслідковує порядок виконання дій. У нього є регістри, в яких зберігаються поточні змінні. У нього є стек, що містить протокол виконання процесу, де на кожну процедуру, викликану, але ще не повернулася, відведений окремий фрейм. Хоча потік повинен виконуватися всередині процесу, слід розрізняти концепції потоку і процесу. Процеси використовуються для групування ресурсів, а потоки є об'єктами, по черзі що виконуються на центральному процесорі.
Будь потік состоітіз двох компонентів:
об'єкта ядра. через який операційна система управляє потоком. Там же зберігається статистична інформація про потік (додаткові потоки створюються також ядром);
стека потоку. який містить параметри всіх функцій і локальні змінні, необхідні потоку для виконання коду.
Зрозуміти пост не Новомосковськ або для ледачих:
- Потік (thread) визначає послідовність виконання коду в процесі.
- Процес нічого не виконує, він просто служить контейнером потоків.
- Потоки завжди створюються в контексті будь-якого процесу, і все їхнє життя проходить тільки в його межах.
- Потоки можуть виконувати один і той же код і маніпулювати одними і тими ж даними, а також спільно використовувати описатели об'єктів ядра, оскільки таблиця описателей створюється не в окремих потоках, а в процесах.
- Так як потоки витрачають значно менше ресурсів, ніж процеси, намагайтеся вирішувати свої завдання за рахунок використання додаткових потоків і уникайте створення нових процесів (але підходите до цього з розумом).
А почитати ще теорії? Ріхтер і Таненбаум ...