Про windows - там ситуация еще хуже.
Реально ни одна существующая в природе ОС не может гарантировать вытеснения процесса в любой произвольный момент времени.
Причиной является то, что любой пользовательский процесс может периодически переводить систему в привилегированный режим работы процессора в котором может потребоваться выполнение достаточно тонких операций.
Некоторые из них (например, работа подсистемы виртуальной памяти) настолько чувствительны к возможному вмешательству в порядок исполнения команд, что на очень короткие промежутки времени операционная система даже запрещает прерывания, не то что переключения процессов.
В других случаях (значительно более продолжительных по своей природе), процессы могут быть прерваны прерываниями, но хотят оставить за собой монопольный доступ к какому-либо критическому системному ресурсу.
В этом случае используется система семафоров. Часть из этих семафоров может устанавливать глобальные блокировки препятствующие в частности работе планировщика (scheduler) - супервизора ОС, который осуществляет диспетчеризацию процессов.
В windows 9x, как Вы сами упоминали, таким критическим ресурсом был доступ к 16-битной подсистеме.
Хочу сразу оговориться, тот же Linux, например, также не является ОС реального времени и для него не определено максимальное время действия блокировки (и часть из них носит вложенный характер). Только недавно в нем стала возможна вытесняющая многозадачность для процессов в состоянии ядра
(я уже упомянул, что любой процесс может периодически оказываться в этом состоянии при отработке системного вызова).
Но в windows блокировки носили перманентный характер. Поэтому, если Вы помните, сначала microsoft рекламировала win 3.x как многозадачную графическую операционную оболочку. Потом, с появлением windows 95 было объявлено, что многозадачность в windows for workgroups (3.11) была ненастоящая, а в новой ОС - совсем другое дело.
А с выходом windows 2000 точка зрения была пересмотрена и предыдущие версии тоже объявили имевшими неполноценную многозадачность - ведь можно ли быть
частично истинно многозадачным? И реальная ли там многозадачность, если она есть, но всё время заблокирована?
(Хочу еще напомнить, что все ОС семейства win9x с необходимостью включали в себя и запускали при старте системную виртуальную машину MS-DOS. Которой передавалась для обработки часть системных вызовов. Уж она-то никаким образом не могла воспользоваться преимуществами формально существующей для одной-единственной из подсистем windows вытесняющей многозадачности.)
Вопрос опять получается чисто терминологический. Я считаю операционную систему, которая
частично истинно многозадачна, а частично кооперативна НЕ истинно многозадачной. Вы, очевидно, считаете по-другому....
P.S. Цитата из официального пресс-релиза о выпуске windows 2000:
Windows 2000 has true preemptive multitasking for both 16- and 32-bit apps. In Windows 95 or 98, 16-bit apps are multitasked cooperatively, which means that a single rogue 16-bit task (such as a Windows 3.1 application) can still bring down the whole system.