Всё очень просто, планировщик многозадачной системы при наличии ограниченного количества процессоров выделяет каждому приложению квант времени для использования определённого процессора, по истечению кванта времени, если другим приложениям требуется процессорная мощь, это приложение будет принудительно выгружено, состояние локальной памяти процессора сохраниться в специальном контексте приложения.
Не слушай их. Речь не про любой момент - непрерываемые участки есть (и должны быть) всегда. Просто это модель многозадачности - внешний scheduler вместо добровольных точек выхода, как в кооперативной многозадачности a la Mac OS.
> А чо Линус, только к версии 2.6 до такого додумался :))))
Нет, в 2.6 было реализовано вытеснение в ядре, то есть если приложение ушло на обработку в ядро, то вытеснить его не представлялось возможным в ядрах до 2.6 (если ядро не патчить)
Вообщем читай правильного Таненбаума, а не того лошка ;-)
> Речь не про любой момент - непрерываемые участки есть (и должны быть) всегда.
Ну да, в системах с гибким реальным временем это действительно так, просто в последствие приложение, захватившее больше времени, будет оштрафовано и получит меньше процессорного времени.
"operating system with preemptable processes" обычно переводится на русский
как "операционная система с разделением времени", а "Preemptive Multitasking"
обычно переводится на русский как "вытесняющая многозадачность" и противопоставляется
"Cooperative Multitasking", которая на русский переводится иногда почему-то
как "корпоративная многозадачность".
IMHO:
Обычно Preemptive Multitasking является preemptive только в юзерспейсе,
а ядерные вызовы не рвуться, так как это снижает производительность
(хотя иногда ставятся контрольные точки, в которых приложение можно
разорвать в режиме ядра). Исключение составляют многозадачные системы реального
времени, где процесс просто обязан рваться где ни попадя.
Но одна небезызвестная фирма, которая, как ребенок, все тянула в рот при
разработке своей супер-пупер операционки, стянула и эту фичу RT систем
(preemptable kernel) "шоб была", далее раскрутила ее как суперфичу (надо же
было вложенные бабки оправдывать!), и теперь считается, что современная
десктопная операционка должна иметь вытесняемое ядро. В Линух тоже такую
феньку протащили (в 2.5), несмотря на сопротивление Линуса.
P.S.
Справка исторического характера: вообще-то, изначальное значение термина preemptible program означало
"программа, допускающая откачку на диск", т.е. preemptible == swappable.
Ныне термин в этом значении почти не употребляется, а вместо preemptible
все чаще пишется preemptable.