ВУЗ:
Составители:
48
лее быстрого выполнения отдельного запроса за счет одновременного
просмотра различных записей базы.
Конечно, задача распараллеливания вычислений в рамках одного
приложения может быть решена традиционными способами с использо-
ванием развитых функций программирования и стандартных средств
межпроцессного взаимодействия без использования потоков.
Например, прикладной программист может взять на себя сложную
задачу организации параллелизма, выделив в приложении некоторую
подпрограмму-диспетчер, которая периодически передает управление
той или иной ветви вычислений. При этом программа может получиться
логически весьма сложной, с многочисленными передачами управления,
что существенно затрудняет ее отладку и модификацию.
Другим способом является создание для одного приложения не-
скольких процессов для каждой из параллельных работ. Однако исполь-
зование для создания процессов стандартных средств ОС не позволяет
учесть тот факт, что эти процессы решают единую задачу, а значит,
имеют много общего между собой – могут работать с одними и теми же
данными, использовать один и тот же кодовый сегмент, наделяться од-
ними и теми же правами доступа к ресурсам вычислительной системы.
Например, создание отдельных процессов при поступлении каждого за-
проса к серверу баз данных, при условии, что все процессы будут вы-
полнять один и тот же программный код и выполнять поиск в записях,
общих для всех процессов файлов данных, не выглядит целесообраз-
ным. В особенности если ОС при таком подходе будет рассматривать
эти процессы наравне со всеми остальными процессами и с помощью
универсальных механизмов обеспечивать их изоляцию друг от друга.
Очевидно, что в подобном случае достаточно громоздкие механизмы
межпроцессного взаимодействия будут использоваться явно не по
назначению, затрудняя обмен данными между различными частями
приложения. Кроме того, на создание каждого процесса ОС тратит си-
стемные ресурсы, которые в данном случае неоправданно дублируются
– каждому процессу выделяются собственное виртуальное адресное
пространство, физическая память, закрепляются устройства ввода-
вывода и т.п.
Из всего вышеизложенного, следует, что в ОС наряду с процессами
нужен другой механизм распараллеливания вычислений, который учи-
тывал бы тесные связи между отдельными ветвями вычислений одного
и того же приложения. Для этих целей современные ОС предлагают ме-
ханизм многопоточной обработки (англ. multithreading). При этом и
необходима новая единица работы – поток или нить исполнения (нити,
легковесные (англ. thin) процессы, треды (англ. threads)).
Страницы
- « первая
- ‹ предыдущая
- …
- 46
- 47
- 48
- 49
- 50
- …
- следующая ›
- последняя »