Відмінності між версіями «Потоки та нитки в Microsoft Windows»
(Створена сторінка: Нить (англ. thread) або повніше нить виконання (англ. thread of execution), часто застосовується потік (...) |
|||
Рядок 4: | Рядок 4: | ||
Поза тим, програма може емулювати роботу нитей, використовуючи таймер, сигнали або інші методи, щоб перервати власне виконання і послідовно виконувати різні задачі власним квантуванням часу. Такий спосіб іноді зветься нитями користувацького простору (англ. user-space threads) або волокнами. | Поза тим, програма може емулювати роботу нитей, використовуючи таймер, сигнали або інші методи, щоб перервати власне виконання і послідовно виконувати різні задачі власним квантуванням часу. Такий спосіб іноді зветься нитями користувацького простору (англ. user-space threads) або волокнами. | ||
[[Файл:220px.png]] | [[Файл:220px.png]] | ||
+ | |||
+ | '''Порівняння нитей з процесами''' | ||
+ | Ниті відрізняються від традиційних процесів багатозадачних операційних систем, в тому що процеси: | ||
+ | на загал, незалежні, | ||
+ | дублюють значну частину інформації про стан, | ||
+ | мають окремий адресний простір, | ||
+ | взаємодіють тільки через системні міжпроцесорні механізми комунікацій. | ||
+ | Ниті всередині процесу, з іншої сторони, розподіляють інформацію про стан процесу, і прямо доступаються до спільної пам'яті та інших ресурсів. Переключення контексту між нитями процеса на загал швидше, ніж переключення контексту між процесами. Описуючи ситуацію такі системи, як Windows NT та OS/2, кажуть, що мають «дешеві» ниті та «дорогі» процеси; в інших операційних системах ситуація не дуже відмінна. |
Версія за 22:08, 14 квітня 2013
Нить (англ. thread) або повніше нить виконання (англ. thread of execution), часто застосовується потік (програмний потік) та англіцизм тред — в інформатиці так називається спосіб програми розщепити себе на дві чи більше одночасні (чи псевдо-одночасні) задачі. Реалізація нитей та процесів відрізняються в різних операційних системах, але загалом нить міститься всередині процесу і різні ниті одного процесу спільно розподіляють деякі ресурси, в той час як різні процеси ресурси не розподіляють. В системах з одним процесором багатонитевість реалізується загалом поділом часу виконання («кванти часу»), дуже подібно до паралельного виконання багатьох задач: процесор послідовно переключається між різними нитями. Це переключення контексту відбувається настільки швидко, що у кінцевого користувача створюється ілюзія одночасного виконання. На багатопроцесорних чи на багатоядерних системах робота нитей здійснюється справді одночасно, бо різні ниті і процеси виконуються буквально одночасно різними процесорами або ядрами процесора. Особливості квантування в опраційній системі Windows розглянуто у статті Квант (Windows). Багато сучасних операційних систем прямо підтримують квантування часу і багатопроцесорну роботу нитей через планувальник процесів. Ядро операційної системи дозволяє програмісту маніпулювати нитями через інтерфейс системних викликів. Деякі реалізації викликають ниті ядра, оскільки легковагові процеси (англ. lightweight process, LWP) є спеціальним типом нитей ядра, що розподіляють деякі стани і інформацію. Поза тим, програма може емулювати роботу нитей, використовуючи таймер, сигнали або інші методи, щоб перервати власне виконання і послідовно виконувати різні задачі власним квантуванням часу. Такий спосіб іноді зветься нитями користувацького простору (англ. user-space threads) або волокнами.
Порівняння нитей з процесами Ниті відрізняються від традиційних процесів багатозадачних операційних систем, в тому що процеси: на загал, незалежні, дублюють значну частину інформації про стан, мають окремий адресний простір, взаємодіють тільки через системні міжпроцесорні механізми комунікацій. Ниті всередині процесу, з іншої сторони, розподіляють інформацію про стан процесу, і прямо доступаються до спільної пам'яті та інших ресурсів. Переключення контексту між нитями процеса на загал швидше, ніж переключення контексту між процесами. Описуючи ситуацію такі системи, як Windows NT та OS/2, кажуть, що мають «дешеві» ниті та «дорогі» процеси; в інших операційних системах ситуація не дуже відмінна.