Потік виконання: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Ganyak (обговорення | внесок)
Ganyak (обговорення | внесок)
Рядок 61:
=== 1:1 ===
 
Користувацькі нитінитки моделі 1:1 відповідають одна до одного планувальному об'єктові ядра. Це найпростіша можлива реалізація нитейниток. В [[Linux]] цей підхід реалізує звична бібліотека C (NPTL).
 
=== N: M ===
N: M розкладає N нитейниток [[застосунок|застосунку]] на M об'єктів ядра, або «віртуальних процесорів». Така реалізація є компромісом між реалізацією нитейниток рівня ядра («1:1») і рівнем користувача («N:1»). Загалом, нитеваниткова система «N: M» складніша в реалізації і за ядерну, і за користувацьку системи, бо потрібні зміни і в ядрі і з боку користувача. В реалізації m×n, бібліотека нитейниток відповідальна за планування нитейниток користувача на можливі об'єкти планування; це робить переключення контексту нитейниток дуже швидким, бо не потрібні системні виклики. Проте, це збільшує складність і ймовірність інверсії пріоритетів, а також вимагає екстенсивної (і дорогої) координації між планувальниками ядра та користувача.
 
=== N:1 ===
Модель N:1 означає відобразити всі нитінитки застосунку на єдиний планувальний об'єкт ядра; оскільки ядро нічого не знає про користувацькі нитінитки, фактично це є реалізація волокон. При такому підході переключення контексту може бути зроблене дуже швидко і, на додаток, воно може бути реалізоване на простому ядрі без підтримки нитейниток. Один з найбільших недоліків, це те, що неможливо отримати користь від апаратного пришвидшення на багатоядерних процесорах або багато-процесорнихбагатопроцесорних комп'ютерах: у цій моделі неможливо запустити більше однієї нитінитки одночасно.
 
== Реалізації ==