ВУЗ:
Составители:
53
Потоки возникли в операционных системах как средство распараллели-
вания вычислений. Конечно, задача распараллеливания вычислений в рамках
одного приложения может быть решена и традиционными способами.
Во-первых, прикладной программист может взять на себя сложную зада-
чу организации параллелизма, выделив в приложении некоторую подпрограм-
му - диспетчер, которая периодически передает управление той или иной ветви
вычислений. При этом программа получается логически весьма запутанной, с
многочисленными передачами управления, что существенно затрудняет ее от-
ладку и модификацию.
Во-вторых, решением является создание для одного приложения не-
скольких процессов для каждой из параллельных работ. Однако использование
для создания процессов стандартных средств ОС не позволяет учесть тот факт,
что эти процессы решают единую задачу, а значит, имеют много общего между
собой – они могут работать с одними и теми же данными, использовать один и
тот же кодовый сегмент, наделяться одними и теми же правами доступа к ре-
сурсам вычислительной системы. Так, если в примере с сервером баз данных
создавать отдельные процессы для каждого запроса, поступающего из сети, то
все процессы будут выполнять один и тот же программный код и выполнять
поиск в записях, общих для всех процессов файлов данных. А операционная
система при таком подходе будет рассматривать эти процессы наравне со всеми
остальными процессами и с помощью универсальных механизмов обеспечивать
их изоляцию друг от друга. В данном случае все эти достаточно громоздкие
механизмы используются явно не по назначению, выполняя не только беспо-
лезную, но и вредную работу, затрудняющую обмен данными между различ-
ными частями приложения. Кроме того, на создание каждого процесса ОС тра-
тит определенные системные ресурсы, которые в данном случае неоправданно
дублируются – каждому процессу выделяются собственное виртуальное адрес-
ное пространство, физическая память, закрепляются устройства ввода-вывода и
т. п.
Из всего вышеизложенного, следует, что в операционной системе наряду
с процессами нужен другой механизм распараллеливания вычислений, который
учитывал бы тесные связи между отдельными ветвями вычислений одного и
того же приложения. Для этих целей современные ОС предлагают механизм
многопоточной обработки (multithreading). При этом вводится новая единица
работы – поток выполнения, а понятие «процесс» в значительной степени ме-
няет смысл. Понятию «поток» соответствует последовательный переход про-
цессора от одной команды программы к другой. ОС распределяет процессорное
время между потоками. Процессу ОС назначает адресное пространство и набор
ресурсов, которые совместно используются всеми его потоками.
Страницы
- « первая
- ‹ предыдущая
- …
- 51
- 52
- 53
- 54
- 55
- …
- следующая ›
- последняя »