
8.4.
Обеспечение высокой производительности
Задача 1
ЦП
Задача 2
иск
Задача 1
Ожидание
ЦП
I
I
Ди'
ЦП
ThreadSwitchl
I...
Задача 2
Ожидание
г:
ЦП
2
I Диск
1
ЦП
ЦП
Ожидание
1
Ввод/вывод
(из кэша)
[ЦП
,^
1
ThreadSwitcl
2
Ожидание
б
ЦП
Рис.
8.28.
Схемы переключения процессов:
а
-
для модели с
приоритетами;
б -
для модели без
приоритетов
модель с приоритетами и модель без приоритетов (невытесняющая многоза-
дачность). Большинство многозадачных сетевых ОС, таких, как OS/2 и UNIX,
являются системами, где поддерживается модель с приоритетами. Предполо-
жим, что в одной из этих ОС выполняются две задачи (рис. 8.28, а), причем
задача 2 имеет приоритет выше, чем задача 1.
После операции с диском (чтение или запись) ОС активизирует задачу 2,
имеющую более высокий приоритет (рис. 8.28, а, точка 7). При этом задача 1
прерьгоается (вытесняется) и переходит в состояние ожидания. Если для зада-
чи 2 требуется выполнить операцию с диском, то ОС приостановит ее и пере-
даст управление задаче 1 (рис. 8.28, а точка 2) и т. д.
Многозадачная сетевая ОС NetWare является системой, где поддержива-
ется модель без приоритетов (невытесняющая многозадачность). Если какая-
либо задача (нить) вьшолняет функцию ThreadSwitch, то ОС помещает ее в
конец очереди RunList и передает управлеьше другой задаче (рис. 8.28, б точки
Л 2).
В системах с приоритетами необходимо перед обновлением ресурсов (об-
ластей основной памяти, записей файлов и
т.
д.) выполнить их блокировку (рис.
8.29, а точки 7, 2, 5, 4),
Это связано с тем, что задача может быть прервана в любой момент вре-
мени. Но, во-первых, на блокировку и разблокировку разделяемых ресурсов
тратится процессорное время, что снижает производительность системы. Во-
вторых, при использовании блокировок часто возникают тупиковые ситуации.
Предположим, что задача
1
заблокировала запись
1
какого-либо файла (рис.
8.29, а точка /) и бьша прервана задачей 2. Пусть задача 2, в свою очередь,
блокирует запись 2 (точка 2). При попытке заблокировать запись 1 задачей 2
она переходит в состояние ожидания, так как эта запись уже заблокирована
задачей 1. Управление передается задаче 1, которая пытается блокировать
запись 2 и переходит в состояние ожидания, так как эта запись уже бьша заб-
493