Управління процесами в Windows

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

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

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

Всі версії Windows від 1.0 до 3.11 представляли собою досить потужні багатозадачні системи з невитесняющей диспетчеризацією. Версії, починаючи з Windows NT і Windows 95, використовують витісняючу диспетчеризацію.