Операционная система OS2 Warp

Невытесняющая мультизадачность Microsoft Windows


Операционные системы Microsoft Windows версии 3.1 и Microsoft Windows for Workgroups версии 3.11 в некоторой степени решают проблему одновременного использования нескольких программ, организуя невытесняющую (nonpreemptive) мультизадачность, которую еще называют "добровольной" мультизадачностью.

Суть невытесняющей мультизадачности заключается в том, что операционная система не выполняет принудительного переключения одновременно запущенных приложений Microsoft Windows, например, по прерыванию таймера, но приложения время от времени передают друг другу управление по своей инициативе (рис. 1.2). Это уже лучше чем "переключательная" мультизадачность, но вот вопрос: может ли программист как ни будь вмешаться в этот процесс, правильно распределив приоритеты приложений?

Рис. 1.2. Приложения Microsoft Windows периодически и по своей инициативе передают друг другу управление

К сожалению, ни пользователь, ни программист, создающий приложения для Microsoft Windows, не может изменять приоритет приложений Windows (хотя пользователь может изменить приоритеты программ DOS, работающих в среде Microsoft Windows).

Дело здесь в том, что для каждой программы DOS операционная система Microsoft Windows создает отдельную виртуальную машину, но все приложения Windows работают на одной системной виртуальной машине. При этом пользователь может изменять приоритеты отдельных виртуальных машин, но не может изменять приоритет приложений Windows, работающих в рамках одной виртуальной машины.

Фактически виртуальные машины Microsoft Windows работают в режиме вытесняющей мультизадачности. При этом каждая виртуальная машина получает для работы квант времени. Системная виртуальная машина Microsoft Windows в этом плане ничем не отличается от виртуальных машин, которые используются для работы программ DOS. Поэтому приложения Windows, добровольно разделяя между собой кванты времени, выделенные системной виртуальной машине, сами по себе работают в режиме невытесняющей мультизадачности.

Чем это плохо?

Потенциально невытесняющая мультизадачность может привести к "зависанию" Microsoft Windows в результате запуска плохо отлаженного приложения, которое не собирается "делиться" ресурсами с другими приложениями. В результате пользователь часто бывает вынужден выполнять перезагрузку компьютера, что не всегда приемлемо.



Содержание раздела