Переключеніе_контекста definition of переключеніе_контекста and synonyms of переключеніе_контекста

Arabic Bulgarian Chinese Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malagasy Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Thai Turkish Vietnamese

Arabic Bulgarian Chinese Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malagasy Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Thai Turkish Vietnamese

definition - Переключеніе_контекста

Матеріал з Вікіпедії - вільної енциклопедії

Перемикання контексту (англ. Context Switch) - в багатозадачних ОС і середовищах, процес припинення виконання процесором однієї задачі (процесу, потоку, нитки) зі збереженням всієї необхідної інформації і стану, необхідних для подальшого продовження з перерваного місця, і відновлення і завантаження стану завдання , до виконання якого переходить процесор.

В процедуру перемикання контексту входить т. Н. планування завдання - процес прийняття рішення до якої задачі передати управління.

При перемиканні контексту відбувається збереження і відновлення такої інформації:

  • Регістровий контекст регістрів загального призначення (в тому числі флагової регістр)
  • Контекст стану співпроцесора з плаваючою точкою
  • MMX / SSE - контекст (x86)
  • Стан сегментних регістрів (x86)
  • Стан деяких керуючих регістрів (наприклад, регістр CR3 відповідає за сторінкове відображення пам'яті процесу) (x86)

В ядрі ОС з кожним потоком пов'язані такі структури:

  • Загальна інформація pid, tid, uid, gid, euid, egid, ...
  • Стан процесу / потоку
  • Права доступу
  • Використовувані потоком ресурси і блокування
  • Лічильники використання ресурсів (наприклад таймери використаного процесорного часу)
  • Регіони пам'яті виділені процесу

Перемикання контексту і продуктивність

Крім того, що дуже важливо, при перемиканні контексту відбуваються такі програмно-непомітні апаратні дії, що впливають на продуктивність:

Крім того, слід врахувати наступні факти, що впливають на стан системи:

  • Вміст кеша (особливо це стосується кеша першого рівня) накопичене і «оптимізоване» під виконання одного потоку виявляється абсолютно непридатним до нового потоку, на який відбувається перемикання.
  • При перемиканні контексту, на процес, який до цього довгий час не використовувався (див. Swapping), багато сторінок можуть фізично відсутні в оперативній пам'яті, що породжує подгрузку витіснених сторінок з вторинної пам'яті.

Перемикання контексту і ОС

З точки зору прикладного рівня можна розділити voluntary і non-voluntary context switches: виконувати процес / потік може сам передати управління іншому потоку або ядро ​​саме може відібрати управління.

  1. Ядро ОС може відібрати управління у виконується процесу / потоку при закінченні кванта часу виділеного на виконання. З точки зору програміста це означає що управління могло піти від потоку в «самий невідповідний» момент часу коли структури даних можуть знаходиться в суперечливому стані через те, що їх зміна не було завершено.
  2. Виконання блокуючого системного виклику. Коли додаток виробляє введення-виведення ядро ​​може вирішити, що можна віддати управління іншому потоку / процесу в очікуванні поки запитаний даними потоком дисковий або мережевий введення-виведення буде виконаний. З точки зору загальної продуктивності системи самий «кращий» варіант!
  3. Синхронизирующие примітиви ядра. М'ютекси, Семафори і т. Д. Це і є основне джерело проблем з продуктивністю. Недостатньо продумана робота з синхронізуючими примітивами може в «поганих випадках» приводити до десяткам тисяч а іноді при особливо поганий проектуванні і сотням тисяч переключень контексту в секунду.
  4. Системний виклик явно очікує настання події (select, poll, epoll, pause, wait, ...) або моменту часу (sleep, nanosleep.). З точки зору продуктивності - це хороший варіант, ядро ​​ОС завжди знає хто чекає і чого чекає.

Особливості процедури шедулінга

Різницю між Realtime і Time-Sharing операційними системами особливо добре видно в різниці логіки шедулінга при перемиканні контексту: Time-Sharing шедулінг намагається максимізувати продуктивність всієї системи в цілому, можливо на шкоду продуктивності окремих процессов.Задача шедулера Realtime систем - забезпечити пріоритетне виконання окремих, критичних процесів, причому неважливо наскільки жорсткими накладними витратами для всієї решти системи в цілому це обійдеться.

Реалізації перемикання контексту в сучасних ОС

Як видно з вищесказаного, перемикання контексту є дуже ресурсномісткої операцією, причому більш «навореченее» є процесор, тим більше ресурсномісткої ця операція становітся.Ісходя з цього, ядро ​​використовує ряд стратегій щоб по-перше, скоротити кількість перемикань контексту, а по-друге зробити перемикання контексту менш ресурсномістких.

Методи зменшення кількості перемикань контексту:

  • Існує можливість конфігурації виділяється потоку кванта процесорного часу. При складанні ядра Linux можливо вказати Server / Desktop / Low-Latency Desktop. Для серверних конфігурацій цей квант більше.

Методи зниження ресурсоємності перемикання контексту:

Вищенаведені приклади відносяться до ядра Linux. проте інші операційні системи також застосовують подібні методи, хоча в разі пропрієтарних ОС довести / спростувати використання цього є проблематичним.

Зауваження про термінологію

Схожі статті