Операционные системы: архитектура и управление процессами. Макаров П.С. - 61 стр.

UptoLike

Составители: 

61
зователем). Если приложение тратит слишком много времени на выполнение
какой-либо работы, например, на форматирование диска, пользователь не мо-
жет переключиться с этой задачи на другую задачу, например, на текстовый ре-
дактор, в то время как форматирование продолжалось бы в фоновом режиме.
Эта ситуация нежелательна, так как пользователи обычно не хотят долго ждать,
когда машина завершит свою задачу.
Поэтому разработчики приложений для non-preemptive операционной
среды, возлагая на себя функции планировщика, должны создавать приложения
так, чтобы они выполняли свои задачи небольшими частями. Например, про-
грамма форматирования может отформатировать одну дорожку дискеты и вер-
нуть управление системе. После выполнения других задач система возвратит
управление программе форматирования, чтобы та отформатировала следую-
щую дорожку. Подобный метод разделения времени между задачами работает,
но он существенно затрудняет разработку программ и предъявляет повышен-
ные требования к квалификации программиста. Программист должен обеспе-
чить «дружественное» отношение своей программы к другим выполняемым
одновременно с ней программам, достаточно часто отдавая им управление.
Крайним проявлением «недружественности» приложения является его зависа-
ние, которое приводит к общему краху системы. В системах с вытесняющей
многозадачностью такие ситуации, как правило, исключены, так как централь-
ный планирующий механизм снимет зависшую задачу с выполнения.
Однако распределение функций планировщика между системой и прило-
жениями не всегда является недостатком, а при определенных условиях может
быть и преимуществом, потому что дает возможность разработчику приложе-
ний самому проектировать алгоритм планирования, наиболее подходящий для
данного фиксированного набора задач. Так как разработчик сам определяет в
программе момент времени отдачи управления, то при этом исключаются нера-
циональные прерывания программ в «неудобные» для них моменты времени.
Кроме того, легко разрешаются проблемы совместного использования данных:
задача во время каждой итерации использует их монопольно и уверена, что на
протяжении этого периода никто другой не изменит эти данные. Существен-
ным преимуществом non-preemptive систем является более высокая скорость
переключения с задачи на задачу.
Примером эффективного использования невытесняющей многозадачно-
сти является файл-сервер NetWare, в котором, в значительной степени благода-
ря этому, достигнута высокая скорость выполнения файловых операций. Менее
удачным оказалось использование невытесняющей многозадачности в опера-
ционной среде Windows 3.х.
Однако почти во всех современных операционных системах, ориентиро-
ванных на высокопроизводительное выполнение приложений (UNIX, Windows
NT, OS/2, VAX/VMS), реализована вытесняющая многозадачность. В послед-
нее время дошла очередь и до ОС класса настольных систем, например, OS/2
Warp и Windows 95. Возможно в связи с этим вытесняющую многозадачность
часто называют истинной многозадачностью.